summaryrefslogtreecommitdiff
path: root/cmds/dumpstate/utils.cpp
diff options
context:
space:
mode:
author Felipe Leme <felipeal@google.com> 2016-03-29 13:29:11 -0700
committer Felipe Leme <felipeal@google.com> 2016-03-29 13:56:47 -0700
commitbaa85bd893665a48aee73d7ca7b73cd39b48f998 (patch)
treeda9667f142f84a2d4bafcf09ee34d5d3b77fe8a5 /cmds/dumpstate/utils.cpp
parentabddf727041d2ea0e678442b2d7905afc8b33bd4 (diff)
Call _exit() instead of exit() on child failure.
As explained on man _exit: "The function _exit() terminates the calling process "immediately". Any open file descriptors belonging to the process are closed;" If exit() is called instead, the resulting zip file will be corrupted. BUG: 27900023 BUG: 27804637 Change-Id: I6591749603753d6016f350c629b7082cf6780ae2
Diffstat (limited to 'cmds/dumpstate/utils.cpp')
-rw-r--r--cmds/dumpstate/utils.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/cmds/dumpstate/utils.cpp b/cmds/dumpstate/utils.cpp
index 8129852a24..8c0e840050 100644
--- a/cmds/dumpstate/utils.cpp
+++ b/cmds/dumpstate/utils.cpp
@@ -746,7 +746,8 @@ int run_command_always(const char *title, bool drop_root, int timeout_seconds, c
// it's safer to exit dumpstate.
MYLOGD("execvp on command '%s' failed (error: %s)", command, strerror(errno));
fflush(stdout);
- exit(EXIT_FAILURE);
+ // Must call _exit (instead of exit), otherwise it will corrupt the zip file.
+ _exit(EXIT_FAILURE);
}
/* handle parent case */