Title: [116333] trunk/Source
Revision
116333
Author
[email protected]
Date
2012-05-07 11:54:48 -0700 (Mon, 07 May 2012)

Log Message

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):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (116332 => 116333)


--- trunk/Source/WebCore/ChangeLog	2012-05-07 18:48:06 UTC (rev 116332)
+++ trunk/Source/WebCore/ChangeLog	2012-05-07 18:54:48 UTC (rev 116333)
@@ -1,3 +1,19 @@
+2012-05-07  Joshua Bell  <[email protected]>
+
+        IndexedDB: LevelDB coding for bools is broken
+        https://bugs.webkit.org/show_bug.cgi?id=85810
+
+        Reviewed by Tony Chang.
+
+        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):
+
 2012-05-07  Shawn Singh  <[email protected]>
 
         [chromium] CCMathUtil projectPoint needs to avoid divide-by-zero

Modified: trunk/Source/WebCore/Modules/indexeddb/IDBLevelDBCoding.cpp (116332 => 116333)


--- trunk/Source/WebCore/Modules/indexeddb/IDBLevelDBCoding.cpp	2012-05-07 18:48:06 UTC (rev 116332)
+++ trunk/Source/WebCore/Modules/indexeddb/IDBLevelDBCoding.cpp	2012-05-07 18:54:48 UTC (rev 116333)
@@ -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: trunk/Source/WebKit/chromium/ChangeLog (116332 => 116333)


--- trunk/Source/WebKit/chromium/ChangeLog	2012-05-07 18:48:06 UTC (rev 116332)
+++ trunk/Source/WebKit/chromium/ChangeLog	2012-05-07 18:54:48 UTC (rev 116333)
@@ -1,3 +1,16 @@
+2012-05-07  Joshua Bell  <[email protected]>
+
+        IndexedDB: LevelDB coding for bools is broken
+        https://bugs.webkit.org/show_bug.cgi?id=85810
+
+        Reviewed by Tony Chang.
+
+        Added tests for encodeBool/decodeBool.
+
+        * tests/IDBLevelDBCodingTest.cpp:
+        (IDBLevelDBCoding::TEST):
+        (IDBLevelDBCoding):
+
 2012-05-07  Shawn Singh  <[email protected]>
 
         [chromium] CCMathUtil projectPoint needs to avoid divide-by-zero

Modified: trunk/Source/WebKit/chromium/tests/IDBLevelDBCodingTest.cpp (116332 => 116333)


--- trunk/Source/WebKit/chromium/tests/IDBLevelDBCodingTest.cpp	2012-05-07 18:48:06 UTC (rev 116332)
+++ trunk/Source/WebKit/chromium/tests/IDBLevelDBCodingTest.cpp	2012-05-07 18:54:48 UTC (rev 116333)
@@ -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