| OLD | NEW |
| 1 // Copyright 2012 Google Inc. All Rights Reserved. | 1 // Copyright 2012 Google Inc. All Rights Reserved. |
| 2 // | 2 // |
| 3 // Licensed under the Apache License, Version 2.0 (the "License"); | 3 // Licensed under the Apache License, Version 2.0 (the "License"); |
| 4 // you may not use this file except in compliance with the License. | 4 // you may not use this file except in compliance with the License. |
| 5 // You may obtain a copy of the License at | 5 // You may obtain a copy of the License at |
| 6 // | 6 // |
| 7 // http://www.apache.org/licenses/LICENSE-2.0 | 7 // http://www.apache.org/licenses/LICENSE-2.0 |
| 8 // | 8 // |
| 9 // Unless required by applicable law or agreed to in writing, software | 9 // Unless required by applicable law or agreed to in writing, software |
| 10 // distributed under the License is distributed on an "AS IS" BASIS, | 10 // distributed under the License is distributed on an "AS IS" BASIS, |
| 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| 12 // See the License for the specific language governing permissions and | 12 // See the License for the specific language governing permissions and |
| 13 // limitations under the License. | 13 // limitations under the License. |
| 14 | 14 |
| 15 #include <windows.h> | 15 #include <windows.h> |
| 16 | 16 |
| 17 #include "gtest/gtest.h" | 17 #include "gtest/gtest.h" |
| 18 #include "syzygy/agent/asan/heap_checker.h" | 18 #include "syzygy/agent/asan/heap_checker.h" |
| 19 #include "syzygy/agent/asan/rtl_impl.h" | 19 #include "syzygy/agent/asan/rtl_impl.h" |
| 20 #include "syzygy/agent/asan/runtime.h" | 20 #include "syzygy/agent/asan/runtime.h" |
| 21 #include "syzygy/agent/asan/unittest_util.h" | 21 #include "syzygy/agent/asan/unittest_util.h" |
| 22 #include "syzygy/testing/laa.h" |
| 22 | 23 |
| 23 namespace agent { | 24 namespace agent { |
| 24 namespace asan { | 25 namespace asan { |
| 25 | 26 |
| 26 namespace { | 27 namespace { |
| 27 | 28 |
| 28 using testing::AsanBlockInfoVector; | 29 using testing::AsanBlockInfoVector; |
| 29 using testing::ClangMemoryAccessorTester; | 30 using testing::ClangMemoryAccessorTester; |
| 30 using testing::MemoryAccessorTester; | 31 using testing::MemoryAccessorTester; |
| 31 using testing::ScopedAsanAlloc; | 32 using testing::ScopedAsanAlloc; |
| (...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 263 | 264 |
| 264 tester_.tester()->set_expected_error_type(DOUBLE_FREE); | 265 tester_.tester()->set_expected_error_type(DOUBLE_FREE); |
| 265 EXPECT_FALSE(HeapFreeFunction(heap_, 0, mem_ptr)); | 266 EXPECT_FALSE(HeapFreeFunction(heap_, 0, mem_ptr)); |
| 266 EXPECT_TRUE(tester_.tester()->memory_error_detected()); | 267 EXPECT_TRUE(tester_.tester()->memory_error_detected()); |
| 267 EXPECT_TRUE(LogContains(kAttemptingDoubleFree)); | 268 EXPECT_TRUE(LogContains(kAttemptingDoubleFree)); |
| 268 EXPECT_TRUE(LogContains("previously allocated here")); | 269 EXPECT_TRUE(LogContains("previously allocated here")); |
| 269 EXPECT_TRUE(LogContains("freed here")); | 270 EXPECT_TRUE(LogContains("freed here")); |
| 270 } | 271 } |
| 271 | 272 |
| 272 TYPED_TEST(AsanRtlTypedTest, AsanCheckWildAccess) { | 273 TYPED_TEST(AsanRtlTypedTest, AsanCheckWildAccess) { |
| 274 TEST_ONLY_SUPPORTS_2G(); |
| 275 |
| 273 FARPROC check_access_fn = | 276 FARPROC check_access_fn = |
| 274 ::GetProcAddress(asan_rtl_, tester_.function_name()); | 277 ::GetProcAddress(asan_rtl_, tester_.function_name()); |
| 275 ASSERT_TRUE(check_access_fn != NULL); | 278 ASSERT_TRUE(check_access_fn != NULL); |
| 276 | 279 |
| 277 #ifndef _WIN64 | 280 #ifndef _WIN64 |
| 278 void* addr = reinterpret_cast<void*>(0x80000000); | 281 void* addr = reinterpret_cast<void*>(0x80000000); |
| 279 #else | 282 #else |
| 280 void* addr = reinterpret_cast<void*>(1ULL << 63); | 283 void* addr = reinterpret_cast<void*>(1ULL << 63); |
| 281 #endif | 284 #endif |
| 282 | 285 |
| (...skipping 452 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 735 EXPECT_EQ("Enabled", experiments["SyzyASANPageProtections"]); | 738 EXPECT_EQ("Enabled", experiments["SyzyASANPageProtections"]); |
| 736 EXPECT_EQ("Enabled", experiments["SyzyASANLargeBlockHeap"]); | 739 EXPECT_EQ("Enabled", experiments["SyzyASANLargeBlockHeap"]); |
| 737 | 740 |
| 738 // This implicitly asserts the full contents of the map by asserting | 741 // This implicitly asserts the full contents of the map by asserting |
| 739 // on the size after looking up the expected keys. | 742 // on the size after looking up the expected keys. |
| 740 EXPECT_EQ(2U, experiments.size()); | 743 EXPECT_EQ(2U, experiments.size()); |
| 741 } | 744 } |
| 742 | 745 |
| 743 } // namespace asan | 746 } // namespace asan |
| 744 } // namespace agent | 747 } // namespace agent |
| OLD | NEW |