Fix XPath stack frame logic

Move the calls to xmlXPathSetFrame and xmlXPathPopFrame around in
xmlXPathCompOpEvalPositionalPredicate to make sure that the context
object on the stack is actually protected. Otherwise, memory corruption
can occur when calling sloppily coded XPath extension functions.

Fixes bug 783160.
1 file changed
tree: ea50f73f912835632652cfdbc8b3cfe90c6b4af7
  1. .gitignore
  2. .travis.yml
  3. AUTHORS
  4. ChangeLog
  5. Copyright
  6. DOCBparser.c
  7. HACKING
  8. HTMLparser.c
  9. HTMLtree.c
  10. INSTALL.libxml2
  11. MAINTAINERS
  12. Makefile.am
  13. Makefile.tests
  14. Makefile.win
  15. NEWS
  16. README
  17. README.cvs-commits
  18. README.tests
  19. README.zOS
  20. SAX.c
  21. SAX2.c
  22. TODO
  23. TODO_SCHEMAS
  24. VxWorks/
  25. acinclude.m4
  26. autogen.sh
  27. bakefile/
  28. buf.c
  29. buf.h
  30. build_glob.py
  31. c14n.c
  32. catalog.c
  33. check-relaxng-test-suite.py
  34. check-relaxng-test-suite2.py
  35. check-xinclude-test-suite.py
  36. check-xml-test-suite.py
  37. check-xsddata-test-suite.py
  38. chvalid.c
  39. chvalid.def
  40. configure.ac
  41. dbgen.pl
  42. dbgenattr.pl
  43. debugXML.c
  44. dict.c
  45. doc/
  46. elfgcchack.h
  47. enc.h
  48. encoding.c
  49. entities.c
  50. error.c
  51. example/
  52. genChRanges.py
  53. genUnicode.py
  54. gentest.py
  55. global.data
  56. globals.c
  57. hash.c
  58. include/
  59. legacy.c
  60. libxml-2.0-uninstalled.pc.in
  61. libxml-2.0.pc.in
  62. libxml.3
  63. libxml.h
  64. libxml.m4
  65. libxml.spec.in
  66. libxml2-config.cmake.in
  67. libxml2.doap
  68. libxml2.syms
  69. list.c
  70. macos/
  71. nanoftp.c
  72. nanohttp.c
  73. optim/
  74. os400/
  75. parser.c
  76. parserInternals.c
  77. pattern.c
  78. python/
  79. regressions.py
  80. regressions.xml
  81. relaxng.c
  82. result/
  83. rngparser.c
  84. runsuite.c
  85. runtest.c
  86. runxmlconf.c
  87. save.h
  88. schematron.c
  89. test/
  90. testAutomata.c
  91. testC14N.c
  92. testHTML.c
  93. testModule.c
  94. testOOM.c
  95. testOOMlib.c
  96. testOOMlib.h
  97. testReader.c
  98. testRegexp.c
  99. testRelax.c
  100. testSAX.c
  101. testSchemas.c
  102. testThreads.c
  103. testThreadsWin32.c
  104. testURI.c
  105. testXPath.c
  106. testapi.c
  107. testchar.c
  108. testdict.c
  109. testdso.c
  110. testlimits.c
  111. testrecurse.c
  112. threads.c
  113. timsort.h
  114. tree.c
  115. trio.c
  116. trio.h
  117. triodef.h
  118. trionan.c
  119. trionan.h
  120. triop.h
  121. triostr.c
  122. triostr.h
  123. uri.c
  124. valid.c
  125. vms/
  126. win32/
  127. xinclude.c
  128. xlink.c
  129. xml2-config.1
  130. xml2-config.in
  131. xml2Conf.sh.in
  132. xmlIO.c
  133. xmlcatalog.c
  134. xmllint.c
  135. xmlmemory.c
  136. xmlmodule.c
  137. xmlreader.c
  138. xmlregexp.c
  139. xmlsave.c
  140. xmlschemas.c
  141. xmlschemastypes.c
  142. xmlstring.c
  143. xmlunicode.c
  144. xmlwriter.c
  145. xpath.c
  146. xpointer.c
  147. xstc/
  148. xzlib.c
  149. xzlib.h