diff --git a/Android.mk b/Android.mk index 0064cb4..9ad0edd 100644 --- a/Android.mk +++ b/Android.mk @@ -35,7 +35,8 @@ common_shared_libraries := \ libhardware_legacy \ liblogwrap \ libext4_utils \ - libcrypto + libcrypto \ + libselinux common_static_libraries := \ libfs_mgr \ diff --git a/VolumeManager.cpp b/VolumeManager.cpp index 19fb29a..40f58fa 100644 --- a/VolumeManager.cpp +++ b/VolumeManager.cpp @@ -35,6 +35,8 @@ #include #include +#include + #include #include @@ -613,6 +615,12 @@ int VolumeManager::fixupAsecPermissions(const char *id, gid_t gid, const char* f } else if (ftsent->fts_info & FTS_F) { result |= fchmod(fd, privateFile ? 0640 : 0644); } + + if (selinux_android_restorecon(ftsent->fts_path) < 0) { + SLOGE("restorecon failed for %s: %s\n", ftsent->fts_path, strerror(errno)); + result |= -1; + } + close(fd); } fts_close(fts);