summaryrefslogtreecommitdiff
path: root/lib/vsprintf.c
diff options
context:
space:
mode:
authorHeinrich Schuchardt <xypron.glpk@gmx.de>2019-02-15 22:20:53 +0100
committerHeinrich Schuchardt <xypron.glpk@gmx.de>2019-02-16 15:42:20 +0100
commit60c4454ddb98cb3e194483fb66652e0bb2552761 (patch)
tree27d5b03a3b467b7a33cba236831296d83c78c7cb /lib/vsprintf.c
parentd787caddf1ac69c3845992a435eafca3637b1fac (diff)
downloadu-boot-60c4454ddb98cb3e194483fb66652e0bb2552761.tar.gz
lib/vsprintf: print '?' for illegal Unicode sequence
Commit 0e66c10a7d80 ("lib: vsprintf: avoid overflow printing UTF16 strings") broke the Unicode unit tests: an illegal UTF16 code point should be printed as '?'. Fixes: 0e66c10a7d80 ("lib: vsprintf: avoid overflow printing UTF16 strings") Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Diffstat (limited to 'lib/vsprintf.c')
-rw-r--r--lib/vsprintf.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/lib/vsprintf.c b/lib/vsprintf.c
index de5db1aa5c..1b6c154d8d 100644
--- a/lib/vsprintf.c
+++ b/lib/vsprintf.c
@@ -288,6 +288,8 @@ static char *string16(char *buf, char *end, u16 *s, int field_width,
for (i = 0; i < len && buf + utf16_utf8_strnlen(str, 1) <= end; ++i) {
s32 s = utf16_get(&str);
+ if (s < 0)
+ s = '?';
utf8_put(s, &buf);
}
for (; len < field_width; --field_width)