diff options
author | Matthew Bouyack <mbouyack@google.com> | 2016-09-20 19:08:42 -0700 |
---|---|---|
committer | Matthew Bouyack <mbouyack@google.com> | 2016-09-21 10:06:31 -0700 |
commit | c8db4817809e163d887f7955a03ad0f97159f12b (patch) | |
tree | 9d3fc06926cabbc88ec7183437fd49cfcfb9022f /install.cpp | |
parent | 54881abb52151ab9a4340e268c81fd3e644e9018 (diff) |
Fail gracefully when we fail to fork the update binary
This change was original made in cw-f-dev but caused failures in
nyc-mr1-dev-plus-aosp due to lack of support for 'LOGE'
This version of the change uses the new 'LOG(ERROR)' style logging
instead.
See bug b/31395655
Test: attempt a memory intensive incremental OTA on a low-memory device
Change-Id: Ia87d989a66b0ce3f48e862abf9b9d6943f70e554
Diffstat (limited to 'install.cpp')
-rw-r--r-- | install.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/install.cpp b/install.cpp index 71ad71f6..d600ea33 100644 --- a/install.cpp +++ b/install.cpp @@ -369,6 +369,14 @@ try_update_binary(const char* path, ZipArchive* zip, bool* wipe_cache, } pid_t pid = fork(); + + if (pid == -1) { + close(pipefd[0]); + close(pipefd[1]); + PLOG(ERROR) << "Failed to fork update binary"; + return INSTALL_ERROR; + } + if (pid == 0) { umask(022); close(pipefd[0]); |