diff options
author | Stefan Liebler <stli@linux.ibm.com> | 2021-05-17 16:19:36 +0200 |
---|---|---|
committer | Stefan Liebler <stli@linux.ibm.com> | 2021-05-18 10:07:30 +0200 |
commit | 2457175e8b5dfa0ca447ba87cb2a1e7d7e2ba4a7 (patch) | |
tree | 76279ac2f61772c07a811691d1c9ce9e862ff8bd /include/unistd.h | |
parent | f17164bd51db31f47fbbdae826c63b6d78184c45 (diff) | |
download | glibc-2457175e8b5dfa0ca447ba87cb2a1e7d7e2ba4a7.zip glibc-2457175e8b5dfa0ca447ba87cb2a1e7d7e2ba4a7.tar.gz glibc-2457175e8b5dfa0ca447ba87cb2a1e7d7e2ba4a7.tar.bz2 |
Fix stringop-overflow warning in bug-regex19.c.
Starting with commit
26492c0a14966c32c43cd6ca1d0dca5e62c6cfef
"Annotate additional APIs with GCC attribute access.",
gcc emits this warning on s390x:
In function 'do_one_test',
inlined from 'do_mb_tests' at bug-regex19.c:385:11:
bug-regex19.c:271:9: error: 're_search' specified size 18446744073709551615 exceeds maximum object size 9223372036854775807 [-Werror=stringop-overflow=]
271 | res = re_search (®buf, test->string, strlen (test->string),
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
272 | test->start, strlen (test->string) - test->start, NULL);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from ../include/regex.h:2,
from bug-regex19.c:22:
bug-regex19.c: In function 'do_mb_tests':
../posix/regex.h:554:17: note: in a call to function 're_search' declared with attribute 'read_only (2, 3)'
554 | extern regoff_t re_search (struct re_pattern_buffer *__buffer,
| ^~~~~~~~~
...
The function do_one_test is inlined into do_mb_tests on s390x (at least with
gcc 10). If do_one_test is marked with __attribute__ ((noinline)), there are
no warnings on s390x. If do_one_test is marked with
__attribute__ ((always_inline)), there are the same warnings on x86_64.
test->string points to a variable length array on stack of do_mb_tests
and the content is generated based on the passed test struct.
According to Martin Sebor, this is a false positive caused by the same bug as
the one in nss/makedb.c. It's fixed in GCC 11 and will also be available in
the next GCC 10.4 release.
Diffstat (limited to 'include/unistd.h')
0 files changed, 0 insertions, 0 deletions