]> git.ipfire.org Git - thirdparty/gettext.git/commitdiff
xgettext: C: Fix undefined behaviour.
authorBruno Haible <bruno@clisp.org>
Tue, 10 Sep 2024 01:58:05 +0000 (03:58 +0200)
committerBruno Haible <bruno@clisp.org>
Tue, 10 Sep 2024 01:59:08 +0000 (03:59 +0200)
* 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.

gettext-tools/src/x-c.c
gettext-tools/tests/xg-c-escape-3.c
gettext-tools/tests/xgettext-c-escape-3

index d4fe6c4d18bb917756b7a0d327ab44fca2979e0e..7b43c245f170ab7a24f72546d6b88ee3ade03ddc 100644 (file)
@@ -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++)
index fc95e5da9e2747fbeedc6c96505500b76f9e8eac..520094595def4709c36cbf5e918f1f414fb5e949 100644 (file)
Binary files a/gettext-tools/tests/xg-c-escape-3.c and b/gettext-tools/tests/xg-c-escape-3.c differ
index 5f9967d576eabdd9e9557720924f5fd3714abdc7..69a041584462bfdc72b39e76063319f348117269 100755 (executable)
@@ -69,6 +69,12 @@ msgstr ""
 
 msgid "14abc\\u567"
 msgstr ""
+
+msgid "15abc\\U01234567"
+msgstr ""
+
+msgid "16abc\\U9FFFFFFF"
+msgstr ""
 EOF
 
 : ${DIFF=diff}