From e98adee732f773c281aeb1acef8a992a67d22571 Mon Sep 17 00:00:00 2001 From: Tri Vo Date: Mon, 16 Apr 2018 14:27:10 -0700 Subject: [PATCH] Exclude /mnt/vendor from vold's ownership. Addresses this selinux denial: avc: denied { search } for name="vendor" dev="tmpfs" ino=11069 scontext=u:r:vold:s0 tcontext=u:object_r:mnt_vendor_file:s0 tclass=dir permissive=0 Bug: 64905218 Test: fixes above denial. Change-Id: I670b2148e65c7e0fcabd1e11f5bace0c4f4e18bd Merged-In: I670b2148e65c7e0fcabd1e11f5bace0c4f4e18bd (cherry picked from commit bca5cd78fe14292079e2ffd63912f51e974c7fc3) --- VolumeManager.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/VolumeManager.cpp b/VolumeManager.cpp index c3c95f6..98f12e8 100644 --- a/VolumeManager.cpp +++ b/VolumeManager.cpp @@ -39,6 +39,7 @@ #include #include #include +#include #include #include @@ -751,9 +752,11 @@ int VolumeManager::unmountAll() { std::list toUnmount; mntent* mentry; while ((mentry = getmntent(fp)) != NULL) { - if (strncmp(mentry->mnt_dir, "/mnt/", 5) == 0 - || strncmp(mentry->mnt_dir, "/storage/", 9) == 0) { - toUnmount.push_front(std::string(mentry->mnt_dir)); + auto test = std::string(mentry->mnt_dir); + if ((android::base::StartsWith(test, "/mnt/") && + !android::base::StartsWith(test, "/mnt/vendor")) || + android::base::StartsWith(test, "/storage/")) { + toUnmount.push_front(test); } } endmntent(fp);