diff options
author | Songchun Fan <schfan@google.com> | 2020-07-15 17:09:03 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2020-07-15 17:09:03 +0000 |
commit | f71981ace4eab2f970e22d9511f7c69cbd41406f (patch) | |
tree | 90de8044e76b3eae64feb7059eee0b2dbe864b69 | |
parent | 5b1856e22ae0dc015c708bfc07859113deb02fb3 (diff) | |
parent | bd1b98a84a090bd6c657fb44cef1d25c20378fc1 (diff) | |
download | incremental_delivery-android11-qpr1-c-release.tar.gz |
[incfs] call restorecon on individual control files am: 4a18a60a50 am: bd1b98a84aandroid-11.0.0_r48android-11.0.0_r47android-11.0.0_r46android-11.0.0_r45android-11.0.0_r44android-11.0.0_r43android-11.0.0_r42android-11.0.0_r41android-11.0.0_r40android-11.0.0_r39android-11.0.0_r38android-11.0.0_r37android-11.0.0_r36android-11.0.0_r35android-11.0.0_r34android-11.0.0_r33android-11.0.0_r32android-11.0.0_r30android11-qpr3-s1-releaseandroid11-qpr3-releaseandroid11-qpr2-releaseandroid11-qpr1-c-releaseandroid11-d2-release
Original change: https://googleplex-android-review.googlesource.com/c/platform/system/incremental_delivery/+/12142921
Change-Id: I0abc194548f51d17bd3664ac18641909842ae47c
-rw-r--r-- | incfs/incfs.cpp | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/incfs/incfs.cpp b/incfs/incfs.cpp index c98acb2..7994c54 100644 --- a/incfs/incfs.cpp +++ b/incfs/incfs.cpp @@ -403,6 +403,22 @@ IncFsFileId IncFs_FileIdFromMetadata(IncFsSpan metadata) { return id; } +static bool restoreconControlFiles(std::string_view targetDir) { + const std::string controlFilePaths[] = {path::join(targetDir, INCFS_PENDING_READS_FILENAME), + path::join(targetDir, INCFS_LOG_FILENAME)}; + for (size_t i = 0; i < std::size(controlFilePaths); i++) { + if (const auto err = selinux_android_restorecon(controlFilePaths[i].c_str(), + SELINUX_ANDROID_RESTORECON_FORCE); + err != 0) { + PLOG(ERROR) << "[incfs] Failed to restorecon: " << controlFilePaths[i] + << " error code: " << err; + errno = -err; + return false; + } + } + return true; +} + IncFsControl* IncFs_Mount(const char* backingPath, const char* targetDir, IncFsMountOptions options) { if (!init().enabledAndReady()) { @@ -440,10 +456,7 @@ IncFsControl* IncFs_Mount(const char* backingPath, const char* targetDir, return nullptr; } - if (const auto err = selinux_android_restorecon(targetDir, SELINUX_ANDROID_RESTORECON_RECURSE); - err != 0) { - PLOG(ERROR) << "[incfs] Failed to restorecon: " << err; - errno = -err; + if (!restoreconControlFiles(targetDir)) { return nullptr; } |