[packages/itstool] fix for crashes proposed upstream; rel 2

atler atler at pld-linux.org
Sat Jun 17 14:21:04 CEST 2023


commit 3818fa4a5876c78b9d68428ec8b4c7afcc75e914
Author: Jan Palus <atler at pld-linux.org>
Date:   Sat Jun 17 14:17:51 2023 +0200

    fix for crashes proposed upstream; rel 2
    
    from: https://github.com/itstool/itstool/pull/47

 fix-untrunslated-nodes.patch | 31 +++++++++++++++++++++++++++++++
 itstool.spec                 |  4 +++-
 2 files changed, 34 insertions(+), 1 deletion(-)
---
diff --git a/itstool.spec b/itstool.spec
index 8330805..614477d 100644
--- a/itstool.spec
+++ b/itstool.spec
@@ -2,12 +2,13 @@ Summary:	ITS-based XML translation tool
 Summary(pl.UTF-8):	Narzędzie do tłumaczenia XML-a oparte na ITS
 Name:		itstool
 Version:	2.0.7
-Release:	1
+Release:	2
 License:	GPL v3+
 Group:		Applications/Text
 Source0:	http://files.itstool.org/itstool/%{name}-%{version}.tar.bz2
 # Source0-md5:	267a3bdc72a2d8abb1b824f2ea32ee9b
 Patch0:		%{name}-fix-crash-wrong-encoding.patch
+Patch1:		fix-untrunslated-nodes.patch
 URL:		http://itstool.org/
 BuildRequires:	python3
 BuildRequires:	python3-libxml2
@@ -30,6 +31,7 @@ komunikaty w pliku PO.
 %prep
 %setup -q
 %patch0 -p1
+%patch1 -p1
 
 %build
 %configure \
diff --git a/fix-untrunslated-nodes.patch b/fix-untrunslated-nodes.patch
new file mode 100644
index 0000000..83a09e8
--- /dev/null
+++ b/fix-untrunslated-nodes.patch
@@ -0,0 +1,31 @@
+From e9b053be5c50c2bd69442a8484a4c9c371bc3a45 Mon Sep 17 00:00:00 2001
+From: Harald van Dijk <harald at gigawatt.nl>
+Date: Thu, 15 Jun 2023 23:18:11 +0100
+Subject: [PATCH] Fix handling of untranslated nodes
+
+If a translation is missing, get_translated returns the node it was
+called with. But ph_node when passed to get_translated is part of
+another document and cannot just be reparented, it needs to be cloned.
+The reparenting leaves things in an inconsistent state where references
+intended to refer to nodes in the original document no longer do so, and
+they may then be accessed from those references after the new document
+has already been freed.
+
+Fixes bug #36.
+---
+ itstool.in | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/itstool.in b/itstool.in
+index c21ad4b..a948828 100755
+--- a/itstool.in
++++ b/itstool.in
+@@ -1096,6 +1096,8 @@ class Document (object):
+                         child.replaceNode(newnode)
+                     else:
+                         repl = self.get_translated(ph_node, translations, strict=strict, lang=lang)
++                        if repl == ph_node:
++                            repl = repl.copyNode(1)
+                         child.replaceNode(repl)
+                 scan_node(child)
+         try:
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/itstool.git/commitdiff/3818fa4a5876c78b9d68428ec8b4c7afcc75e914



More information about the pld-cvs-commit mailing list