diff options
author | Markus Armbruster <armbru@redhat.com> | 2018-08-23 18:39:49 +0200 |
---|---|---|
committer | Markus Armbruster <armbru@redhat.com> | 2018-08-24 20:26:37 +0200 |
commit | e59f39d40397645477b959255aedfa17a7c9c779 (patch) | |
tree | 9d1bbd816632aa79e9015ddd47eb7a827b1787f0 /include/qemu | |
parent | a89d3104a29c400dfed4b675d6385a17223f9e0f (diff) | |
download | qemu-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')
-rw-r--r-- | include/qemu/unicode.h | 1 |
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 |