diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2022-08-11 19:27:48 +0200 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2022-08-12 12:29:41 +0200 |
commit | b612db5b14728214ca09355af5d1490df2fa1c2f (patch) | |
tree | db1184a898782edcc5f696bc21b57c849ff0f27c /libgloss | |
parent | 55eb8b193f9f6e7b8733bf83c9f7f9d2818c67d3 (diff) | |
download | newlib-cygwin-3_3_6-release.zip newlib-cygwin-3_3_6-release.tar.gz newlib-cygwin-3_3_6-release.tar.bz2 |
newlocale: fix crash when trying to write to __C_localecygwin-3_3_6-release
This simple testcase:
locale_t st = newlocale(LC_ALL_MASK, "C", (locale_t)0);
locale_t st2 = newlocale(LC_CTYPE_MASK, "en_US.UTF-8", st);
is sufficient to reproduce a crash in _newlocale_r. After the first call
to newlocale, `st' points to __C_locale, which is const. When using `st'
as locale base in the second call, _newlocale_r tries to set pointers
inside base to NULL. This is bad if base is __C_locale, obviously.
Add a test to avoid trying to overwrite pointer values inside base if
base is __C_locale.
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
Diffstat (limited to 'libgloss')
0 files changed, 0 insertions, 0 deletions