From e31a7a4ce4a294e6ceafc30efd964dea35366131 Mon Sep 17 00:00:00 2001 From: Josh Gao Date: Thu, 23 Jun 2016 11:21:11 -0700 Subject: [PATCH] adb: fix fd leak when shell fails to create a thread. Bug: http://b/29565233 Change-Id: Ia59c6dbe5ac033425c11739579e85cbcad1170d1 --- adb/shell_service.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/adb/shell_service.cpp b/adb/shell_service.cpp index d5132ebcb..d83622cbf 100644 --- a/adb/shell_service.cpp +++ b/adb/shell_service.cpp @@ -756,13 +756,14 @@ int StartSubprocess(const char* name, const char* terminal_type, return ReportError(protocol, error); } - int local_socket = subprocess->ReleaseLocalSocket(); - D("subprocess creation successful: local_socket_fd=%d, pid=%d", local_socket, subprocess->pid()); + unique_fd local_socket(subprocess->ReleaseLocalSocket()); + D("subprocess creation successful: local_socket_fd=%d, pid=%d", local_socket.get(), + subprocess->pid()); if (!Subprocess::StartThread(std::move(subprocess), &error)) { LOG(ERROR) << "failed to start subprocess management thread: " << error; return ReportError(protocol, error); } - return local_socket; + return local_socket.release(); }