]> git.ipfire.org Git - thirdparty/gettext.git/commit
Avoid crash by stack overflow during plural expression evaluation.
authorBruno Haible <bruno@clisp.org>
Sun, 1 Oct 2023 18:18:12 +0000 (20:18 +0200)
committerBruno Haible <bruno@clisp.org>
Fri, 6 Oct 2023 14:25:03 +0000 (16:25 +0200)
commitef37a15408b285976978fa0d1e105ef97e23fa59
treedf811f478fd0a18dd4796321f623a164a316e41f
parent021348871a22041cd9d2625ab958dd4808fd282d
Avoid crash by stack overflow during plural expression evaluation.

* gettext-runtime/intl/plural-exp.h (enum eval_status, struct eval_result): New
types.
(plural_eval): Change return type to 'struct eval_result'.
* gettext-runtime/intl/eval-plural.h (EVAL_MAXDEPTH, OK): New macros.
(plural_eval_recurse): New function, extracted from plural_eval.
(plural_eval): Change return type to 'struct eval_result'. Invoke
plural_eval_recurse.
* gettext-runtime/intl/dcigettext.c (plural_lookup): Update.
* gettext-tools/src/plural-eval.h: Update comment.
* gettext-tools/src/msgl-check.c (plural_expression_histogram): Update.
(check_plural_eval): Update. Fail with an error message if the plural expression
evaluation produced a stack overflow.
* gettext-tools/tests/plural-3: Update.
gettext-runtime/intl/dcigettext.c
gettext-runtime/intl/eval-plural.h
gettext-runtime/intl/plural-exp.h
gettext-tools/src/msgl-check.c
gettext-tools/src/plural-eval.h
gettext-tools/tests/plural-3