Changeset 254971 in webkit


Ignore:
Timestamp:
Jan 23, 2020 2:58:48 AM (4 years ago)
Author:
commit-queue@webkit.org
Message:

KeyedDecoderGeneric crashes when it accesses a data with empty string key.
https://bugs.webkit.org/show_bug.cgi?id=206572

Patch by Takashi Komori <Takashi.Komori@sony.com> on 2020-01-23
Reviewed by Fujii Hironori.

Source/WebCore:

Changed null string which was used for HasMap key to empty string.

Test: TestWebKitAPI/Tests/WebCore/KeyedCoding.cpp

  • platform/generic/KeyedDecoderGeneric.cpp:

(WebCore::readString):

Tools:

  • TestWebKitAPI/Tests/WebCore/KeyedCoding.cpp:

(TestWebKitAPI::TEST):

Location:
trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r254970 r254971  
     12020-01-23  Takashi Komori  <Takashi.Komori@sony.com>
     2
     3        KeyedDecoderGeneric crashes when it accesses a data with empty string key.
     4        https://bugs.webkit.org/show_bug.cgi?id=206572
     5
     6        Reviewed by Fujii Hironori.
     7
     8        Changed null string which was used for HasMap key to empty string.
     9
     10        Test: TestWebKitAPI/Tests/WebCore/KeyedCoding.cpp
     11
     12        * platform/generic/KeyedDecoderGeneric.cpp:
     13        (WebCore::readString):
     14
    1152020-01-23  Yusuke Suzuki  <ysuzuki@apple.com>
    216
  • trunk/Source/WebCore/platform/generic/KeyedDecoderGeneric.cpp

    r254811 r254971  
    5454    if (!decoder.decode(size))
    5555        return false;
     56    if (!size) {
     57        result = emptyString();
     58        return true;
     59    }
     60
    5661    Vector<uint8_t> buffer(size);
    5762    if (!decoder.decodeFixedLengthData(buffer.data(), size))
    5863        return false;
    5964    result = String::fromUTF8(buffer.data(), size);
     65    if (result.isNull())
     66        return false;
     67
    6068    return true;
    6169}
  • trunk/Tools/ChangeLog

    r254969 r254971  
     12020-01-23  Takashi Komori  <Takashi.Komori@sony.com>
     2
     3        KeyedDecoderGeneric crashes when it accesses a data with empty string key.
     4        https://bugs.webkit.org/show_bug.cgi?id=206572
     5
     6        Reviewed by Fujii Hironori.
     7
     8        * TestWebKitAPI/Tests/WebCore/KeyedCoding.cpp:
     9        (TestWebKitAPI::TEST):
     10
    1112020-01-23  Tuomas Karkkainen  <tuomas.webkit@apple.com>
    212
  • trunk/Tools/TestWebKitAPI/Tests/WebCore/KeyedCoding.cpp

    r254811 r254971  
    276276    EXPECT_EQ(users, decodedUsers);
    277277}
    278 }
     278
     279TEST(KeyedCoding, SetAndGetWithEmptyKey)
     280{
     281    auto encoder = WebCore::KeyedEncoder::encoder();
     282    encoder->encodeBool("", false);
     283
     284    auto encodedBuffer = encoder->finishEncoding();
     285    auto decoder = WebCore::KeyedDecoder::decoder(reinterpret_cast<const uint8_t*>(encodedBuffer->data()), encodedBuffer->size());
     286
     287    bool success, boolValue;
     288    success = decoder->decodeBool("", boolValue);
     289
     290    EXPECT_TRUE(success);
     291    EXPECT_EQ(false, boolValue);
     292}
     293}
Note: See TracChangeset for help on using the changeset viewer.