From e373e596612eedf8b6321f0abc3ef09d8468460c Mon Sep 17 00:00:00 2001 From: topjohnwu Date: Mon, 25 Nov 2019 19:07:06 -0500 Subject: [PATCH] Make sure file descriptors are setup properly --- native/jni/core/daemon.cpp | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/native/jni/core/daemon.cpp b/native/jni/core/daemon.cpp index 49a22a419..d923b1671 100644 --- a/native/jni/core/daemon.cpp +++ b/native/jni/core/daemon.cpp @@ -100,6 +100,18 @@ static void *request_handler(void *args) { static void main_daemon() { android_logging(); + + int fd = xopen("/dev/null", O_WRONLY); + xdup2(fd, STDOUT_FILENO); + xdup2(fd, STDERR_FILENO); + if (fd > STDERR_FILENO) + close(fd); + fd = xopen("/dev/zero", O_RDONLY); + xdup2(fd, STDIN_FILENO); + if (fd > STDERR_FILENO) + close(fd); + close(fd); + setsid(); setcon("u:r:" SEPOL_PROC_DOMAIN ":s0"); restore_rootcon(); @@ -112,14 +124,6 @@ static void main_daemon() { }, true); } - int fd = xopen("/dev/null", O_RDWR | O_CLOEXEC); - xdup2(fd, STDOUT_FILENO); - xdup2(fd, STDERR_FILENO); - close(fd); - fd = xopen("/dev/zero", O_RDWR | O_CLOEXEC); - xdup2(fd, STDIN_FILENO); - close(fd); - LOGI(SHOW_VER(Magisk) " daemon started\n"); // Get server stat