summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Peter Collingbourne <pcc@google.com> 2021-04-29 21:09:27 +0000
committer Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> 2021-04-29 21:09:27 +0000
commit43ce684e3ba667697612f9bd894504e5cfaa2180 (patch)
tree68fb632025472190319e3e54e0861540908c1bdc
parent611a55f03da70968c65de54e61fb9ac176df7f31 (diff)
parentb16d968e541c16c64d73ef8b1231a60b318884a0 (diff)
Merge "Fix two problems in the ExecuteBinary function." am: e0561210b2 am: b16d968e54
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1677048 Change-Id: Ia06cfe69ef224be2cbe3abf32df3f83622481861
-rw-r--r--libs/androidfw/PosixUtils.cpp7
1 files changed, 5 insertions, 2 deletions
diff --git a/libs/androidfw/PosixUtils.cpp b/libs/androidfw/PosixUtils.cpp
index f1ab1493012a..4ec525a01da5 100644
--- a/libs/androidfw/PosixUtils.cpp
+++ b/libs/androidfw/PosixUtils.cpp
@@ -72,7 +72,8 @@ std::unique_ptr<ProcResult> ExecuteBinary(const std::vector<std::string>& argv)
argv0[i] = argv[i].c_str();
}
argv0[argv.size()] = nullptr;
- switch (fork()) {
+ int pid = fork();
+ switch (pid) {
case -1: // error
free(argv0);
PLOG(ERROR) << "fork";
@@ -104,8 +105,10 @@ std::unique_ptr<ProcResult> ExecuteBinary(const std::vector<std::string>& argv)
close(stdout[1]);
close(stderr[1]);
int status;
- wait(&status);
+ waitpid(pid, &status, 0);
if (!WIFEXITED(status)) {
+ close(stdout[0]);
+ close(stderr[0]);
return nullptr;
}
std::unique_ptr<ProcResult> result(new ProcResult());