diff options
author | Bruno Haible <bruno@clisp.org> | 2023-03-13 00:21:50 +0100 |
---|---|---|
committer | Bruno Haible <bruno@clisp.org> | 2023-03-14 02:57:28 +0100 |
commit | ff78c835ad8aa8a7f00d237eaa4b3f369edcbe1d (patch) | |
tree | d3a55bf75339f3b4fb9c488e3e0c19707b83634a | |
parent | 0baf23d1db7379e980455350fe867d0860871bf4 (diff) | |
download | gettext-ff78c835ad8aa8a7f00d237eaa4b3f369edcbe1d.tar.gz |
xgettext: In language JavaScript, avoid a crash.
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.
-rw-r--r-- | gettext-tools/src/x-javascript.c | 4 | ||||
-rw-r--r-- | gettext-tools/tests/Makefile.am | 2 | ||||
-rwxr-xr-x | gettext-tools/tests/xgettext-javascript-12 | 21 |
3 files changed, 24 insertions, 3 deletions
diff --git a/gettext-tools/src/x-javascript.c b/gettext-tools/src/x-javascript.c index 98710394d..815620861 100644 --- a/gettext-tools/src/x-javascript.c +++ b/gettext-tools/src/x-javascript.c @@ -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. */ diff --git a/gettext-tools/tests/Makefile.am b/gettext-tools/tests/Makefile.am index 6ca580bd7..fcb60d81d 100644 --- a/gettext-tools/tests/Makefile.am +++ b/gettext-tools/tests/Makefile.am @@ -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 index 000000000..5f71647f4 --- /dev/null +++ b/gettext-tools/tests/xgettext-javascript-12 @@ -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 |