Commits

Shlomi Fish committed 044a3d3

Apply fix for RT #80521.

- Apply proposed fix for https://rt.cpan.org/Ticket/Display.html?id=80521
- "replaceNode() segfaults when copying DTD nodes with ATTLISTs"
- Thanks to GUIDO@cpan.org for the report and to YOREEK for
the patch.

Comments (0)

Files changed (4)

     - Fixed https://rt.cpan.org/Ticket/Display.html?id=83744
         - XPathContext memory leak on registerFunction.
         - Thanks to DGINEV for the report and Yuriy for the patch.
+    - Apply proposed fix for https://rt.cpan.org/Ticket/Display.html?id=80521
+        - "replaceNode() segfaults when copying DTD nodes with ATTLISTs"
+        - Thanks to GUIDO@cpan.org for the report and to YOREEK for
+        the patch.
 
 2.0101          Thu 15 Aug 08:29:15 IDT 2013
     - Fixed https://rt.cpan.org/Ticket/Display.html?id=87089 .
 t/48importing_nodes_IDs_rt_69520.t
 t/48_memleak_rt_83744.t
 t/48_removeChild_crashes_rt_80395.t
+t/48_replaceNode_DTD_nodes_rT_80521.t
 t/49_load_html.t
 t/49callbacks_returning_undef.t
 t/49global_extent.t
                 PmmREFCNT_dec(oldParent);
 
             if ( PmmNODE(nodetofix)->type != XML_ATTRIBUTE_NODE
+                 && PmmNODE(nodetofix)->type != XML_DTD_NODE
                  && PmmNODE(nodetofix)->properties != NULL ) {
                 PmmFixOwnerList( (xmlNodePtr)PmmNODE(nodetofix)->properties,
                                  parent );

t/48_replaceNode_DTD_nodes_rT_80521.t

+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use Test::More tests => 1;
+
+use XML::LibXML;
+
+my $xml = <<'EOF';
+<!DOCTYPE crash [
+<!ATTLIST foo bar CDATA "baz">
+]>
+<crash/>
+EOF
+
+my $src = XML::LibXML->load_xml (string => $xml);
+my $dest = XML::LibXML->load_xml (string => $xml);
+my $src_dtd = $src->firstChild;
+my $dest_dtd = $dest->firstChild;
+$dest_dtd->replaceNode($src_dtd);
+
+# TEST
+ok(1, "Did not crash.");
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.