re PR preprocessor/92919 (invalid memory access in wide_str_to_charconst when running ucn2.C testcase (caught by hwasan))

PR preprocessor/92919
	* charset.c (wide_str_to_charconst): If str contains just the
	NUL terminator, punt quietly.

From-SVN: r279399
This commit is contained in:
Jakub Jelinek 2019-12-14 23:18:53 +01:00 committed by Jakub Jelinek
parent 8640a70471
commit 937a778ea3
2 changed files with 17 additions and 0 deletions

View File

@ -1,3 +1,9 @@
2019-12-14 Jakub Jelinek <jakub@redhat.com>
PR preprocessor/92919
* charset.c (wide_str_to_charconst): If str contains just the
NUL terminator, punt quietly.
2019-12-09 David Malcolm <dmalcolm@redhat.com>
* include/line-map.h (label_text::label_text): Make private.

View File

@ -1970,6 +1970,17 @@ wide_str_to_charconst (cpp_reader *pfile, cpp_string str,
size_t off, i;
cppchar_t result = 0, c;
if (str.len <= nbwc)
{
/* Error recovery, if no errors have been diagnosed previously,
there should be at least two wide characters. Empty literals
are diagnosed earlier and we can get just the zero terminator
only if there were errors diagnosed during conversion. */
*pchars_seen = 0;
*unsignedp = 0;
return 0;
}
/* This is finicky because the string is in the target's byte order,
which may not be our byte order. Only the last character, ignoring
the NUL terminator, is relevant. */