From: Daiki Ueno Date: Sat, 24 Jan 2015 07:51:18 +0000 (+0900) Subject: xgettext, msgmerge: Avoid undefined non-null argument behavior X-Git-Tag: v0.19.5~80 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2d36f1e1de7521090272b88f161711f95228c19d;p=thirdparty%2Fgettext.git 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. --- 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);