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