From 2d36f1e1de7521090272b88f161711f95228c19d Mon Sep 17 00:00:00 2001 From: Daiki Ueno Date: Sat, 24 Jan 2015 16:51:18 +0900 Subject: [PATCH] xgettext, msgmerge: Avoid undefined non-null argument behavior * xgettext.c (remember_a_message): Building with gcc's -fsanitize=undefined and running tests triggered: xgettext.c:2425:17: runtime error: null pointer passed as argument \ 2, which is declared to never be null Adjust the argument of strncmp to never be null. * msgmerge.c (message_merge): Likewise for memcpy. --- gettext-tools/src/ChangeLog | 10 ++++++++++ gettext-tools/src/msgmerge.c | 5 +++-- gettext-tools/src/xgettext.c | 2 +- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/gettext-tools/src/ChangeLog b/gettext-tools/src/ChangeLog index d0ad21fbc..af08eda8b 100644 --- a/gettext-tools/src/ChangeLog +++ b/gettext-tools/src/ChangeLog @@ -1,3 +1,13 @@ +2015-01-24 Daiki Ueno + + xgettext, msgmerge: Avoid undefined non-null argument behavior + * xgettext.c (remember_a_message): Building with gcc's + -fsanitize=undefined and running tests triggered: + xgettext.c:2425:17: runtime error: null pointer passed as argument \ + 2, which is declared to never be null + Adjust the argument of strncmp to never be null. + * msgmerge.c (message_merge): Likewise for memcpy. + 2015-01-23 Daiki Ueno build: Fix parallel build from git checkout diff --git a/gettext-tools/src/msgmerge.c b/gettext-tools/src/msgmerge.c index d8e02ae10..0415b2ac2 100644 --- a/gettext-tools/src/msgmerge.c +++ b/gettext-tools/src/msgmerge.c @@ -1025,8 +1025,9 @@ message_merge (message_ty *def, message_ty *ref, bool force_fuzzy, char *extended = (char *) obstack_alloc (&pool, header_fields[UNKNOWN].len + len + 1); - memcpy (extended, header_fields[UNKNOWN].string, - header_fields[UNKNOWN].len); + if (header_fields[UNKNOWN].string) + memcpy (extended, header_fields[UNKNOWN].string, + header_fields[UNKNOWN].len); memcpy (&extended[header_fields[UNKNOWN].len], cp, len); extended[header_fields[UNKNOWN].len + len] = '\0'; header_fields[UNKNOWN].string = extended; diff --git a/gettext-tools/src/xgettext.c b/gettext-tools/src/xgettext.c index 28d28a0a8..f9156ebf9 100644 --- a/gettext-tools/src/xgettext.c +++ b/gettext-tools/src/xgettext.c @@ -2327,7 +2327,7 @@ meta information, not the empty string.\n"))); /* The string before the comment tag. For example, If "** TRANSLATORS:" is seen and the comment tag is "TRANSLATORS:", then comment_tag_prefix is set to "** ". */ - const char *comment_tag_prefix = NULL; + const char *comment_tag_prefix = ""; size_t comment_tag_prefix_length = 0; nitems_before = (mp->comment_dot != NULL ? mp->comment_dot->nitems : 0); -- 2.47.2