Reviewed by Maciej.
authordarin <darin@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 10 Aug 2004 03:05:37 +0000 (03:05 +0000)
committerdarin <darin@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 10 Aug 2004 03:05:37 +0000 (03:05 +0000)
        - fixed <rdar://problem/3753467> REGRESSION (137-138): reproducible buffer overrun in UString manipulation code

        * kjs/ustring.cpp: (KJS::UString::append): Fix incorrect size computation. Without it
        we get a buffer overflow.

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

JavaScriptCore/ChangeLog
JavaScriptCore/kjs/ustring.cpp

index 8c7f78eca18c389c296c6bb9c978ae3ff963c2c4..43aaeec05f8d9b35f4abd1517a33a25389495c29 100644 (file)
@@ -1,3 +1,12 @@
+2004-08-09  Darin Adler  <darin@apple.com>
+
+        Reviewed by Maciej.
+
+        - fixed <rdar://problem/3753467> REGRESSION (137-138): reproducible buffer overrun in UString manipulation code
+
+        * kjs/ustring.cpp: (KJS::UString::append): Fix incorrect size computation. Without it
+        we get a buffer overflow.
+
 === Safari-155 ===
 
 2004-08-05  Richard Williamson   <rjw@apple.com>
index a605583626365009fb38b4c249be44aabb27d179..a06b1536f05b2c4d96f857c26e1ed4823f5c134c 100644 (file)
@@ -614,7 +614,7 @@ UString &UString::append(const UString &t)
     rep->_hash = 0;
   } else if (thisOffset + thisSize == usedCapacity()) {
     // this reaches the end of the buffer - extend it
-    expandCapacity(length);
+    expandCapacity(thisOffset + length);
     memcpy(const_cast<UChar *>(data() + thisSize), t.data(), tSize * sizeof(UChar));
     Rep *newRep = Rep::create(rep, 0, length);
     release();