From a3d31fbe385094400719e9a7a79965ff5da9f4b4 Mon Sep 17 00:00:00 2001 From: that Date: Sun, 21 Dec 2014 22:27:40 +0100 Subject: fixPermissions: simplify code, fix bugs - avoid parsing permission strings - fix memory leaks, a fix new/free mismatch and a compiler warning - fix that only first updated-package was processed - fix a potential stack overflow if packages.xml is huge - minor refactoring for reducing duplicated code - don't process packages without codePath - fix path for deleting app data (currently unused anyway) - fix file ownership on libs - try not to mess up Android 5.0 app permissions Patch set 4 - make fixing SELinux contexts an option with a check box - add some notes / text to the themes Patch set 6 - decouple "fix permissions" from "fix contexts" Change-Id: Icc77ecc581befc5ce6e419b1f3b8ca189208c234 --- partition.cpp | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) (limited to 'partition.cpp') diff --git a/partition.cpp b/partition.cpp index 409a688d5..80eb5aa83 100644 --- a/partition.cpp +++ b/partition.cpp @@ -1654,9 +1654,6 @@ bool TWPartition::Wipe_Data_Without_Wiping_Media() { return Wipe_Encryption(); #else string dir; - #ifdef HAVE_SELINUX - fixPermissions perms; - #endif // This handles wiping data on devices with "sdcard" in /data/media if (!Mount(true)) @@ -2018,10 +2015,6 @@ void TWPartition::Find_Actual_Block_Device(void) { void TWPartition::Recreate_Media_Folder(void) { string Command; - #ifdef HAVE_SELINUX - fixPermissions perms; - #endif - if (!Mount(true)) { LOGERR("Unable to recreate /data/media folder.\n"); } else if (!TWFunc::Path_Exists("/data/media")) { @@ -2029,7 +2022,13 @@ void TWPartition::Recreate_Media_Folder(void) { LOGINFO("Recreating /data/media folder.\n"); mkdir("/data/media", S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH); #ifdef HAVE_SELINUX + // Attempt to set the correct SELinux contexts on the folder + fixPermissions perms; perms.fixDataInternalContexts(); + // Afterwards, we will try to set the + // default metadata that we were hopefully able to get during + // early boot. + tw_set_default_metadata("/data/media"); #endif // Toggle mount to ensure that "internal sdcard" gets mounted PartitionManager.UnMount_By_Path(Symlink_Mount_Point, true); -- cgit v1.2.3