diff options
author | rvargas@google.com <rvargas@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-11-15 19:31:23 +0000 |
---|---|---|
committer | rvargas@google.com <rvargas@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-11-15 19:31:23 +0000 |
commit | d87f8e6f287c0c8a79cf18e13a7c6debd3a77bb3 (patch) | |
tree | 1a72f502c7e0e91edaea9feac382637afb764017 /base/pickle_unittest.cc | |
parent | af1c66ad268c9b8ff8c83ed9522e0a1215411917 (diff) | |
download | chromium_src-d87f8e6f287c0c8a79cf18e13a7c6debd3a77bb3.zip chromium_src-d87f8e6f287c0c8a79cf18e13a7c6debd3a77bb3.tar.gz chromium_src-d87f8e6f287c0c8a79cf18e13a7c6debd3a77bb3.tar.bz2 |
Pickle: handle invalid data on 64 bit systems.
There was a problem with pointer arithmetic for 64 bit systems
so invalid data was not properly detected. Now we do explicit tests.
BUG=56449
TEST=base_unittests
Review URL: http://codereview.chromium.org/4716006
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@66149 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/pickle_unittest.cc')
-rw-r--r-- | base/pickle_unittest.cc | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/base/pickle_unittest.cc b/base/pickle_unittest.cc index aea3830..fdc0664 100644 --- a/base/pickle_unittest.cc +++ b/base/pickle_unittest.cc @@ -87,6 +87,39 @@ TEST(PickleTest, EncodeDecode) { VerifyResult(pickle3); } +// Tests that we can handle really small buffers. +TEST(PickleTest, SmallBuffer) { + scoped_array<char> buffer(new char[1]); + + // We should not touch the buffer. + Pickle pickle(buffer.get(), 1); + + void* iter = NULL; + int data; + EXPECT_FALSE(pickle.ReadInt(&iter, &data)); +} + +// Tests that we can handle improper headers. +TEST(PickleTest, BigSize) { + int buffer[] = { 0x56035200, 25, 40, 50 }; + + Pickle pickle(reinterpret_cast<char*>(buffer), sizeof(buffer)); + + void* iter = NULL; + int data; + EXPECT_FALSE(pickle.ReadInt(&iter, &data)); +} + +TEST(PickleTest, UnalignedSize) { + int buffer[] = { 10, 25, 40, 50 }; + + Pickle pickle(reinterpret_cast<char*>(buffer), sizeof(buffer)); + + void* iter = NULL; + int data; + EXPECT_FALSE(pickle.ReadInt(&iter, &data)); +} + TEST(PickleTest, ZeroLenStr) { Pickle pickle; EXPECT_TRUE(pickle.WriteString("")); |