Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(302)

Unified Diff: syzygy/agent/asan/shadow_unittest.cc

Issue 2379023002: [SyzyAsan] Fix overflow error in ShadowWalker for 4GB 32-bit processes. (Closed)
Patch Set: Fix comments. Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« syzygy/agent/asan/shadow.cc ('K') | « syzygy/agent/asan/shadow.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: syzygy/agent/asan/shadow_unittest.cc
diff --git a/syzygy/agent/asan/shadow_unittest.cc b/syzygy/agent/asan/shadow_unittest.cc
index 233e067dc93cae16a750273fd787edc4b609596d..c666f9285aa35d7a6d70eb1d72f36671e3140fdc 100644
--- a/syzygy/agent/asan/shadow_unittest.cc
+++ b/syzygy/agent/asan/shadow_unittest.cc
@@ -79,11 +79,15 @@ void ShadowUtilTest() {
// A derived class to expose protected members for unit-testing.
class TestShadow : public Shadow {
public:
- TestShadow() : Shadow(kTestShadowSize) {
+ TestShadow() : Shadow(kDefaultTestShadowSize) {
+ }
+
+ TestShadow(size_t digits, size_t power)
+ : Shadow(digits << (power - kShadowRatioLog)) {
}
// We'll simulate memory as being 1GB in size.
- static const size_t kTestShadowSize =
+ static const size_t kDefaultTestShadowSize =
(1 * 1024 * 1024 * 1024) >> kShadowRatioLog;
// Protected functions that we want to unittest directly.
@@ -749,6 +753,22 @@ class ShadowWalkerTest : public testing::Test {
} // namespace
+TEST_F(ShadowWalkerTest, WalkEmptyRange) {
+ ShadowWalker w(&test_shadow, true, &test_shadow, &test_shadow);
+ BlockInfo i = {};
+ EXPECT_FALSE(w.Next(&i));
+}
+
+TEST_F(ShadowWalkerTest, WalkRangeAtEndOfAddressSpace) {
+ TestShadow ts1(4, 30); // 4GB.
+ ShadowWalker w(
+ &ts1, true,
+ reinterpret_cast<const void*>(ts1.memory_size() - 100),
+ reinterpret_cast<const void*>(ts1.memory_size()));
+ BlockInfo i = {};
+ EXPECT_FALSE(w.Next(&i));
+}
+
TEST_F(ShadowWalkerTest, WalksNonNestedBlocks) {
BlockLayout l = {};
EXPECT_TRUE(BlockPlanLayout(kShadowRatio, kShadowRatio, 7, 0, 0, &l));
« syzygy/agent/asan/shadow.cc ('K') | « syzygy/agent/asan/shadow.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698