diff --git a/services/init/standard/fd_holder_service.c b/services/init/standard/fd_holder_service.c index 71a6bf90cd064742fc04c766382ca593dabd67e7..87a77af9a686bf98bf6f0a3185da4c72634799ed 100644 --- a/services/init/standard/fd_holder_service.c +++ b/services/init/standard/fd_holder_service.c @@ -215,14 +215,16 @@ static void HandlerFdHolder(int sock) if (strcmp(action, ACTION_HOLD) == 0) { INIT_LOGI("Service \' %s \' request init to %s fds", serviceName, action); if (HandlerHoldFds(service, fds, fdCount, pollStr) < 0) { + CloseFds(fds, fdCount); } } else if (strcmp(action, ACTION_GET) == 0) { // In this case, ignore fds, just close them if fd passed to init + CloseFds(fds, fdCount); HandlerGetFds(sock, service); } else { INIT_LOGE("Unexpected action: %s", action); + CloseFds(fds, fdCount); } - CloseFds(fds, fdCount); FreeFds(fds); FreeStringVector(msg, msgCount); } diff --git a/test/exec_test/fd_holder_test.cfg b/test/exec_test/fd_holder_test.cfg index ab4183d8b2ac5c4e111b4c2ecf29fb94cddd2b9b..e7eaffc40de282658d43a03fd2e1da997eccc138 100644 --- a/test/exec_test/fd_holder_test.cfg +++ b/test/exec_test/fd_holder_test.cfg @@ -11,7 +11,7 @@ "name" : "fd_holder_test", "path" : ["/system/bin/fd_holder_test", "save", "fd_holder_test", "/data/test/1", "/data/test/2"], "uid" : "root", - "gid" : "system", + "gid" : "system" } ] } \ No newline at end of file