diff options
author | Tianjie Xu <xunchang@google.com> | 2017-03-22 19:36:14 +0100 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2017-03-22 19:36:14 +0100 |
commit | deb2a29a4279e23cfa635232935b4265ff84f06a (patch) | |
tree | 54fc6de5ecceec02ddc31560aaae69e51c7dca18 /updater/blockimg.cpp | |
parent | Merge "Refactor asn1_decoder functions into a class." (diff) | |
parent | Merge "Fix the permission of stashed blocks created by updater" (diff) | |
download | android_bootable_recovery-deb2a29a4279e23cfa635232935b4265ff84f06a.tar android_bootable_recovery-deb2a29a4279e23cfa635232935b4265ff84f06a.tar.gz android_bootable_recovery-deb2a29a4279e23cfa635232935b4265ff84f06a.tar.bz2 android_bootable_recovery-deb2a29a4279e23cfa635232935b4265ff84f06a.tar.lz android_bootable_recovery-deb2a29a4279e23cfa635232935b4265ff84f06a.tar.xz android_bootable_recovery-deb2a29a4279e23cfa635232935b4265ff84f06a.tar.zst android_bootable_recovery-deb2a29a4279e23cfa635232935b4265ff84f06a.zip |
Diffstat (limited to 'updater/blockimg.cpp')
-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); |