Index: mojo/public/cpp/bindings/tests/buffer_unittest.cc |
diff --git a/mojo/public/cpp/bindings/tests/buffer_unittest.cc b/mojo/public/cpp/bindings/tests/buffer_unittest.cc |
index 49753e1a27d576a2f1a77b4296fd6cf8f1a5172d..7ef7520f5aec054eea41cdebbb3c9e37e7c222d5 100644 |
--- a/mojo/public/cpp/bindings/tests/buffer_unittest.cc |
+++ b/mojo/public/cpp/bindings/tests/buffer_unittest.cc |
@@ -43,6 +43,14 @@ TEST(ScratchBufferTest, Basic) { |
small = buf.Allocate(10); |
EXPECT_TRUE(IsZero(small, 10)); |
EXPECT_TRUE(small >= &buf && small < (&buf + sizeof(buf))); |
+ |
+ // And a request so large it will fail. |
+ void* fail = buf.Allocate(std::numeric_limits<size_t>::max() - 1024u); |
+ EXPECT_TRUE(!fail); |
+ |
+ // And a request so large it will overflow and fail. |
+ void* overflow = buf.Allocate(std::numeric_limits<size_t>::max() - 12u); |
+ EXPECT_TRUE(!overflow); |
} |
// Tests that Buffer::current() returns the correct value. |
@@ -125,6 +133,10 @@ TEST(FixedBufferTest, TooBig) { |
// Move the cursor forward. |
EXPECT_NE(reinterpret_cast<void*>(0), buf.Allocate(16)); |
+ // A lot too large. |
+ EXPECT_EQ(reinterpret_cast<void*>(0), |
+ buf.Allocate(std::numeric_limits<size_t>::max() - 1024u)); |
+ |
// A lot too large, leading to possible integer overflow. |
EXPECT_EQ(reinterpret_cast<void*>(0), |
buf.Allocate(std::numeric_limits<size_t>::max() - 8u)); |