Fix memory leaks in SAX1 parser

Found by OSS-Fuzz. I could only reproduce this with the (obsolete)
SAX1 parser.

One leak is caused by duplicate namespaced attribute names and can be
reproduced in memory mode (testcase 4556417027538944):

    $ cat file
    <d xmlns:a="ns" a:x="v" xmlns:b="ns" b:x="v"/>
    $ xmllint --sax1 --memory file

The other is caused by ATTLISTs with a normalized default for "xmlns"
if they're processed after the entity recursion limit was hit
(testcase 5580750034305024).

    $ cat file
    <!DOCTYPE d [
	<!ENTITY a '<d>&a;'>
	<!ATTLIST d xmlns NMTOKEN 't'>
    ]>
    <d>&a;
    $ xmllint --sax1 --valid file

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