diff options
Diffstat (limited to 'libc/malloc_debug/tests/malloc_debug_config_tests.cpp')
-rw-r--r-- | libc/malloc_debug/tests/malloc_debug_config_tests.cpp | 52 |
1 files changed, 37 insertions, 15 deletions
diff --git a/libc/malloc_debug/tests/malloc_debug_config_tests.cpp b/libc/malloc_debug/tests/malloc_debug_config_tests.cpp index ee8fe0691..460353583 100644 --- a/libc/malloc_debug/tests/malloc_debug_config_tests.cpp +++ b/libc/malloc_debug/tests/malloc_debug_config_tests.cpp @@ -135,6 +135,10 @@ std::string usage_string( "6 malloc_debug This option only has meaning if the record_allocs options has been specified.\n" "6 malloc_debug This is the name of the file to which recording information will be dumped.\n" "6 malloc_debug The default is /data/local/tmp/record_allocs.txt.\n" + "6 malloc_debug \n" + "6 malloc_debug verify_pointers\n" + "6 malloc_debug A lightweight way to verify that free/malloc_usable_size/realloc\n" + "6 malloc_debug are passed valid pointers.\n" ); TEST_F(MallocDebugConfigTest, unknown_option) { @@ -250,15 +254,15 @@ TEST_F(MallocDebugConfigTest, multiple_options) { TEST_F(MallocDebugConfigTest, front_guard) { ASSERT_TRUE(InitConfig("front_guard=48")) << getFakeLogPrint(); - ASSERT_EQ(FRONT_GUARD, config->options()); + ASSERT_EQ(FRONT_GUARD | TRACK_ALLOCS, config->options()); ASSERT_EQ(48U, config->front_guard_bytes()); ASSERT_TRUE(InitConfig("front_guard")) << getFakeLogPrint(); - ASSERT_EQ(FRONT_GUARD, config->options()); + ASSERT_EQ(FRONT_GUARD | TRACK_ALLOCS, config->options()); ASSERT_EQ(32U, config->front_guard_bytes()); ASSERT_TRUE(InitConfig("front_guard=39")) << getFakeLogPrint(); - ASSERT_EQ(FRONT_GUARD, config->options()); + ASSERT_EQ(FRONT_GUARD | TRACK_ALLOCS, config->options()); #if defined(__LP64__) ASSERT_EQ(48U, config->front_guard_bytes()); #else @@ -266,7 +270,7 @@ TEST_F(MallocDebugConfigTest, front_guard) { #endif ASSERT_TRUE(InitConfig("front_guard=41")) << getFakeLogPrint(); - ASSERT_EQ(FRONT_GUARD, config->options()); + ASSERT_EQ(FRONT_GUARD | TRACK_ALLOCS, config->options()); ASSERT_EQ(48U, config->front_guard_bytes()); ASSERT_STREQ("", getFakeLogBuf().c_str()); @@ -275,11 +279,11 @@ TEST_F(MallocDebugConfigTest, front_guard) { TEST_F(MallocDebugConfigTest, rear_guard) { ASSERT_TRUE(InitConfig("rear_guard=50")) << getFakeLogPrint(); - ASSERT_EQ(REAR_GUARD, config->options()); + ASSERT_EQ(REAR_GUARD | TRACK_ALLOCS, config->options()); ASSERT_EQ(50U, config->rear_guard_bytes()); ASSERT_TRUE(InitConfig("rear_guard")) << getFakeLogPrint(); - ASSERT_EQ(REAR_GUARD, config->options()); + ASSERT_EQ(REAR_GUARD | TRACK_ALLOCS, config->options()); ASSERT_EQ(32U, config->rear_guard_bytes()); ASSERT_STREQ("", getFakeLogBuf().c_str()); @@ -288,12 +292,12 @@ TEST_F(MallocDebugConfigTest, rear_guard) { TEST_F(MallocDebugConfigTest, guard) { ASSERT_TRUE(InitConfig("guard=32")) << getFakeLogPrint(); - ASSERT_EQ(FRONT_GUARD | REAR_GUARD, config->options()); + ASSERT_EQ(FRONT_GUARD | REAR_GUARD | TRACK_ALLOCS, config->options()); ASSERT_EQ(32U, config->front_guard_bytes()); ASSERT_EQ(32U, config->rear_guard_bytes()); ASSERT_TRUE(InitConfig("guard")) << getFakeLogPrint(); - ASSERT_EQ(FRONT_GUARD | REAR_GUARD, config->options()); + ASSERT_EQ(FRONT_GUARD | REAR_GUARD | TRACK_ALLOCS, config->options()); ASSERT_EQ(32U, config->front_guard_bytes()); ASSERT_EQ(32U, config->rear_guard_bytes()); @@ -465,13 +469,13 @@ TEST_F(MallocDebugConfigTest, expand_alloc) { TEST_F(MallocDebugConfigTest, free_track) { ASSERT_TRUE(InitConfig("free_track=1234")) << getFakeLogPrint(); - ASSERT_EQ(FREE_TRACK | FILL_ON_FREE, config->options()); + ASSERT_EQ(FREE_TRACK | FILL_ON_FREE | TRACK_ALLOCS, config->options()); ASSERT_EQ(1234U, config->free_track_allocations()); ASSERT_EQ(SIZE_MAX, config->fill_on_free_bytes()); ASSERT_EQ(16U, config->free_track_backtrace_num_frames()); ASSERT_TRUE(InitConfig("free_track")) << getFakeLogPrint(); - ASSERT_EQ(FREE_TRACK | FILL_ON_FREE, config->options()); + ASSERT_EQ(FREE_TRACK | FILL_ON_FREE | TRACK_ALLOCS, config->options()); ASSERT_EQ(100U, config->free_track_allocations()); ASSERT_EQ(SIZE_MAX, config->fill_on_free_bytes()); ASSERT_EQ(16U, config->free_track_backtrace_num_frames()); @@ -482,20 +486,20 @@ TEST_F(MallocDebugConfigTest, free_track) { TEST_F(MallocDebugConfigTest, free_track_and_fill_on_free) { ASSERT_TRUE(InitConfig("free_track=1234 fill_on_free=32")) << getFakeLogPrint(); - ASSERT_EQ(FREE_TRACK | FILL_ON_FREE, config->options()); + ASSERT_EQ(FREE_TRACK | FILL_ON_FREE | TRACK_ALLOCS, config->options()); ASSERT_EQ(1234U, config->free_track_allocations()); ASSERT_EQ(32U, config->fill_on_free_bytes()); ASSERT_EQ(16U, config->free_track_backtrace_num_frames()); ASSERT_TRUE(InitConfig("free_track fill_on_free=60")) << getFakeLogPrint(); - ASSERT_EQ(FREE_TRACK | FILL_ON_FREE, config->options()); + ASSERT_EQ(FREE_TRACK | FILL_ON_FREE | TRACK_ALLOCS, config->options()); ASSERT_EQ(100U, config->free_track_allocations()); ASSERT_EQ(60U, config->fill_on_free_bytes()); ASSERT_EQ(16U, config->free_track_backtrace_num_frames()); // Now reverse the arguments. ASSERT_TRUE(InitConfig("fill_on_free=32 free_track=1234")) << getFakeLogPrint(); - ASSERT_EQ(FREE_TRACK | FILL_ON_FREE, config->options()); + ASSERT_EQ(FREE_TRACK | FILL_ON_FREE | TRACK_ALLOCS, config->options()); ASSERT_EQ(1234U, config->free_track_allocations()); ASSERT_EQ(32U, config->fill_on_free_bytes()); ASSERT_EQ(16U, config->free_track_backtrace_num_frames()); @@ -530,11 +534,11 @@ TEST_F(MallocDebugConfigTest, free_track_backtrace_num_frames_zero) { TEST_F(MallocDebugConfigTest, free_track_backtrace_num_frames_and_free_track) { ASSERT_TRUE(InitConfig("free_track free_track_backtrace_num_frames=123")) << getFakeLogPrint(); - ASSERT_EQ(FREE_TRACK | FILL_ON_FREE, config->options()); + ASSERT_EQ(FREE_TRACK | FILL_ON_FREE | TRACK_ALLOCS, config->options()); ASSERT_EQ(123U, config->free_track_backtrace_num_frames()); ASSERT_TRUE(InitConfig("free_track free_track_backtrace_num_frames")) << getFakeLogPrint(); - ASSERT_EQ(FREE_TRACK | FILL_ON_FREE, config->options()); + ASSERT_EQ(FREE_TRACK | FILL_ON_FREE | TRACK_ALLOCS, config->options()); ASSERT_EQ(16U, config->free_track_backtrace_num_frames()); ASSERT_STREQ("", getFakeLogBuf().c_str()); @@ -559,6 +563,24 @@ TEST_F(MallocDebugConfigTest, leak_track_fail) { ASSERT_STREQ((log_msg + usage_string).c_str(), getFakeLogPrint().c_str()); } +TEST_F(MallocDebugConfigTest, verify_pointers) { + ASSERT_TRUE(InitConfig("verify_pointers")) << getFakeLogPrint(); + ASSERT_EQ(TRACK_ALLOCS, config->options()); + + ASSERT_STREQ("", getFakeLogBuf().c_str()); + ASSERT_STREQ("", getFakeLogPrint().c_str()); +} + +TEST_F(MallocDebugConfigTest, verify_pointers_fail) { + ASSERT_FALSE(InitConfig("verify_pointers=200")) << getFakeLogPrint(); + + ASSERT_STREQ("", getFakeLogBuf().c_str()); + std::string log_msg( + "6 malloc_debug malloc_testing: value set for option 'verify_pointers' " + "which does not take a value\n"); + ASSERT_STREQ((log_msg + usage_string).c_str(), getFakeLogPrint().c_str()); +} + TEST_F(MallocDebugConfigTest, record_allocs) { ASSERT_TRUE(InitConfig("record_allocs=1234")) << getFakeLogPrint(); ASSERT_EQ(RECORD_ALLOCS, config->options()); |