nokogiri 1.8.5 → 1.13.6

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of nokogiri might be problematic. Click here for more details.

Files changed (356) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +3 -21
  3. data/LICENSE-DEPENDENCIES.md +1159 -868
  4. data/LICENSE.md +5 -28
  5. data/README.md +196 -90
  6. data/bin/nokogiri +63 -50
  7. data/dependencies.yml +13 -59
  8. data/ext/nokogiri/depend +38 -358
  9. data/ext/nokogiri/extconf.rb +750 -420
  10. data/ext/nokogiri/gumbo.c +584 -0
  11. data/ext/nokogiri/html4_document.c +166 -0
  12. data/ext/nokogiri/html4_element_description.c +294 -0
  13. data/ext/nokogiri/html4_entity_lookup.c +37 -0
  14. data/ext/nokogiri/html4_sax_parser_context.c +119 -0
  15. data/ext/nokogiri/html4_sax_push_parser.c +95 -0
  16. data/ext/nokogiri/libxml2_backwards_compat.c +121 -0
  17. data/ext/nokogiri/nokogiri.c +228 -91
  18. data/ext/nokogiri/nokogiri.h +191 -89
  19. data/ext/nokogiri/test_global_handlers.c +40 -0
  20. data/ext/nokogiri/xml_attr.c +41 -36
  21. data/ext/nokogiri/xml_attribute_decl.c +18 -18
  22. data/ext/nokogiri/xml_cdata.c +13 -18
  23. data/ext/nokogiri/xml_comment.c +19 -26
  24. data/ext/nokogiri/xml_document.c +291 -216
  25. data/ext/nokogiri/xml_document_fragment.c +12 -16
  26. data/ext/nokogiri/xml_dtd.c +56 -50
  27. data/ext/nokogiri/xml_element_content.c +31 -26
  28. data/ext/nokogiri/xml_element_decl.c +22 -22
  29. data/ext/nokogiri/xml_encoding_handler.c +43 -18
  30. data/ext/nokogiri/xml_entity_decl.c +32 -30
  31. data/ext/nokogiri/xml_entity_reference.c +16 -18
  32. data/ext/nokogiri/xml_namespace.c +61 -52
  33. data/ext/nokogiri/xml_node.c +1044 -616
  34. data/ext/nokogiri/xml_node_set.c +174 -162
  35. data/ext/nokogiri/xml_processing_instruction.c +17 -19
  36. data/ext/nokogiri/xml_reader.c +226 -175
  37. data/ext/nokogiri/xml_relax_ng.c +52 -28
  38. data/ext/nokogiri/xml_sax_parser.c +112 -112
  39. data/ext/nokogiri/xml_sax_parser_context.c +112 -86
  40. data/ext/nokogiri/xml_sax_push_parser.c +36 -27
  41. data/ext/nokogiri/xml_schema.c +112 -33
  42. data/ext/nokogiri/xml_syntax_error.c +42 -21
  43. data/ext/nokogiri/xml_text.c +13 -17
  44. data/ext/nokogiri/xml_xpath_context.c +223 -115
  45. data/ext/nokogiri/xslt_stylesheet.c +265 -173
  46. data/gumbo-parser/CHANGES.md +63 -0
  47. data/gumbo-parser/Makefile +101 -0
  48. data/gumbo-parser/THANKS +27 -0
  49. data/gumbo-parser/src/Makefile +34 -0
  50. data/gumbo-parser/src/README.md +41 -0
  51. data/gumbo-parser/src/ascii.c +75 -0
  52. data/gumbo-parser/src/ascii.h +115 -0
  53. data/gumbo-parser/src/attribute.c +42 -0
  54. data/gumbo-parser/src/attribute.h +17 -0
  55. data/gumbo-parser/src/char_ref.c +22225 -0
  56. data/gumbo-parser/src/char_ref.h +29 -0
  57. data/gumbo-parser/src/char_ref.rl +2154 -0
  58. data/gumbo-parser/src/error.c +626 -0
  59. data/gumbo-parser/src/error.h +148 -0
  60. data/gumbo-parser/src/foreign_attrs.c +104 -0
  61. data/gumbo-parser/src/foreign_attrs.gperf +27 -0
  62. data/gumbo-parser/src/gumbo.h +943 -0
  63. data/gumbo-parser/src/insertion_mode.h +33 -0
  64. data/gumbo-parser/src/macros.h +91 -0
  65. data/gumbo-parser/src/parser.c +4875 -0
  66. data/gumbo-parser/src/parser.h +41 -0
  67. data/gumbo-parser/src/replacement.h +33 -0
  68. data/gumbo-parser/src/string_buffer.c +103 -0
  69. data/gumbo-parser/src/string_buffer.h +68 -0
  70. data/gumbo-parser/src/string_piece.c +48 -0
  71. data/gumbo-parser/src/svg_attrs.c +174 -0
  72. data/gumbo-parser/src/svg_attrs.gperf +77 -0
  73. data/gumbo-parser/src/svg_tags.c +137 -0
  74. data/gumbo-parser/src/svg_tags.gperf +55 -0
  75. data/gumbo-parser/src/tag.c +222 -0
  76. data/gumbo-parser/src/tag_lookup.c +382 -0
  77. data/gumbo-parser/src/tag_lookup.gperf +169 -0
  78. data/gumbo-parser/src/tag_lookup.h +13 -0
  79. data/gumbo-parser/src/token_buffer.c +79 -0
  80. data/gumbo-parser/src/token_buffer.h +71 -0
  81. data/gumbo-parser/src/token_type.h +17 -0
  82. data/gumbo-parser/src/tokenizer.c +3463 -0
  83. data/gumbo-parser/src/tokenizer.h +112 -0
  84. data/gumbo-parser/src/tokenizer_states.h +339 -0
  85. data/gumbo-parser/src/utf8.c +245 -0
  86. data/gumbo-parser/src/utf8.h +164 -0
  87. data/gumbo-parser/src/util.c +68 -0
  88. data/gumbo-parser/src/util.h +30 -0
  89. data/gumbo-parser/src/vector.c +111 -0
  90. data/gumbo-parser/src/vector.h +45 -0
  91. data/lib/nokogiri/class_resolver.rb +67 -0
  92. data/lib/nokogiri/css/node.rb +10 -8
  93. data/lib/nokogiri/css/parser.rb +397 -377
  94. data/lib/nokogiri/css/parser.y +250 -245
  95. data/lib/nokogiri/css/parser_extras.rb +54 -49
  96. data/lib/nokogiri/css/syntax_error.rb +3 -1
  97. data/lib/nokogiri/css/tokenizer.rb +107 -104
  98. data/lib/nokogiri/css/tokenizer.rex +3 -2
  99. data/lib/nokogiri/css/xpath_visitor.rb +218 -91
  100. data/lib/nokogiri/css.rb +50 -17
  101. data/lib/nokogiri/decorators/slop.rb +9 -7
  102. data/lib/nokogiri/extension.rb +31 -0
  103. data/lib/nokogiri/gumbo.rb +15 -0
  104. data/lib/nokogiri/html.rb +38 -27
  105. data/lib/nokogiri/{html → html4}/builder.rb +4 -2
  106. data/lib/nokogiri/{html → html4}/document.rb +103 -105
  107. data/lib/nokogiri/html4/document_fragment.rb +54 -0
  108. data/lib/nokogiri/{html → html4}/element_description.rb +3 -1
  109. data/lib/nokogiri/html4/element_description_defaults.rb +578 -0
  110. data/lib/nokogiri/{html → html4}/entity_lookup.rb +4 -2
  111. data/lib/nokogiri/{html → html4}/sax/parser.rb +17 -16
  112. data/lib/nokogiri/html4/sax/parser_context.rb +20 -0
  113. data/lib/nokogiri/{html → html4}/sax/push_parser.rb +12 -11
  114. data/lib/nokogiri/html4.rb +46 -0
  115. data/lib/nokogiri/html5/document.rb +91 -0
  116. data/lib/nokogiri/html5/document_fragment.rb +83 -0
  117. data/lib/nokogiri/html5/node.rb +100 -0
  118. data/lib/nokogiri/html5.rb +478 -0
  119. data/lib/nokogiri/jruby/dependencies.rb +21 -0
  120. data/lib/nokogiri/syntax_error.rb +2 -0
  121. data/lib/nokogiri/version/constant.rb +6 -0
  122. data/lib/nokogiri/version/info.rb +222 -0
  123. data/lib/nokogiri/version.rb +3 -108
  124. data/lib/nokogiri/xml/attr.rb +6 -3
  125. data/lib/nokogiri/xml/attribute_decl.rb +3 -1
  126. data/lib/nokogiri/xml/builder.rb +97 -53
  127. data/lib/nokogiri/xml/cdata.rb +3 -1
  128. data/lib/nokogiri/xml/character_data.rb +2 -0
  129. data/lib/nokogiri/xml/document.rb +224 -86
  130. data/lib/nokogiri/xml/document_fragment.rb +57 -44
  131. data/lib/nokogiri/xml/dtd.rb +4 -2
  132. data/lib/nokogiri/xml/element_content.rb +2 -0
  133. data/lib/nokogiri/xml/element_decl.rb +3 -1
  134. data/lib/nokogiri/xml/entity_decl.rb +4 -2
  135. data/lib/nokogiri/xml/entity_reference.rb +2 -0
  136. data/lib/nokogiri/xml/namespace.rb +3 -0
  137. data/lib/nokogiri/xml/node/save_options.rb +10 -5
  138. data/lib/nokogiri/xml/node.rb +895 -377
  139. data/lib/nokogiri/xml/node_set.rb +92 -65
  140. data/lib/nokogiri/xml/notation.rb +13 -0
  141. data/lib/nokogiri/xml/parse_options.rb +22 -8
  142. data/lib/nokogiri/xml/pp/character_data.rb +9 -6
  143. data/lib/nokogiri/xml/pp/node.rb +25 -26
  144. data/lib/nokogiri/xml/pp.rb +4 -2
  145. data/lib/nokogiri/xml/processing_instruction.rb +3 -1
  146. data/lib/nokogiri/xml/reader.rb +23 -28
  147. data/lib/nokogiri/xml/relax_ng.rb +8 -2
  148. data/lib/nokogiri/xml/sax/document.rb +45 -49
  149. data/lib/nokogiri/xml/sax/parser.rb +38 -34
  150. data/lib/nokogiri/xml/sax/parser_context.rb +8 -3
  151. data/lib/nokogiri/xml/sax/push_parser.rb +6 -5
  152. data/lib/nokogiri/xml/sax.rb +6 -4
  153. data/lib/nokogiri/xml/schema.rb +19 -9
  154. data/lib/nokogiri/xml/searchable.rb +112 -72
  155. data/lib/nokogiri/xml/syntax_error.rb +6 -4
  156. data/lib/nokogiri/xml/text.rb +2 -0
  157. data/lib/nokogiri/xml/xpath/syntax_error.rb +4 -2
  158. data/lib/nokogiri/xml/xpath.rb +15 -4
  159. data/lib/nokogiri/xml/xpath_context.rb +3 -3
  160. data/lib/nokogiri/xml.rb +38 -37
  161. data/lib/nokogiri/xslt/stylesheet.rb +3 -1
  162. data/lib/nokogiri/xslt.rb +29 -20
  163. data/lib/nokogiri.rb +49 -65
  164. data/lib/xsd/xmlparser/nokogiri.rb +26 -24
  165. data/patches/libxml2/0001-Remove-script-macro-support.patch +40 -0
  166. data/patches/libxml2/0002-Update-entities-to-remove-handling-of-ssi.patch +44 -0
  167. data/patches/libxml2/0003-libxml2.la-is-in-top_builddir.patch +25 -0
  168. data/patches/libxml2/0004-use-glibc-strlen.patch +53 -0
  169. data/patches/libxml2/0005-avoid-isnan-isinf.patch +81 -0
  170. data/patches/libxml2/0006-update-automake-files-for-arm64.patch +3040 -0
  171. data/patches/libxml2/0008-htmlParseComment-handle-abruptly-closed-comments.patch +61 -0
  172. data/patches/libxml2/0009-allow-wildcard-namespaces.patch +77 -0
  173. data/patches/libxslt/0001-update-automake-files-for-arm64.patch +3037 -0
  174. data/ports/archives/libxml2-2.9.14.tar.xz +0 -0
  175. data/ports/archives/libxslt-1.1.35.tar.xz +0 -0
  176. metadata +220 -266
  177. data/.autotest +0 -22
  178. data/.cross_rubies +0 -8
  179. data/.editorconfig +0 -17
  180. data/.gemtest +0 -0
  181. data/.travis.yml +0 -63
  182. data/CHANGELOG.md +0 -1368
  183. data/CONTRIBUTING.md +0 -42
  184. data/C_CODING_STYLE.rdoc +0 -33
  185. data/Gemfile-libxml-ruby +0 -3
  186. data/Manifest.txt +0 -370
  187. data/ROADMAP.md +0 -111
  188. data/Rakefile +0 -348
  189. data/SECURITY.md +0 -19
  190. data/STANDARD_RESPONSES.md +0 -47
  191. data/Y_U_NO_GEMSPEC.md +0 -155
  192. data/appveyor.yml +0 -29
  193. data/build_all +0 -44
  194. data/ext/nokogiri/html_document.c +0 -170
  195. data/ext/nokogiri/html_document.h +0 -10
  196. data/ext/nokogiri/html_element_description.c +0 -279
  197. data/ext/nokogiri/html_element_description.h +0 -10
  198. data/ext/nokogiri/html_entity_lookup.c +0 -32
  199. data/ext/nokogiri/html_entity_lookup.h +0 -8
  200. data/ext/nokogiri/html_sax_parser_context.c +0 -116
  201. data/ext/nokogiri/html_sax_parser_context.h +0 -11
  202. data/ext/nokogiri/html_sax_push_parser.c +0 -87
  203. data/ext/nokogiri/html_sax_push_parser.h +0 -9
  204. data/ext/nokogiri/xml_attr.h +0 -9
  205. data/ext/nokogiri/xml_attribute_decl.h +0 -9
  206. data/ext/nokogiri/xml_cdata.h +0 -9
  207. data/ext/nokogiri/xml_comment.h +0 -9
  208. data/ext/nokogiri/xml_document.h +0 -23
  209. data/ext/nokogiri/xml_document_fragment.h +0 -10
  210. data/ext/nokogiri/xml_dtd.h +0 -10
  211. data/ext/nokogiri/xml_element_content.h +0 -10
  212. data/ext/nokogiri/xml_element_decl.h +0 -9
  213. data/ext/nokogiri/xml_encoding_handler.h +0 -8
  214. data/ext/nokogiri/xml_entity_decl.h +0 -10
  215. data/ext/nokogiri/xml_entity_reference.h +0 -9
  216. data/ext/nokogiri/xml_io.c +0 -61
  217. data/ext/nokogiri/xml_io.h +0 -11
  218. data/ext/nokogiri/xml_libxml2_hacks.c +0 -112
  219. data/ext/nokogiri/xml_libxml2_hacks.h +0 -12
  220. data/ext/nokogiri/xml_namespace.h +0 -15
  221. data/ext/nokogiri/xml_node.h +0 -13
  222. data/ext/nokogiri/xml_node_set.h +0 -12
  223. data/ext/nokogiri/xml_processing_instruction.h +0 -9
  224. data/ext/nokogiri/xml_reader.h +0 -10
  225. data/ext/nokogiri/xml_relax_ng.h +0 -9
  226. data/ext/nokogiri/xml_sax_parser.h +0 -39
  227. data/ext/nokogiri/xml_sax_parser_context.h +0 -10
  228. data/ext/nokogiri/xml_sax_push_parser.h +0 -9
  229. data/ext/nokogiri/xml_schema.h +0 -9
  230. data/ext/nokogiri/xml_syntax_error.h +0 -13
  231. data/ext/nokogiri/xml_text.h +0 -9
  232. data/ext/nokogiri/xml_xpath_context.h +0 -10
  233. data/ext/nokogiri/xslt_stylesheet.h +0 -14
  234. data/lib/nokogiri/html/document_fragment.rb +0 -49
  235. data/lib/nokogiri/html/element_description_defaults.rb +0 -671
  236. data/lib/nokogiri/html/sax/parser_context.rb +0 -16
  237. data/patches/libxml2/0001-Revert-Do-not-URI-escape-in-server-side-includes.patch +0 -78
  238. data/patches/libxml2/0002-Fix-nullptr-deref-with-XPath-logic-ops.patch +0 -54
  239. data/patches/libxml2/0003-Fix-infinite-loop-in-LZMA-decompression.patch +0 -50
  240. data/patches/sort-patches-by-date +0 -25
  241. data/ports/archives/libxml2-2.9.8.tar.gz +0 -0
  242. data/ports/archives/libxslt-1.1.32.tar.gz +0 -0
  243. data/suppressions/README.txt +0 -1
  244. data/suppressions/nokogiri_ruby-2.supp +0 -10
  245. data/tasks/test.rb +0 -100
  246. data/test/css/test_nthiness.rb +0 -226
  247. data/test/css/test_parser.rb +0 -386
  248. data/test/css/test_tokenizer.rb +0 -215
  249. data/test/css/test_xpath_visitor.rb +0 -96
  250. data/test/decorators/test_slop.rb +0 -23
  251. data/test/files/2ch.html +0 -108
  252. data/test/files/GH_1042.html +0 -18
  253. data/test/files/address_book.rlx +0 -12
  254. data/test/files/address_book.xml +0 -10
  255. data/test/files/atom.xml +0 -344
  256. data/test/files/bar/bar.xsd +0 -4
  257. data/test/files/bogus.xml +0 -0
  258. data/test/files/dont_hurt_em_why.xml +0 -422
  259. data/test/files/encoding.html +0 -82
  260. data/test/files/encoding.xhtml +0 -84
  261. data/test/files/exslt.xml +0 -8
  262. data/test/files/exslt.xslt +0 -35
  263. data/test/files/foo/foo.xsd +0 -4
  264. data/test/files/metacharset.html +0 -10
  265. data/test/files/namespace_pressure_test.xml +0 -1684
  266. data/test/files/noencoding.html +0 -47
  267. data/test/files/po.xml +0 -32
  268. data/test/files/po.xsd +0 -66
  269. data/test/files/saml/saml20assertion_schema.xsd +0 -283
  270. data/test/files/saml/saml20protocol_schema.xsd +0 -302
  271. data/test/files/saml/xenc_schema.xsd +0 -146
  272. data/test/files/saml/xmldsig_schema.xsd +0 -318
  273. data/test/files/shift_jis.html +0 -10
  274. data/test/files/shift_jis.xml +0 -5
  275. data/test/files/shift_jis_no_charset.html +0 -9
  276. data/test/files/slow-xpath.xml +0 -25509
  277. data/test/files/snuggles.xml +0 -3
  278. data/test/files/staff.dtd +0 -10
  279. data/test/files/staff.xml +0 -59
  280. data/test/files/staff.xslt +0 -32
  281. data/test/files/test_document_url/bar.xml +0 -2
  282. data/test/files/test_document_url/document.dtd +0 -4
  283. data/test/files/test_document_url/document.xml +0 -6
  284. data/test/files/tlm.html +0 -851
  285. data/test/files/to_be_xincluded.xml +0 -2
  286. data/test/files/valid_bar.xml +0 -2
  287. data/test/files/xinclude.xml +0 -4
  288. data/test/helper.rb +0 -271
  289. data/test/html/sax/test_parser.rb +0 -168
  290. data/test/html/sax/test_parser_context.rb +0 -46
  291. data/test/html/sax/test_parser_text.rb +0 -163
  292. data/test/html/sax/test_push_parser.rb +0 -87
  293. data/test/html/test_attributes.rb +0 -85
  294. data/test/html/test_builder.rb +0 -164
  295. data/test/html/test_document.rb +0 -712
  296. data/test/html/test_document_encoding.rb +0 -143
  297. data/test/html/test_document_fragment.rb +0 -310
  298. data/test/html/test_element_description.rb +0 -105
  299. data/test/html/test_named_characters.rb +0 -14
  300. data/test/html/test_node.rb +0 -212
  301. data/test/html/test_node_encoding.rb +0 -91
  302. data/test/namespaces/test_additional_namespaces_in_builder_doc.rb +0 -14
  303. data/test/namespaces/test_namespaces_aliased_default.rb +0 -24
  304. data/test/namespaces/test_namespaces_in_builder_doc.rb +0 -75
  305. data/test/namespaces/test_namespaces_in_cloned_doc.rb +0 -31
  306. data/test/namespaces/test_namespaces_in_created_doc.rb +0 -75
  307. data/test/namespaces/test_namespaces_in_parsed_doc.rb +0 -80
  308. data/test/namespaces/test_namespaces_preservation.rb +0 -31
  309. data/test/test_convert_xpath.rb +0 -135
  310. data/test/test_css_cache.rb +0 -47
  311. data/test/test_encoding_handler.rb +0 -48
  312. data/test/test_memory_leak.rb +0 -156
  313. data/test/test_nokogiri.rb +0 -138
  314. data/test/test_soap4r_sax.rb +0 -52
  315. data/test/test_xslt_transforms.rb +0 -314
  316. data/test/xml/node/test_save_options.rb +0 -28
  317. data/test/xml/node/test_subclass.rb +0 -44
  318. data/test/xml/sax/test_parser.rb +0 -402
  319. data/test/xml/sax/test_parser_context.rb +0 -115
  320. data/test/xml/sax/test_parser_text.rb +0 -202
  321. data/test/xml/sax/test_push_parser.rb +0 -265
  322. data/test/xml/test_attr.rb +0 -74
  323. data/test/xml/test_attribute_decl.rb +0 -86
  324. data/test/xml/test_builder.rb +0 -341
  325. data/test/xml/test_c14n.rb +0 -180
  326. data/test/xml/test_cdata.rb +0 -54
  327. data/test/xml/test_comment.rb +0 -40
  328. data/test/xml/test_document.rb +0 -982
  329. data/test/xml/test_document_encoding.rb +0 -31
  330. data/test/xml/test_document_fragment.rb +0 -298
  331. data/test/xml/test_dtd.rb +0 -187
  332. data/test/xml/test_dtd_encoding.rb +0 -31
  333. data/test/xml/test_element_content.rb +0 -56
  334. data/test/xml/test_element_decl.rb +0 -73
  335. data/test/xml/test_entity_decl.rb +0 -122
  336. data/test/xml/test_entity_reference.rb +0 -262
  337. data/test/xml/test_namespace.rb +0 -96
  338. data/test/xml/test_node.rb +0 -1325
  339. data/test/xml/test_node_attributes.rb +0 -115
  340. data/test/xml/test_node_encoding.rb +0 -75
  341. data/test/xml/test_node_inheritance.rb +0 -32
  342. data/test/xml/test_node_reparenting.rb +0 -592
  343. data/test/xml/test_node_set.rb +0 -809
  344. data/test/xml/test_parse_options.rb +0 -64
  345. data/test/xml/test_processing_instruction.rb +0 -30
  346. data/test/xml/test_reader.rb +0 -620
  347. data/test/xml/test_reader_encoding.rb +0 -134
  348. data/test/xml/test_relax_ng.rb +0 -60
  349. data/test/xml/test_schema.rb +0 -142
  350. data/test/xml/test_syntax_error.rb +0 -36
  351. data/test/xml/test_text.rb +0 -60
  352. data/test/xml/test_unparented_node.rb +0 -483
  353. data/test/xml/test_xinclude.rb +0 -83
  354. data/test/xml/test_xpath.rb +0 -470
  355. data/test/xslt/test_custom_functions.rb +0 -133
  356. data/test/xslt/test_exception_handling.rb +0 -37
