From 17ba68d0cde001c2e73a310ee9a895a5b3bb5d32 Mon Sep 17 00:00:00 2001 From: Elliott Hughes Date: Fri, 19 Feb 2016 18:13:02 -0800 Subject: [PATCH] Clean up CLOEXEC in debuggerd. Change-Id: I1cd75f6a8f98e99f4a4fedfc706103ce34035765 --- debuggerd/debuggerd.cpp | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/debuggerd/debuggerd.cpp b/debuggerd/debuggerd.cpp index 294bda90b..ac1c58c48 100644 --- a/debuggerd/debuggerd.cpp +++ b/debuggerd/debuggerd.cpp @@ -685,10 +685,9 @@ static int do_server() { act.sa_flags = SA_NOCLDWAIT; sigaction(SIGCHLD, &act, 0); - int s = socket_local_server(SOCKET_NAME, ANDROID_SOCKET_NAMESPACE_ABSTRACT, SOCK_STREAM); - if (s < 0) - return 1; - fcntl(s, F_SETFD, FD_CLOEXEC); + int s = socket_local_server(SOCKET_NAME, ANDROID_SOCKET_NAMESPACE_ABSTRACT, + SOCK_STREAM | SOCK_CLOEXEC); + if (s == -1) return 1; ALOGI("debuggerd: starting\n"); @@ -698,14 +697,12 @@ static int do_server() { socklen_t alen = sizeof(ss); ALOGV("waiting for connection\n"); - int fd = accept(s, addrp, &alen); - if (fd < 0) { - ALOGV("accept failed: %s\n", strerror(errno)); + int fd = accept4(s, addrp, &alen, SOCK_CLOEXEC); + if (fd == -1) { + ALOGE("accept failed: %s\n", strerror(errno)); continue; } - fcntl(fd, F_SETFD, FD_CLOEXEC); - handle_request(fd); } return 0;