diff options
author | Tianjie Xu <xunchang@google.com> | 2017-03-22 19:32:56 +0100 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2017-03-22 19:32:57 +0100 |
commit | d882b8892a1592101b901dd474de41e56c31b17b (patch) | |
tree | d176a58d231df25039adf76bb11a2d68b7260079 /updater | |
parent | Merge "Refactor asn1_decoder functions into a class." (diff) | |
parent | Fix the permission of stashed blocks created by updater (diff) | |
download | android_bootable_recovery-d882b8892a1592101b901dd474de41e56c31b17b.tar android_bootable_recovery-d882b8892a1592101b901dd474de41e56c31b17b.tar.gz android_bootable_recovery-d882b8892a1592101b901dd474de41e56c31b17b.tar.bz2 android_bootable_recovery-d882b8892a1592101b901dd474de41e56c31b17b.tar.lz android_bootable_recovery-d882b8892a1592101b901dd474de41e56c31b17b.tar.xz android_bootable_recovery-d882b8892a1592101b901dd474de41e56c31b17b.tar.zst android_bootable_recovery-d882b8892a1592101b901dd474de41e56c31b17b.zip |
Diffstat (limited to 'updater')
-rw-r--r-- | updater/blockimg.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/updater/blockimg.cpp b/updater/blockimg.cpp index 0fa83d9d5..8dbd8c7d1 100644 --- a/updater/blockimg.cpp +++ b/updater/blockimg.cpp @@ -44,6 +44,7 @@ #include <android-base/unique_fd.h> #include <applypatch/applypatch.h> #include <openssl/sha.h> +#include <private/android_filesystem_config.h> #include <ziparchive/zip_archive.h> #include "edify/expr.h" @@ -772,6 +773,11 @@ static int WriteStash(const std::string& base, const std::string& id, int blocks return -1; } + if (fchown(fd, AID_SYSTEM, AID_SYSTEM) != 0) { // system user + PLOG(ERROR) << "failed to chown \"" << fn << "\""; + return -1; + } + if (write_all(fd, buffer, blocks * BLOCKSIZE) == -1) { return -1; } @@ -841,6 +847,12 @@ static int CreateStash(State* state, size_t maxblocks, const std::string& blockd return -1; } + if (chown(dirname.c_str(), AID_SYSTEM, AID_SYSTEM) != 0) { // system user + ErrorAbort(state, kStashCreationFailure, "chown \"%s\" failed: %s\n", dirname.c_str(), + strerror(errno)); + return -1; + } + if (CacheSizeCheck(max_stash_size) != 0) { ErrorAbort(state, kStashCreationFailure, "not enough space for stash (%zu needed)\n", max_stash_size); |