mirror of
git://sourceware.org/git/glibc.git
synced 2025-04-18 14:30:43 +08:00
regex: fix uninitialized memory access
I introduced this bug into gnulib in commit 8335a4d6c7b4448cd0bcb6d0bebf1d456bcfdb17 dated 2006-04-10; eventually it was merged into glibc. The bug was found by project-repo <bugs@feusi.co> and reported here: https://lists.gnu.org/r/sed-devel/2018-08/msg00017.html Diagnosis and draft fix reported by Assaf Gordon here: https://lists.gnu.org/r/bug-gnulib/2018-08/msg00071.html https://lists.gnu.org/r/bug-gnulib/2018-08/msg00142.html * posix/regex_internal.c (build_wcs_upper_buffer): Fix bug when mbrtowc returns 0. (cherry picked from commit bc680b336971305cb39896b30d72dc7101b62242)
This commit is contained in:
parent
aa8a3e4cde
commit
58559f1443
15
ChangeLog
15
ChangeLog
@ -1,3 +1,18 @@
|
||||
2018-08-25 Paul Eggert <eggert@cs.ucla.edu>
|
||||
|
||||
[BZ #23578]
|
||||
regex: fix uninitialized memory access
|
||||
I introduced this bug into gnulib in commit
|
||||
8335a4d6c7b4448cd0bcb6d0bebf1d456bcfdb17 dated 2006-04-10;
|
||||
eventually it was merged into glibc. The bug was found by
|
||||
project-repo <bugs@feusi.co> and reported here:
|
||||
https://lists.gnu.org/r/sed-devel/2018-08/msg00017.html
|
||||
Diagnosis and draft fix reported by Assaf Gordon here:
|
||||
https://lists.gnu.org/r/bug-gnulib/2018-08/msg00071.html
|
||||
https://lists.gnu.org/r/bug-gnulib/2018-08/msg00142.html
|
||||
* posix/regex_internal.c (build_wcs_upper_buffer):
|
||||
Fix bug when mbrtowc returns 0.
|
||||
|
||||
2018-08-27 Martin Kuchta <martin.kuchta@netapp.com>
|
||||
Torvald Riegel <triegel@redhat.com>
|
||||
|
||||
|
1
NEWS
1
NEWS
@ -12,6 +12,7 @@ The following bugs are resolved with this release:
|
||||
[23497] readdir64@GLIBC_2.1 cannot parse the kernel directory stream
|
||||
[23521] nss_files aliases database file stream leak
|
||||
[23538] pthread_cond_broadcast: Fix waiters-after-spinning case
|
||||
[23578] regex: Fix memory overread in re_compile_pattern
|
||||
|
||||
|
||||
Version 2.28
|
||||
|
@ -317,7 +317,7 @@ build_wcs_upper_buffer (re_string_t *pstr)
|
||||
mbclen = __mbrtowc (&wc,
|
||||
((const char *) pstr->raw_mbs + pstr->raw_mbs_idx
|
||||
+ byte_idx), remain_len, &pstr->cur_state);
|
||||
if (BE (mbclen < (size_t) -2, 1))
|
||||
if (BE (0 < mbclen && mbclen < (size_t) -2, 1))
|
||||
{
|
||||
wchar_t wcu = __towupper (wc);
|
||||
if (wcu != wc)
|
||||
@ -386,7 +386,7 @@ build_wcs_upper_buffer (re_string_t *pstr)
|
||||
else
|
||||
p = (const char *) pstr->raw_mbs + pstr->raw_mbs_idx + src_idx;
|
||||
mbclen = __mbrtowc (&wc, p, remain_len, &pstr->cur_state);
|
||||
if (BE (mbclen < (size_t) -2, 1))
|
||||
if (BE (0 < mbclen && mbclen < (size_t) -2, 1))
|
||||
{
|
||||
wchar_t wcu = __towupper (wc);
|
||||
if (wcu != wc)
|
||||
|
Loading…
x
Reference in New Issue
Block a user