summaryrefslogtreecommitdiff
path: root/libre-testing/gettext/gettext-0.19.8-its-segfault.patch
diff options
context:
space:
mode:
Diffstat (limited to 'libre-testing/gettext/gettext-0.19.8-its-segfault.patch')
-rw-r--r--libre-testing/gettext/gettext-0.19.8-its-segfault.patch43
1 files changed, 43 insertions, 0 deletions
diff --git a/libre-testing/gettext/gettext-0.19.8-its-segfault.patch b/libre-testing/gettext/gettext-0.19.8-its-segfault.patch
new file mode 100644
index 000000000..430719f65
--- /dev/null
+++ b/libre-testing/gettext/gettext-0.19.8-its-segfault.patch
@@ -0,0 +1,43 @@
+From a0cab23332a254e3500cac2a3a984472d02180e5 Mon Sep 17 00:00:00 2001
+From: Bruno Haible <bruno@clisp.org>
+Date: Fri, 9 Dec 2016 21:04:31 +0100
+Subject: [PATCH] Fix crash of xgettext with --its option.
+
+* gettext-tools/src/xgettext.c (main): Free contents of its_dirs only when it
+was initialized. Fixes bug introduced on 2016-05-16.
+---
+ gettext-tools/src/xgettext.c | 11 +++++++----
+ 1 file changed, 7 insertions(+), 4 deletions(-)
+
+diff --git a/gettext-tools/src/xgettext.c b/gettext-tools/src/xgettext.c
+index f848d76d1..a80ee51ac 100644
+--- a/gettext-tools/src/xgettext.c
++++ b/gettext-tools/src/xgettext.c
+@@ -330,7 +330,7 @@ main (int argc, char *argv[])
+ bool sort_by_msgid = false;
+ bool sort_by_filepos = false;
+ char **dirs;
+- char **its_dirs;
++ char **its_dirs = NULL;
+ char *explicit_its_filename = NULL;
+ const char *file_name;
+ const char *files_from = NULL;
+@@ -1016,9 +1016,12 @@ warning: file '%s' extension '%s' is unknown; will try C"), filename, extension)
+ if (its_locating_rules)
+ locating_rule_list_free (its_locating_rules);
+
+- for (i = 0; its_dirs[i] != NULL; i++)
+- free (its_dirs[i]);
+- free (its_dirs);
++ if (its_dirs != NULL)
++ {
++ for (i = 0; its_dirs[i] != NULL; i++)
++ free (its_dirs[i]);
++ free (its_dirs);
++ }
+
+ exit (EXIT_SUCCESS);
+ }
+--
+2.14.3
+