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.

  • Participants
  • Parent commits a855cfb

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

File perl-libxml-mm.c

                 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 );

File 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.");