diff options
Diffstat (limited to 'libunwindstack/tests/MemoryRemoteTest.cpp')
-rw-r--r-- | libunwindstack/tests/MemoryRemoteTest.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/libunwindstack/tests/MemoryRemoteTest.cpp b/libunwindstack/tests/MemoryRemoteTest.cpp index 7664c3e00..e48edf7e5 100644 --- a/libunwindstack/tests/MemoryRemoteTest.cpp +++ b/libunwindstack/tests/MemoryRemoteTest.cpp @@ -33,6 +33,8 @@ #include "Memory.h" +#include "MemoryFake.h" + class MemoryRemoteTest : public ::testing::Test { protected: static uint64_t NanoTime() { @@ -121,6 +123,9 @@ TEST_F(MemoryRemoteTest, read_fail) { ASSERT_TRUE(remote.Read(reinterpret_cast<uint64_t>(src) + pagesize - 1, dst.data(), 1)); ASSERT_FALSE(remote.Read(reinterpret_cast<uint64_t>(src) + pagesize - 4, dst.data(), 8)); + // Check overflow condition is caught properly. + ASSERT_FALSE(remote.Read(UINT64_MAX - 100, dst.data(), 200)); + ASSERT_EQ(0, munmap(src, pagesize)); ASSERT_TRUE(Detach(pid)); @@ -128,6 +133,14 @@ TEST_F(MemoryRemoteTest, read_fail) { kill(pid, SIGKILL); } +TEST_F(MemoryRemoteTest, read_overflow) { + MemoryFakeRemote remote; + + // Check overflow condition is caught properly. + std::vector<uint8_t> dst(200); + ASSERT_FALSE(remote.Read(UINT64_MAX - 100, dst.data(), 200)); +} + TEST_F(MemoryRemoteTest, read_illegal) { pid_t pid; if ((pid = fork()) == 0) { |