Title: [116706] branches/chromium/1132/Source
Revision
116706
Author
[email protected]
Date
2012-05-10 17:03:51 -0700 (Thu, 10 May 2012)

Log Message

Merge 116333 - IndexedDB: LevelDB coding for bools is broken
https://bugs.webkit.org/show_bug.cgi?id=85810

Reviewed by Tony Chang.

Source/WebCore:

Code was appending to a pre-sized Vector, rather than using an
index setter. This caused uninitialized data to be written out.
Issue was detected on the Chromium side in http://crbug.com/126388

Tests: webkit_unit_tests --gtest_filter='IDBLevelDBCodingTest.*codeBool'

* Modules/indexeddb/IDBLevelDBCoding.cpp:
(WebCore::IDBLevelDBCoding::encodeBool):

Source/WebKit/chromium:

Added tests for encodeBool/decodeBool.

* tests/IDBLevelDBCodingTest.cpp:
(IDBLevelDBCoding::TEST):
(IDBLevelDBCoding):


[email protected]
Review URL: https://chromiumcodereview.appspot.com/10377101

Modified Paths

Diff

Modified: branches/chromium/1132/Source/WebCore/Modules/indexeddb/IDBLevelDBCoding.cpp (116705 => 116706)


--- branches/chromium/1132/Source/WebCore/Modules/indexeddb/IDBLevelDBCoding.cpp	2012-05-11 00:02:04 UTC (rev 116705)
+++ branches/chromium/1132/Source/WebCore/Modules/indexeddb/IDBLevelDBCoding.cpp	2012-05-11 00:03:51 UTC (rev 116706)
@@ -180,7 +180,7 @@
 Vector<char> encodeBool(bool b)
 {
     Vector<char> ret(1);
-    ret.append(b ? 1 : 0);
+    ret[0] = b ? 1 : 0;
     return ret;
 }
 

Modified: branches/chromium/1132/Source/WebKit/chromium/tests/IDBLevelDBCodingTest.cpp (116705 => 116706)


--- branches/chromium/1132/Source/WebKit/chromium/tests/IDBLevelDBCodingTest.cpp	2012-05-11 00:02:04 UTC (rev 116705)
+++ branches/chromium/1132/Source/WebKit/chromium/tests/IDBLevelDBCodingTest.cpp	2012-05-11 00:03:51 UTC (rev 116706)
@@ -83,6 +83,20 @@
     EXPECT_EQ(expected, encodeByte(c));
 }
 
+TEST(IDBLevelDBCodingTest, EncodeBool)
+{
+    {
+        Vector<char> expected;
+        expected.append(1);
+        EXPECT_EQ(expected, encodeBool(true));
+    }
+    {
+        Vector<char> expected;
+        expected.append(0);
+        EXPECT_EQ(expected, encodeBool(false));
+    }
+}
+
 TEST(IDBLevelDBCodingTest, MaxIDBKey)
 {
     Vector<char> maxKey = maxIDBKey();
@@ -126,6 +140,20 @@
     EXPECT_EQ(static_cast<size_t>(4), encodeInt(0xffffffff).size());
 }
 
+TEST(IDBLevelDBCodingTest, DecodeBool)
+{
+    {
+        Vector<char> encoded;
+        encoded.append(1);
+        EXPECT_TRUE(decodeBool(encoded.data(), encoded.data() + encoded.size()));
+    }
+    {
+        Vector<char> encoded;
+        encoded.append(0);
+        EXPECT_FALSE(decodeBool(encoded.data(), encoded.data() + encoded.size()));
+    }
+}
+
 TEST(IDBLevelDBCodingTest, DecodeInt)
 {
     Vector<int64_t> testCases;
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to