@@ -1,78 +0,0 @@
1
- From c5538465c08a8ea248a370bf55bc39cd3385e4af Mon Sep 17 00:00:00 2001
2
- From: Mike Dalessio <mike.dalessio@gmail.com>
3
- Date: Thu, 29 Mar 2018 14:09:00 -0400
4
- Subject: [PATCH] Revert "Do not URI escape in server side includes"
5
-
6
- This reverts commit 960f0e275616cadc29671a218d7fb9b69eb35588.
7
- ---
8
- HTMLtree.c | 49 +++++++++++--------------------------------------
9
- 1 file changed, 11 insertions(+), 38 deletions(-)
10
-
11
- diff --git a/HTMLtree.c b/HTMLtree.c
12
- index 2fd0c9c..67160c5 100644
13
- --- a/HTMLtree.c
14
- +++ b/HTMLtree.c
15
- @@ -717,49 +717,22 @@ htmlAttrDumpOutput(xmlOutputBufferPtr buf, xmlDocPtr doc, xmlAttrPtr cur,
16
- (!xmlStrcasecmp(cur->name, BAD_CAST "src")) ||
17
- ((!xmlStrcasecmp(cur->name, BAD_CAST "name")) &&
18
- (!xmlStrcasecmp(cur->parent->name, BAD_CAST "a"))))) {
19
- + xmlChar *escaped;
20
- xmlChar *tmp = value;
21
- - /* xmlURIEscapeStr() escapes '"' so it can be safely used. */
22
- - xmlBufCCat(buf->buffer, "\"");
23
-
24
- while (IS_BLANK_CH(*tmp)) tmp++;
25
-
26
- - /* URI Escape everything, except server side includes. */
27
- - for ( ; ; ) {
28
- - xmlChar *escaped;
29
- - xmlChar endChar;
30
- - xmlChar *end = NULL;
31
- - xmlChar *start = (xmlChar *)xmlStrstr(tmp, BAD_CAST "<!--");
32
- - if (start != NULL) {
33
- - end = (xmlChar *)xmlStrstr(tmp, BAD_CAST "-->");
34
- - if (end != NULL) {
35
- - *start = '\0';
36
- - }
37
- - }
38
- -
39
- - /* Escape the whole string, or until start (set to '\0'). */
40
- - escaped = xmlURIEscapeStr(tmp, BAD_CAST"@/:=?;#%&,+");
41
- - if (escaped != NULL) {
42
- - xmlBufCat(buf->buffer, escaped);
43
- - xmlFree(escaped);
44
- - } else {
45
- - xmlBufCat(buf->buffer, tmp);
46
- - }
47
- -
48
- - if (end == NULL) { /* Everything has been written. */
49
- - break;
50
- - }
51
- -
52
- - /* Do not escape anything within server side includes. */
53
- - *start = '<'; /* Restore the first character of "<!--". */
54
- - end += 3; /* strlen("-->") */
55
- - endChar = *end;
56
- - *end = '\0';
57
- - xmlBufCat(buf->buffer, start);
58
- - *end = endChar;
59
- - tmp = end;
60
- + /*
61
- + * the < and > have already been escaped at the entity level
62
- + * And doing so here breaks server side includes
63
- + */
64
- + escaped = xmlURIEscapeStr(tmp, BAD_CAST"@/:=?;#%&,+<>");
65
- + if (escaped != NULL) {
66
- + xmlBufWriteQuotedString(buf->buffer, escaped);
67
- + xmlFree(escaped);
68
- + } else {
69
- + xmlBufWriteQuotedString(buf->buffer, value);
70
- }
71
- -
72
- - xmlBufCCat(buf->buffer, "\"");
73
- } else {
74
- xmlBufWriteQuotedString(buf->buffer, value);
75
- }
76
- --
77
- 2.9.5
78
-
@@ -1,54 +0,0 @@
1
- From a436374994c47b12d5de1b8b1d191a098fa23594 Mon Sep 17 00:00:00 2001
2
- From: Nick Wellnhofer <wellnhofer@aevum.de>
3
- Date: Mon, 30 Jul 2018 12:54:38 +0200
4
- Subject: [PATCH] Fix nullptr deref with XPath logic ops
5
-
6
- If the XPath stack is corrupted, for example by a misbehaving extension
7
- function, the "and" and "or" XPath operators could dereference NULL
8
- pointers. Check that the XPath stack isn't empty and optimize the
9
- logic operators slightly.
10
-
11
- Closes: https://gitlab.gnome.org/GNOME/libxml2/issues/5
12
-
13
- Also see
14
- https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=901817
15
- https://bugzilla.redhat.com/show_bug.cgi?id=1595985
16
-
17
- This is CVE-2018-14404.
18
-
19
- Thanks to Guy Inbar for the report.
20
- ---
21
- xpath.c | 10 ++++------
22
- 1 file changed, 4 insertions(+), 6 deletions(-)
23
-
24
- diff --git a/xpath.c b/xpath.c
25
- index 3fae0bf..5e3bb9f 100644
26
- --- a/xpath.c
27
- +++ b/xpath.c
28
- @@ -13234,9 +13234,8 @@ xmlXPathCompOpEval(xmlXPathParserContextPtr ctxt, xmlXPathStepOpPtr op)
29
- return(0);
30
- }
31
- xmlXPathBooleanFunction(ctxt, 1);
32
- - arg1 = valuePop(ctxt);
33
- - arg1->boolval &= arg2->boolval;
34
- - valuePush(ctxt, arg1);
35
- + if (ctxt->value != NULL)
36
- + ctxt->value->boolval &= arg2->boolval;
37
- xmlXPathReleaseObject(ctxt->context, arg2);
38
- return (total);
39
- case XPATH_OP_OR:
40
- @@ -13252,9 +13251,8 @@ xmlXPathCompOpEval(xmlXPathParserContextPtr ctxt, xmlXPathStepOpPtr op)
41
- return(0);
42
- }
43
- xmlXPathBooleanFunction(ctxt, 1);
44
- - arg1 = valuePop(ctxt);
45
- - arg1->boolval |= arg2->boolval;
46
- - valuePush(ctxt, arg1);
47
- + if (ctxt->value != NULL)
48
- + ctxt->value->boolval |= arg2->boolval;
49
- xmlXPathReleaseObject(ctxt->context, arg2);
50
- return (total);
51
- case XPATH_OP_EQUAL:
52
- --
53
- 2.17.1
54
-
@@ -1,50 +0,0 @@
1
- From 2240fbf5912054af025fb6e01e26375100275e74 Mon Sep 17 00:00:00 2001
2
- From: Nick Wellnhofer <wellnhofer@aevum.de>
3
- Date: Mon, 30 Jul 2018 13:14:11 +0200
4
- Subject: [PATCH] Fix infinite loop in LZMA decompression
5
- MIME-Version: 1.0
6
- Content-Type: text/plain; charset=UTF-8
7
- Content-Transfer-Encoding: 8bit
8
-
9
- Check the liblzma error code more thoroughly to avoid infinite loops.
10
-
11
- Closes: https://gitlab.gnome.org/GNOME/libxml2/issues/13
12
- Closes: https://bugzilla.gnome.org/show_bug.cgi?id=794914
13
-
14
- This is CVE-2018-9251 and CVE-2018-14567.
15
-
16
- Thanks to Dongliang Mu and Simon Wörner for the reports.
17
- ---
18
- xzlib.c | 9 +++++++++
19
- 1 file changed, 9 insertions(+)
20
-
21
- diff --git a/xzlib.c b/xzlib.c
22
- index a839169..0ba88cf 100644
23
- --- a/xzlib.c
24
- +++ b/xzlib.c
25
- @@ -562,6 +562,10 @@ xz_decomp(xz_statep state)
26
- "internal error: inflate stream corrupt");
27
- return -1;
28
- }
29
- + /*
30
- + * FIXME: Remapping a couple of error codes and falling through
31
- + * to the LZMA error handling looks fragile.
32
- + */
33
- if (ret == Z_MEM_ERROR)
34
- ret = LZMA_MEM_ERROR;
35
- if (ret == Z_DATA_ERROR)
36
- @@ -587,6 +591,11 @@ xz_decomp(xz_statep state)
37
- xz_error(state, LZMA_PROG_ERROR, "compression error");
38
- return -1;
39
- }
40
- + if ((state->how != GZIP) &&
41
- + (ret != LZMA_OK) && (ret != LZMA_STREAM_END)) {
42
- + xz_error(state, ret, "lzma error");
43
- + return -1;
44
- + }
45
- } while (strm->avail_out && ret != LZMA_STREAM_END);
46
-
47
- /* update available output and crc check value */
48
- --
49
- 2.17.1
50
-
@@ -1,25 +0,0 @@
1
- #! /usr/bin/env ruby
2
-
3
- require "date"
4
-
5
- dir = ARGV[0] || raise("ERROR: arg1 must be dir")
6
-
7
- Dir.chdir dir
8
-
9
- files_and_times = {}
10
- Dir["*.patch"].sort.each do |filename|
11
- dateline = `cat #{filename} | grep "Date:"`
12
- datestr = dateline.split("Date:").last.strip
13
- time = DateTime.parse datestr
14
- files_and_times[filename] = time
15
- end
16
-
17
- count = 0
18
- files_and_times.sort_by {|k,v| v}.each do |filename, time|
19
- count += 1
20
- _, patch_name = filename.split("-", 2)
21
- new_filename = sprintf("%4.4d-%s", count, patch_name)
22
- printf "mv -f %s %s # %s\n", filename, new_filename, time
23
- end
24
-
25
- STDERR.print "\n**\n** REMEMBER TO UPDATE THE Manifest.txt FILE\n**\n"
Binary file
Binary file
@@ -1 +0,0 @@
1
- This directory contains valgrind suppression files generated by the hoe-debugging gem.
@@ -1,10 +0,0 @@
1
- {
2
- <insert_a_suppression_name_here>
3
- Memcheck:Free
4
- fun:free
5
- fun:__libc_freeres
6
- fun:_vgnU_freeres
7
- fun:__run_exit_handlers
8
- fun:exit
9
- fun:(below main)
10
- }
data/tasks/test.rb DELETED
@@ -1,100 +0,0 @@
1
- namespace :test do
2
- desc "run test suite with aggressive GC"
3
- task :gc => :build do
4
- ENV['NOKOGIRI_GC'] = "true"
5
- Rake::Task["test"].invoke
6
- end
7
-
8
- task :installed do
9
- ENV['RUBY_FLAGS'] = "-w -Itest:."
10
- sh 'rake test'
11
- end
12
-
13
- desc "find call-seq in the rdoc"
14
- task :rdoc_call_seq => 'docs' do
15
- Dir['doc/**/*.html'].each { |docfile|
16
- next if docfile =~ /\.src/
17
- puts "FAIL: #{docfile}" if File.read(docfile) =~ /call-seq/
18
- }
19
- end
20
-
21
- desc "find all undocumented things"
22
- task :rdoc => 'docs' do
23
- base = File.expand_path(File.join(File.dirname(__FILE__), '..', 'doc'))
24
- require 'test/unit'
25
- test = Class.new(Test::Unit::TestCase)
26
- Dir["#{base}/**/*.html"].each { |docfile|
27
- test.class_eval(<<-eotest)
28
- def test_#{docfile.sub("#{base}/", '').gsub(/[\/\.-]/, '_')}
29
- assert_no_match(
30
- /Not documented/,
31
- File.read('#{docfile}'),
32
- '#{docfile} has undocumented things'
33
- )
34
- end
35
- eotest
36
- }
37
- end
38
-
39
- desc "Test against multiple versions of libxml2 (MULTIXML2_DIR=directory)"
40
- task :multixml2 do
41
- MULTI_XML = File.join(ENV['HOME'], '.multixml2')
42
- unless File.exists?(MULTI_XML)
43
- %w{ versions install build }.each { |x|
44
- FileUtils.mkdir_p(File.join(MULTI_XML, x))
45
- }
46
- Dir.chdir File.join(MULTI_XML, 'versions') do
47
- require 'net/ftp'
48
- puts "Contacting xmlsoft.org ..."
49
- ftp = Net::FTP.new('xmlsoft.org')
50
- ftp.login('anonymous', 'anonymous')
51
- ftp.chdir('libxml2')
52
- ftp.list('libxml2-2.*.tar.gz').each do |x|
53
- file = x[/[^\s]*$/]
54
- puts "Downloading #{file}"
55
- ftp.getbinaryfile(file)
56
- end
57
- end
58
- end
59
-
60
- # Build any libxml2 versions in $HOME/.multixml2/versions that
61
- # haven't been built yet
62
- Dir[File.join(MULTI_XML, 'versions','*.tar.gz')].each do |f|
63
- filename = File.basename(f, '.tar.gz')
64
-
65
- install_dir = File.join(MULTI_XML, 'install', filename)
66
- next if File.exists?(install_dir)
67
-
68
- Dir.chdir File.join(MULTI_XML, 'versions') do
69
- system "tar zxvf #{f} -C #{File.join(MULTI_XML, 'build')}"
70
- end
71
-
72
- Dir.chdir File.join(MULTI_XML, 'build', filename) do
73
- system "./configure --without-http --prefix=#{install_dir}"
74
- system "make && make install"
75
- end
76
- end
77
-
78
- test_results = {}
79
- libxslt = Dir[File.join(MULTI_XML, 'install', 'libxslt*')].first
80
-
81
- directories = ENV['MULTIXML2_DIR'] ? [ENV['MULTIXML2_DIR']] : Dir[File.join(MULTI_XML, 'install', '*')]
82
- directories.sort.reverse_each do |xml2_version|
83
- next unless xml2_version =~ /libxml2/
84
- extopts = "--with-xml2-include=#{xml2_version}/include/libxml2 --with-xml2-lib=#{xml2_version}/lib --with-xslt-dir=#{libxslt} --with-iconv-dir=/usr"
85
- cmd = "#{$0} clean test EXTOPTS='#{extopts}' LD_LIBRARY_PATH='#{xml2_version}/lib'"
86
-
87
- version = File.basename(xml2_version)
88
- result = system(cmd)
89
- test_results[version] = {
90
- :result => result,
91
- :cmd => cmd
92
- }
93
- end
94
- test_results.sort_by { |k,v| k }.each do |k,v|
95
- passed = v[:result]
96
- puts "#{k}: #{passed ? 'PASS' : 'FAIL'}"
97
- puts "repro: #{v[:cmd]}" unless passed
98
- end
99
- end
100
- end
@@ -1,226 +0,0 @@
1
- require "helper"
2
-
3
- module Nokogiri
4
- module CSS
5
- class TestNthiness < Nokogiri::TestCase
6
- def setup
7
- super
8
- doc = <<EOF
9
- <html>
10
- <table>
11
- <tr><td>row1 </td></tr>
12
- <tr><td>row2 </td></tr>
13
- <tr><td>row3 </td></tr>
14
- <tr><td>row4 </td></tr>
15
- <tr><td>row5 </td></tr>
16
- <tr><td>row6 </td></tr>
17
- <tr><td>row7 </td></tr>
18
- <tr><td>row8 </td></tr>
19
- <tr><td>row9 </td></tr>
20
- <tr><td>row10 </td></tr>
21
- <tr><td>row11 </td></tr>
22
- <tr><td>row12 </td></tr>
23
- <tr><td>row13 </td></tr>
24
- <tr><td>row14 </td></tr>
25
- </table>
26
- <div>
27
- <b>bold1 </b>
28
- <i>italic1 </i>
29
- <b class="a">bold2 </b>
30
- <em class="a">emphasis1 </em>
31
- <i>italic2 </i>
32
- <p>para1 </p>
33
- <b class="a">bold3 </b>
34
- </div>
35
- <div>
36
- <i class="b">italic3 </i>
37
- <em>emphasis2 </em>
38
- <i class="b">italic4 </i>
39
- <em>emphasis3 </em>
40
- <i class="c">italic5 </i>
41
- <span><i class="b">italic6 </i></span>
42
- <i>italic7 </i>
43
- </div>
44
- <div>
45
- <p>para2 </p>
46
- <p>para3 </p>
47
- </div>
48
- <div>
49
- <p>para4 </p>
50
- </div>
51
-
52
- <div>
53
- <h2></h2>
54
- <h1 class='c'>header1 </h1>
55
- <h2></h2>
56
- </div>
57
- <div>
58
- <h1 class='c'>header2 </h1>
59
- <h1 class='c'>header3 </h1>
60
- </div>
61
- <div>
62
- <h1 class='c'>header4</h1>
63
- </div>
64
-
65
- <p class='empty'></p>
66
- <p class='not-empty'><b></b></p>
67
- </html>
68
- EOF
69
- @parser = Nokogiri.HTML doc
70
- end
71
-
72
-
73
- def test_even
74
- assert_result_rows [2,4,6,8,10,12,14], @parser.search("table//tr:nth(even)")
75
- end
76
-
77
- def test_odd
78
- assert_result_rows [1,3,5,7,9,11,13], @parser.search("table//tr:nth(odd)")
79
- end
80
-
81
- def test_n
82
- assert_result_rows((1..14).to_a, @parser.search("table//tr:nth(n)"))
83
- end
84
-
85
- def test_2n
86
- assert_equal @parser.search("table//tr:nth(even)").inner_text, @parser.search("table//tr:nth(2n)").inner_text
87
- end
88
-
89
- def test_2np1
90
- assert_equal @parser.search("table//tr:nth(odd)").inner_text, @parser.search("table//tr:nth(2n+1)").inner_text
91
- end
92
-
93
- def test_4np3
94
- assert_result_rows [3,7,11], @parser.search("table//tr:nth(4n+3)")
95
- end
96
-
97
- def test_3np4
98
- assert_result_rows [4,7,10,13], @parser.search("table//tr:nth(3n+4)")
99
- end
100
-
101
- def test_mnp3
102
- assert_result_rows [1,2,3], @parser.search("table//tr:nth(-n+3)")
103
- end
104
-
105
- def test_4nm1
106
- assert_result_rows [3,7,11], @parser.search("table//tr:nth(4n-1)")
107
- end
108
-
109
- def test_np3
110
- assert_result_rows [3,4,5,6,7,8,9,10,11,12,13,14], @parser.search("table//tr:nth(n+3)")
111
- end
112
-
113
- def test_first
114
- assert_result_rows [1], @parser.search("table//tr:first")
115
- assert_result_rows [1], @parser.search("table//tr:first()")
116
- end
117
-
118
- def test_last
119
- assert_result_rows [14], @parser.search("table//tr:last")
120
- assert_result_rows [14], @parser.search("table//tr:last()")
121
- end
122
-
123
- def test_first_child
124
- assert_result_rows [1], @parser.search("div/b:first-child"), "bold"
125
- assert_result_rows [1], @parser.search("table//tr:first-child")
126
- assert_result_rows [2,4], @parser.search("div/h1.c:first-child"), "header"
127
- end
128
-
129
- def test_last_child
130
- assert_result_rows [3], @parser.search("div/b:last-child"), "bold"
131
- assert_result_rows [14], @parser.search("table//tr:last-child")
132
- assert_result_rows [3,4], @parser.search("div/h1.c:last-child"), "header"
133
- end
134
-
135
- def test_nth_child
136
- assert_result_rows [2], @parser.search("div/b:nth-child(3)"), "bold"
137
- assert_result_rows [5], @parser.search("table//tr:nth-child(5)")
138
- assert_result_rows [1,3], @parser.search("div/h1.c:nth-child(2)"), "header"
139
- assert_result_rows [3,4], @parser.search("div/i.b:nth-child(2n+1)"), "italic"
140
- end
141
-
142
- def test_first_of_type
143
- assert_result_rows [1], @parser.search("table//tr:first-of-type")
144
- assert_result_rows [1], @parser.search("div/b:first-of-type"), "bold"
145
- assert_result_rows [2], @parser.search("div/b.a:first-of-type"), "bold"
146
- assert_result_rows [3], @parser.search("div/i.b:first-of-type"), "italic"
147
- end
148
-
149
- def test_last_of_type
150
- assert_result_rows [14], @parser.search("table//tr:last-of-type")
151
- assert_result_rows [3], @parser.search("div/b:last-of-type"), "bold"
152
- assert_result_rows [2,7], @parser.search("div/i:last-of-type"), "italic"
153
- assert_result_rows [2,6,7], @parser.search("div i:last-of-type"), "italic"
154
- assert_result_rows [4], @parser.search("div/i.b:last-of-type"), "italic"
155
- end
156
-
157
- def test_nth_of_type
158
- assert_result_rows [1], @parser.search("div/b:nth-of-type(1)"), "bold"
159
- assert_result_rows [2], @parser.search("div/b:nth-of-type(2)"), "bold"
160
- assert_result_rows [2], @parser.search("div/.a:nth-of-type(1)"), "bold"
161
- assert_result_rows [2,4,7], @parser.search("div i:nth-of-type(2n)"), "italic"
162
- assert_result_rows [1,3,5,6], @parser.search("div i:nth-of-type(2n+1)"), "italic"
163
- assert_result_rows [1], @parser.search("div .a:nth-of-type(2n)"), "emphasis"
164
- assert_result_rows [2,3], @parser.search("div .a:nth-of-type(2n+1)"), "bold"
165
- end
166
-
167
- def test_nth_last_of_type
168
- assert_result_rows [14], @parser.search("table//tr:nth-last-of-type(1)")
169
- assert_result_rows [12], @parser.search("table//tr:nth-last-of-type(3)")
170
- assert_result_rows [2,6,7], @parser.search("div i:nth-last-of-type(1)"), "italic"
171
- assert_result_rows [1,5], @parser.search("div i:nth-last-of-type(2)"), "italic"
172
- assert_result_rows [4], @parser.search("div/i.b:nth-last-of-type(1)"), "italic"
173
- assert_result_rows [3], @parser.search("div/i.b:nth-last-of-type(2)"), "italic"
174
- end
175
-
176
- def test_only_of_type
177
- assert_result_rows [1,4], @parser.search("div/p:only-of-type"), "para"
178
- assert_result_rows [5], @parser.search("div/i.c:only-of-type"), "italic"
179
- end
180
-
181
- def test_only_child
182
- assert_result_rows [4], @parser.search("div/p:only-child"), "para"
183
- assert_result_rows [4], @parser.search("div/h1.c:only-child"), "header"
184
- end
185
-
186
- def test_empty
187
- result = @parser.search("p:empty")
188
- assert_equal 1, result.size, "unexpected number of rows returned: '#{result.inner_text}'"
189
- assert_equal 'empty', result.first['class']
190
- end
191
-
192
- def test_parent
193
- result = @parser.search("p:parent")
194
- assert_equal 5, result.size
195
- 0.upto(3) do |j|
196
- assert_equal "para#{j+1} ", result[j].inner_text
197
- end
198
- assert_equal "not-empty", result[4]['class']
199
- end
200
-
201
- def test_siblings
202
- doc = <<-EOF
203
- <html><body><div>
204
- <p id="1">p1 </p>
205
- <p id="2">p2 </p>
206
- <p id="3">p3 </p>
207
- <p id="4">p4 </p>
208
- <p id="5">p5 </p>
209
- EOF
210
- parser = Nokogiri.HTML doc
211
- assert_equal 2, parser.search("#3 ~ p").size
212
- assert_equal "p4 p5 ", parser.search("#3 ~ p").inner_text
213
- assert_equal 0, parser.search("#5 ~ p").size
214
-
215
- assert_equal 1, parser.search("#3 + p").size
216
- assert_equal "p4 ", parser.search("#3 + p").inner_text
217
- assert_equal 0, parser.search("#5 + p").size
218
- end
219
-
220
- def assert_result_rows intarray, result, word="row"
221
- assert_equal intarray.size, result.size, "unexpected number of rows returned: '#{result.inner_text}'"
222
- assert_equal intarray.map{|j| "#{word}#{j}"}.join(' '), result.inner_text.strip, result.inner_text
223
- end
224
- end
225
- end
226
- end