diff options
author | Paul Eggert <eggert@cs.ucla.edu> | 2019-10-09 17:30:11 -0700 |
---|---|---|
committer | Paul Eggert <eggert@cs.ucla.edu> | 2019-10-09 18:34:04 -0700 |
commit | 32915b2a8a43825720755113bdffe9f67a591748 (patch) | |
tree | 1ea61e21efd3ddbc24cc3b0c27a2b004021e67da | |
parent | 1eb7b25df1976fa852ddd7ea0ae26ec670146ce7 (diff) | |
download | gnulib-32915b2a8a43825720755113bdffe9f67a591748.tar.gz gnulib-32915b2a8a43825720755113bdffe9f67a591748.tar.bz2 |
regex: avoid copying of uninitialized storage
* config/srclist.txt: Comment out regcomp.c temporarily.
* lib/regcomp.c (build_charclass_op, create_tree) [! (GCC_LINT||lint)]:
Initialize even when not checking for lint, as the behavior is
arguably undefined otherwise and Coverity warns about it.
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | config/srclist.txt | 2 | ||||
-rw-r--r-- | lib/regcomp.c | 13 |
3 files changed, 11 insertions, 12 deletions
@@ -1,3 +1,11 @@ +2019-10-09 Paul Eggert <eggert@cs.ucla.edu> + + regex: avoid copying of uninitialized storage + * config/srclist.txt: Comment out regcomp.c temporarily. + * lib/regcomp.c (build_charclass_op, create_tree) [! (GCC_LINT||lint)]: + Initialize even when not checking for lint, as the behavior is + arguably undefined otherwise and Coverity warns about it. + 2019-10-06 Bruno Haible <bruno@clisp.org> access tests: Fix test failure when run as root. diff --git a/config/srclist.txt b/config/srclist.txt index 4a3a5a7af0..bceaee8631 100644 --- a/config/srclist.txt +++ b/config/srclist.txt @@ -52,7 +52,7 @@ $LIBCSRC malloc/scratch_buffer_grow_preserve.c lib/malloc $LIBCSRC malloc/scratch_buffer_set_array_size.c lib/malloc # Temporarily newer in Gnulib than in glibc. #$LIBCSRC include/intprops.h lib -$LIBCSRC posix/regcomp.c lib +#$LIBCSRC posix/regcomp.c lib $LIBCSRC posix/regex.c lib $LIBCSRC posix/regex.h lib $LIBCSRC posix/regex_internal.c lib diff --git a/lib/regcomp.c b/lib/regcomp.c index 7525355a9b..c1f7f2b2a4 100644 --- a/lib/regcomp.c +++ b/lib/regcomp.c @@ -3662,7 +3662,6 @@ build_charclass_op (re_dfa_t *dfa, RE_TRANSLATE_TYPE trans, Idx alloc = 0; #endif /* not RE_ENABLE_I18N */ reg_errcode_t ret; - re_token_t br_token; bin_tree_t *tree; sbcset = (re_bitset_ptr_t) calloc (sizeof (bitset_t), 1); @@ -3713,11 +3712,7 @@ build_charclass_op (re_dfa_t *dfa, RE_TRANSLATE_TYPE trans, #endif /* Build a tree for simple bracket. */ -#if defined GCC_LINT || defined lint - memset (&br_token, 0, sizeof br_token); -#endif - br_token.type = SIMPLE_BRACKET; - br_token.opr.sbcset = sbcset; + re_token_t br_token = { .type = SIMPLE_BRACKET, .opr.sbcset = sbcset }; tree = create_token_tree (dfa, NULL, NULL, &br_token); if (__glibc_unlikely (tree == NULL)) goto build_word_op_espace; @@ -3808,11 +3803,7 @@ static bin_tree_t * create_tree (re_dfa_t *dfa, bin_tree_t *left, bin_tree_t *right, re_token_type_t type) { - re_token_t t; -#if defined GCC_LINT || defined lint - memset (&t, 0, sizeof t); -#endif - t.type = type; + re_token_t t = { .type = type }; return create_token_tree (dfa, left, right, &t); } |