From: Bruno Haible Date: Tue, 10 Sep 2024 01:58:05 +0000 (+0200) Subject: xgettext: C: Fix undefined behaviour. X-Git-Tag: v0.23~144 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=db30cffd7d17f80b733073174c396bdee25f5bff;p=thirdparty%2Fgettext.git xgettext: C: Fix undefined behaviour. * gettext-tools/src/x-c.c (phase7_getc): Declare n as 'unsigned int', to avoid signed integer overflow. * gettext-tools/tests/xg-c-escape-3.c: Add two more test cases. * gettext-tools/tests/xgettext-c-escape-3: Update expected test result. --- diff --git a/gettext-tools/src/x-c.c b/gettext-tools/src/x-c.c index d4fe6c4d1..7b43c245f 100644 --- a/gettext-tools/src/x-c.c +++ b/gettext-tools/src/x-c.c @@ -1171,7 +1171,7 @@ phase7_getc () case 'U': case 'u': { unsigned char buf[8]; - int n; + unsigned int n; n = 0; for (j = 0; j < (c == 'u' ? 4 : 8); j++) diff --git a/gettext-tools/tests/xg-c-escape-3.c b/gettext-tools/tests/xg-c-escape-3.c index fc95e5da9..520094595 100644 Binary files a/gettext-tools/tests/xg-c-escape-3.c and b/gettext-tools/tests/xg-c-escape-3.c differ diff --git a/gettext-tools/tests/xgettext-c-escape-3 b/gettext-tools/tests/xgettext-c-escape-3 index 5f9967d57..69a041584 100755 --- a/gettext-tools/tests/xgettext-c-escape-3 +++ b/gettext-tools/tests/xgettext-c-escape-3 @@ -69,6 +69,12 @@ msgstr "" msgid "14abc\\u567" msgstr "" + +msgid "15abc\\U01234567" +msgstr "" + +msgid "16abc\\U9FFFFFFF" +msgstr "" EOF : ${DIFF=diff}