Changeset 116333 in webkit


Ignore:
Timestamp:
May 7, 2012 11:54:48 AM (12 years ago)
Author:
jsbell@chromium.org
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):

Location:
trunk/Source
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r116332 r116333  
     12012-05-07  Joshua Bell  <jsbell@chromium.org>
     2
     3        IndexedDB: LevelDB coding for bools is broken
     4        https://bugs.webkit.org/show_bug.cgi?id=85810
     5
     6        Reviewed by Tony Chang.
     7
     8        Code was appending to a pre-sized Vector, rather than using an
     9        index setter. This caused uninitialized data to be written out.
     10        Issue was detected on the Chromium side in http://crbug.com/126388
     11
     12        Tests: webkit_unit_tests --gtest_filter='IDBLevelDBCodingTest.*codeBool'
     13
     14        * Modules/indexeddb/IDBLevelDBCoding.cpp:
     15        (WebCore::IDBLevelDBCoding::encodeBool):
     16
    1172012-05-07  Shawn Singh  <shawnsingh@chromium.org>
    218
  • trunk/Source/WebCore/Modules/indexeddb/IDBLevelDBCoding.cpp

    r116170 r116333  
    181181{
    182182    Vector<char> ret(1);
    183     ret.append(b ? 1 : 0);
     183    ret[0] = b ? 1 : 0;
    184184    return ret;
    185185}
  • trunk/Source/WebKit/chromium/ChangeLog

    r116332 r116333  
     12012-05-07  Joshua Bell  <jsbell@chromium.org>
     2
     3        IndexedDB: LevelDB coding for bools is broken
     4        https://bugs.webkit.org/show_bug.cgi?id=85810
     5
     6        Reviewed by Tony Chang.
     7
     8        Added tests for encodeBool/decodeBool.
     9
     10        * tests/IDBLevelDBCodingTest.cpp:
     11        (IDBLevelDBCoding::TEST):
     12        (IDBLevelDBCoding):
     13
    1142012-05-07  Shawn Singh  <shawnsingh@chromium.org>
    215
  • trunk/Source/WebKit/chromium/tests/IDBLevelDBCodingTest.cpp

    r101142 r116333  
    8484}
    8585
     86TEST(IDBLevelDBCodingTest, EncodeBool)
     87{
     88    {
     89        Vector<char> expected;
     90        expected.append(1);
     91        EXPECT_EQ(expected, encodeBool(true));
     92    }
     93    {
     94        Vector<char> expected;
     95        expected.append(0);
     96        EXPECT_EQ(expected, encodeBool(false));
     97    }
     98}
     99
    86100TEST(IDBLevelDBCodingTest, MaxIDBKey)
    87101{
     
    125139    EXPECT_EQ(static_cast<size_t>(2), encodeInt(256).size());
    126140    EXPECT_EQ(static_cast<size_t>(4), encodeInt(0xffffffff).size());
     141}
     142
     143TEST(IDBLevelDBCodingTest, DecodeBool)
     144{
     145    {
     146        Vector<char> encoded;
     147        encoded.append(1);
     148        EXPECT_TRUE(decodeBool(encoded.data(), encoded.data() + encoded.size()));
     149    }
     150    {
     151        Vector<char> encoded;
     152        encoded.append(0);
     153        EXPECT_FALSE(decodeBool(encoded.data(), encoded.data() + encoded.size()));
     154    }
    127155}
    128156
Note: See TracChangeset for help on using the changeset viewer.