From 5e407aba1f775d51b25481cb55f324c9868f62d7 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Wed, 9 Oct 2019 17:37:37 -0700 Subject: [PATCH] =?utf8?q?regex:=20tell=20compiler=20there=E2=80=99s=20at?= =?utf8?q?=20most=20256=20arcs=20out?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Partly this is to help the reader (and maybe help GCC); partly this is to pacify Coverity. * lib/regex_internal.h: Include verify.h. * lib/regexec.c (group_nodes_into_DFAstates): Tell the compiler that ndests cannot exceed SBC_MAX. * modules/regex (Depends-on): Add ‘verify’. --- ChangeLog | 8 ++++++++ lib/regex_internal.h | 1 + lib/regexec.c | 1 + modules/regex | 1 + 4 files changed, 11 insertions(+) diff --git a/ChangeLog b/ChangeLog index 4f96c8cbff..360973ba46 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,13 @@ 2019-10-09 Paul Eggert + regex: tell compiler there’s at most 256 arcs out + Partly this is to help the reader (and maybe help GCC); + partly this is to pacify Coverity. + * lib/regex_internal.h: Include verify.h. + * lib/regexec.c (group_nodes_into_DFAstates): + Tell the compiler that ndests cannot exceed SBC_MAX. + * modules/regex (Depends-on): Add ‘verify’. + regex: simplify by assuming C99 * config/srclist.txt: Comment out regex_internal.h and regexec.c temporarily. diff --git a/lib/regex_internal.h b/lib/regex_internal.h index 9c0e1f1d17..b6eeba32d5 100644 --- a/lib/regex_internal.h +++ b/lib/regex_internal.h @@ -34,6 +34,7 @@ #include #include +#include #ifdef _LIBC # include diff --git a/lib/regexec.c b/lib/regexec.c index f7d2b5b20d..0d32e0139f 100644 --- a/lib/regexec.c +++ b/lib/regexec.c @@ -3684,6 +3684,7 @@ group_nodes_into_DFAstates (const re_dfa_t *dfa, const re_dfastate_t *state, bitset_empty (accepts); } } + assume (ndests <= SBC_MAX); return ndests; error_return: for (j = 0; j < ndests; ++j) diff --git a/modules/regex b/modules/regex index 7f50916ce3..dbfd379820 100644 --- a/modules/regex +++ b/modules/regex @@ -30,6 +30,7 @@ mbsinit [test $ac_use_included_regex = yes] nl_langinfo [test $ac_use_included_regex = yes] stdbool [test $ac_use_included_regex = yes] stdint [test $ac_use_included_regex = yes] +verify [test $ac_use_included_regex = yes] wchar [test $ac_use_included_regex = yes] wcrtomb [test $ac_use_included_regex = yes] wctype-h [test $ac_use_included_regex = yes] -- 2.39.5