aboutsummaryrefslogtreecommitdiff
path: root/include/qemu/unicode.h
diff options
context:
space:
mode:
authorMarkus Armbruster <armbru@redhat.com>2018-08-23 18:39:49 +0200
committerMarkus Armbruster <armbru@redhat.com>2018-08-24 20:26:37 +0200
commite59f39d40397645477b959255aedfa17a7c9c779 (patch)
tree9d1bbd816632aa79e9015ddd47eb7a827b1787f0 /include/qemu/unicode.h
parenta89d3104a29c400dfed4b675d6385a17223f9e0f (diff)
downloadqemu-e59f39d40397645477b959255aedfa17a7c9c779.zip
qemu-e59f39d40397645477b959255aedfa17a7c9c779.tar.gz
qemu-e59f39d40397645477b959255aedfa17a7c9c779.tar.bz2
json: Reject invalid UTF-8 sequences
We reject bytes that can't occur in valid UTF-8 (\xC0..\xC1, \xF5..\xFF in the lexer. That's insufficient; there's plenty of invalid UTF-8 not containing these bytes, as demonstrated by check-qjson: * Malformed sequences - Unexpected continuation bytes - Missing continuation bytes after start bytes other than \xC0..\xC1, \xF5..\xFD. * Overlong sequences with start bytes other than \xC0..\xC1, \xF5..\xFD. * Invalid code points Fixing this in the lexer would be bothersome. Fixing it in the parser is straightforward, so do that. Signed-off-by: Markus Armbruster <armbru@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com> Message-Id: <20180823164025.12553-23-armbru@redhat.com>
Diffstat (limited to 'include/qemu/unicode.h')
-rw-r--r--include/qemu/unicode.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/include/qemu/unicode.h b/include/qemu/unicode.h
index 71c72db..7fa10b8 100644
--- a/include/qemu/unicode.h
+++ b/include/qemu/unicode.h
@@ -2,5 +2,6 @@
#define QEMU_UNICODE_H
int mod_utf8_codepoint(const char *s, size_t n, char **end);
+ssize_t mod_utf8_encode(char buf[], size_t bufsz, int codepoint);
#endif