From e2176118f4e7a9e2470310f978a40dbdcc904fb3 Mon Sep 17 00:00:00 2001 From: Josh Gao Date: Tue, 27 Feb 2018 16:10:29 -0800 Subject: [PATCH] adb: add a way to make the server intentionally leak. Add a way to test LeakSanitizer with the server by adding an environment variable that intentionally leaks. Test: ASAN_OPTIONS=detect_leaks=1:leak_check_at_exit=1 ADB_LEAK=1 adb server nodaemon Change-Id: I7255d45335fa009dc9e5de99dff67af52bd70e06 --- adb/client/main.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/adb/client/main.cpp b/adb/client/main.cpp index f28302b61..e5666bc8d 100644 --- a/adb/client/main.cpp +++ b/adb/client/main.cpp @@ -75,6 +75,11 @@ void adb_server_cleanup() { usb_cleanup(); } +static void intentionally_leak() { + void* p = ::operator new(1); + LOG(INFO) << "leaking pointer " << p; +} + int adb_server_main(int is_daemon, const std::string& socket_spec, int ack_reply_fd) { #if defined(_WIN32) // adb start-server starts us up with stdout and stderr hooked up to @@ -98,6 +103,11 @@ int adb_server_main(int is_daemon, const std::string& socket_spec, int ack_reply }); #endif + char* leak = getenv("ADB_LEAK"); + if (leak && strcmp(leak, "1") == 0) { + intentionally_leak(); + } + if (is_daemon) { close_stdin(); setup_daemon_logging();