Improve assertions in StringParsingBuffer
authorweinig@apple.com <weinig@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 27 Jun 2020 16:07:42 +0000 (16:07 +0000)
committerweinig@apple.com <weinig@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 27 Jun 2020 16:07:42 +0000 (16:07 +0000)
https://bugs.webkit.org/show_bug.cgi?id=213633

Reviewed by Darin Adler.

* wtf/text/StringParsingBuffer.h:
Address additional feedback and improve the assertions by making them more
clear and avoid potential overflows.

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

Source/WTF/ChangeLog
Source/WTF/wtf/text/StringParsingBuffer.h

index 4fd058e..089464d 100644 (file)
@@ -1,3 +1,14 @@
+2020-06-27  Sam Weinig  <weinig@apple.com>
+
+        Improve assertions in StringParsingBuffer 
+        https://bugs.webkit.org/show_bug.cgi?id=213633
+
+        Reviewed by Darin Adler.
+
+        * wtf/text/StringParsingBuffer.h:
+        Address additional feedback and improve the assertions by making them more
+        clear and avoid potential overflows.
+
 2020-06-26  Geoffrey Garen  <ggaren@apple.com>
 
         Re-land r262863
index 218c346..d0f5b34 100644 (file)
@@ -50,8 +50,9 @@ public:
         : m_position { characters }
         , m_end { end }
     {
-        ASSERT(m_end >= m_position);
+        ASSERT(characters <= end);
         ASSERT(!characters == !end);
+        ASSERT(end - characters <= std::numeric_limits<unsigned>::max());
     }
 
     constexpr auto position() const { return m_position; }
@@ -66,26 +67,25 @@ public:
 
     CharacterType operator[](unsigned i)
     {
-        ASSERT(m_position + i < m_end);
+        ASSERT(i < lengthRemaining());
         return m_position[i];
     }
 
     constexpr CharacterType operator*() const
     {
-        ASSERT(m_position < m_end);
+        ASSERT(hasCharactersRemaining());
         return *m_position;
     }
 
     constexpr void advance()
     {
-        ASSERT(m_position < m_end);
+        ASSERT(hasCharactersRemaining());
         ++m_position;
     }
 
     constexpr void advanceBy(unsigned places)
     {
-        ASSERT(m_position <= m_end);
-        ASSERT(m_position + places <= m_end);
+        ASSERT(places <= lengthRemaining());
         m_position += places;
     }