diff options
author | Sergio Giro <sgiro@google.com> | 2016-06-28 18:02:29 +0100 |
---|---|---|
committer | Martijn Coenen <maco@google.com> | 2016-08-25 20:07:51 +0000 |
commit | 1cfa56d46c7c31300c25dafd722ff60a5294c3b3 (patch) | |
tree | 37864264edcd1e95c36b76f3f8f78c3d60cbf587 /include/utils | |
parent | 9de6776321b80d387e6108683547bc043f868925 (diff) | |
download | system_core-1cfa56d46c7c31300c25dafd722ff60a5294c3b3.tar.gz system_core-1cfa56d46c7c31300c25dafd722ff60a5294c3b3.tar.bz2 system_core-1cfa56d46c7c31300c25dafd722ff60a5294c3b3.zip |
libutils/Unicode.cpp: Correct length computation and add checks for utf16->utf8
Inconsistent behaviour between utf16_to_utf8 and utf16_to_utf8_length
is causing a heap overflow.
Correcting the length computation and adding bound checks to the
conversion functions.
Test: ran libutils_tests
Bug: 29250543
Change-Id: I6115e3357141ed245c63c6eb25fc0fd0a9a7a2bb
(cherry picked from commit c4966a363e46d2e1074d1a365e232af0dcedd6a1)
Diffstat (limited to 'include/utils')
-rw-r--r-- | include/utils/Unicode.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/include/utils/Unicode.h b/include/utils/Unicode.h index 7316665e6..a13f34779 100644 --- a/include/utils/Unicode.h +++ b/include/utils/Unicode.h @@ -88,7 +88,7 @@ ssize_t utf32_to_utf8_length(const char32_t *src, size_t src_len); * "dst" becomes \xE3\x81\x82\xE3\x81\x84 * (note that "dst" is NOT nul-terminated, like strncpy) */ -void utf32_to_utf8(const char32_t* src, size_t src_len, char* dst); +void utf32_to_utf8(const char32_t* src, size_t src_len, char* dst, size_t dst_len); /** * Returns the unicode value at "index". @@ -110,7 +110,7 @@ ssize_t utf16_to_utf8_length(const char16_t *src, size_t src_len); * enough to fit the UTF-16 as measured by utf16_to_utf8_length with an added * NUL terminator. */ -void utf16_to_utf8(const char16_t* src, size_t src_len, char* dst); +void utf16_to_utf8(const char16_t* src, size_t src_len, char* dst, size_t dst_len); /** * Returns the length of "src" when "src" is valid UTF-8 string. |