]> git.ipfire.org Git - thirdparty/gettext.git/commitdiff
xgettext: In language JavaScript, avoid a crash.
authorBruno Haible <bruno@clisp.org>
Sun, 12 Mar 2023 23:21:50 +0000 (00:21 +0100)
committerBruno Haible <bruno@clisp.org>
Tue, 14 Mar 2023 01:57:28 +0000 (02:57 +0100)
This avoids a crash
"Assertion `phase2_pushback_length + j < SIZEOF (phase2_pushback)' failed.".

* gettext-tools/src/x-javascript.c (phase2_pushback): Increase size by 1.
* gettext-tools/tests/xgettext-javascript-12: New file.
* gettext-tools/tests/Makefile.am (TESTS): Add it.

gettext-tools/src/x-javascript.c
gettext-tools/tests/Makefile.am
gettext-tools/tests/xgettext-javascript-12 [new file with mode: 0755]

index 98710394d0d677ac19656075055041c90069eb71..815620861153f2e6b2b03ddad6f2bea054368145 100644 (file)
@@ -215,8 +215,8 @@ phase1_ungetc (int c)
 
 static lexical_context_ty lexical_context;
 
-/* Maximum used, length of "<![CDATA[" tag minus one.  */
-static int phase2_pushback[8];
+/* Maximum used, length of "<![CDATA[" tag.  */
+static int phase2_pushback[9];
 static int phase2_pushback_length;
 
 /* Read the next Unicode UCS-4 character from the input file.  */
index 6ca580bd7f723d806ece9c10b7a2f02396c673cb..fcb60d81dde91ff96b81ea7918bc6ffb99c1e46c 100644 (file)
@@ -114,7 +114,7 @@ TESTS = gettext-1 gettext-2 \
        xgettext-javascript-1 xgettext-javascript-2 xgettext-javascript-3 \
        xgettext-javascript-4 xgettext-javascript-5 xgettext-javascript-6 \
        xgettext-javascript-7 xgettext-javascript-8 xgettext-javascript-9 \
-       xgettext-javascript-10 xgettext-javascript-11 \
+       xgettext-javascript-10 xgettext-javascript-11 xgettext-javascript-12 \
        xgettext-javascript-stackovfl-1 xgettext-javascript-stackovfl-2 \
        xgettext-javascript-stackovfl-3 xgettext-javascript-stackovfl-4 \
        xgettext-javascript-stackovfl-5 xgettext-javascript-stackovfl-6 \
diff --git a/gettext-tools/tests/xgettext-javascript-12 b/gettext-tools/tests/xgettext-javascript-12
new file mode 100755 (executable)
index 0000000..5f71647
--- /dev/null
@@ -0,0 +1,21 @@
+#! /bin/sh
+. "${srcdir=.}/init.sh"; path_prepend_ . ../src
+
+# Test JavaScript support: maximum needed for phase2_pushback.
+
+printf '<![CDATA0' > xg-js-12a.js
+printf '<![CDATA012345' > xg-js-12b.js
+
+: ${XGETTEXT=xgettext}
+LANGUAGE= LC_ALL=C ${XGETTEXT} --no-location -d xg-js-12.tmp xg-js-12a.js 2>xg-js-12.err
+result=$?
+cat xg-js-12.err
+test $result = 0 || Exit 1
+
+: ${XGETTEXT=xgettext}
+LANGUAGE= LC_ALL=C ${XGETTEXT} --no-location -d xg-js-12.tmp xg-js-12b.js 2>xg-js-12.err
+result=$?
+cat xg-js-12.err
+test $result = 0 || Exit 1
+
+exit 0