summaryrefslogtreecommitdiffstats
path: root/base/pickle_unittest.cc
diff options
context:
space:
mode:
authorrvargas@google.com <rvargas@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2010-11-15 19:31:23 +0000
committerrvargas@google.com <rvargas@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2010-11-15 19:31:23 +0000
commitd87f8e6f287c0c8a79cf18e13a7c6debd3a77bb3 (patch)
tree1a72f502c7e0e91edaea9feac382637afb764017 /base/pickle_unittest.cc
parentaf1c66ad268c9b8ff8c83ed9522e0a1215411917 (diff)
downloadchromium_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.cc33
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(""));