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