Add some assertions to convertUTF8ToUTF16().
authormark.lam@apple.com <mark.lam@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 30 Sep 2019 18:15:27 +0000 (18:15 +0000)
committermark.lam@apple.com <mark.lam@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 30 Sep 2019 18:15:27 +0000 (18:15 +0000)
https://bugs.webkit.org/show_bug.cgi?id=202356
<rdar://problem/52846813>

Reviewed by Filip Pizlo.

* wtf/unicode/UTF8Conversion.cpp:
(WTF::Unicode::convertUTF8ToUTF16):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@250520 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WTF/ChangeLog
Source/WTF/wtf/unicode/UTF8Conversion.cpp

index 95b5655..5fccac1 100644 (file)
@@ -1,3 +1,14 @@
+2019-09-30  Mark Lam  <mark.lam@apple.com>
+
+        Add some assertions to convertUTF8ToUTF16().
+        https://bugs.webkit.org/show_bug.cgi?id=202356
+        <rdar://problem/52846813>
+
+        Reviewed by Filip Pizlo.
+
+        * wtf/unicode/UTF8Conversion.cpp:
+        (WTF::Unicode::convertUTF8ToUTF16):
+
 2019-09-30  Guillaume Emont  <guijemont@igalia.com>
 
         Don't try to use backtrace() on MIPS
index a2bff3b..0cf619e 100644 (file)
@@ -92,6 +92,7 @@ bool convertUTF8ToUTF16(const char* source, const char* sourceEnd, UChar** targe
     RELEASE_ASSERT(sourceEnd - source <= std::numeric_limits<int>::max());
     UBool error = false;
     UChar* target = *targetStart;
+    RELEASE_ASSERT(targetEnd - target <= std::numeric_limits<int>::max());
     UChar32 orAllData = 0;
     int targetOffset = 0;
     for (int sourceOffset = 0; sourceOffset < sourceEnd - source; ) {
@@ -104,6 +105,7 @@ bool convertUTF8ToUTF16(const char* source, const char* sourceEnd, UChar** targe
             return false;
         orAllData |= character;
     }
+    RELEASE_ASSERT(target + targetOffset <= targetEnd);
     *targetStart = target + targetOffset;
     if (sourceAllASCII)
         *sourceAllASCII = isASCII(orAllData);