[lfs-patches] r3656 - trunk/itstool

dj at higgs.linuxfromscratch.org dj at higgs.linuxfromscratch.org
Wed Oct 25 18:02:55 PDT 2017


Author: dj
Date: Wed Oct 25 18:02:55 2017
New Revision: 3656

Log:
Add itstool-2.0.4-segfault-1.patch.

Added:
   trunk/itstool/
   trunk/itstool/itstool-2.0.4-segfault-1.patch

Added: trunk/itstool/itstool-2.0.4-segfault-1.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ trunk/itstool/itstool-2.0.4-segfault-1.patch	Wed Oct 25 18:02:55 2017	(r3656)
@@ -0,0 +1,55 @@
+Submitted by:            DJ Lucas (dj_AT_linuxfromscratch_DOT_org)
+Date:                    2017-10-26
+Initial Package Version: 2.0.4
+Upstream Status:         Comitted
+Origin:                  https://github.com/itstool/itstool/commit/9b84c007a73e8275ca45762f1bfa3ab7c3a852e2
+Description:             Fixes memory exhaustion when freeing XML docs.
+
+
+diff -Naur a/itstool.in b/itstool.in
+--- a/itstool.in
++++ a/itstool.in
+@@ -477,6 +477,7 @@ class Document (object):
+         if load_dtd:
+             ctxt.loadSubset(1)
+         if keep_entities:
++            ctxt.loadSubset(1)
+             ctxt.ctxtUseOptions(libxml2.XML_PARSE_DTDLOAD)
+             ctxt.replaceEntities(0)
+         else:
+@@ -1043,6 +1044,7 @@ class Document (object):
+         if self._load_dtd:
+             ctxt.loadSubset(1)
+         if self._keep_entities:
++            ctxt.loadSubset(1)
+             ctxt.ctxtUseOptions(libxml2.XML_PARSE_DTDLOAD)
+             ctxt.replaceEntities(0)
+         else:
+@@ -1069,7 +1071,9 @@ class Document (object):
+                     ph_node = msg.get_placeholder(child.name).node
+                     if self.has_child_elements(ph_node):
+                         self.merge_translations(translations, None, ph_node, strict=strict)
+-                        child.replaceNode(ph_node)
++                        newnode = ph_node.copyNode(1)
++                        newnode.setTreeDoc(self._doc)
++                        child.replaceNode(newnode)
+                     else:
+                         repl = self.get_translated(ph_node, translations, strict=strict, lang=lang)
+                         child.replaceNode(repl)
+@@ -1084,10 +1088,15 @@ class Document (object):
+                     (lang + ' ') if lang is not None else '',
+                     msgstr.encode('utf-8')))
+                 self._xml_err = ''
++                ctxt.doc().freeDoc()
+                 return node
+         retnode = node.copyNode(2)
++        retnode.setTreeDoc(self._doc)
+         for child in xml_child_iter(trnode):
+-            retnode.addChild(child.copyNode(1))
++            newnode = child.copyNode(1)
++            newnode.setTreeDoc(self._doc)
++            retnode.addChild(newnode)
++
+         ctxt.doc().freeDoc()
+         return retnode
+ 


More information about the patches mailing list