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 --- fixPermissions.hpp | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) (limited to 'fixPermissions.hpp') diff --git a/fixPermissions.hpp b/fixPermissions.hpp index e57d7bff3..f61a9a172 100644 --- a/fixPermissions.hpp +++ b/fixPermissions.hpp @@ -16,28 +16,31 @@ using namespace std; class fixPermissions { public: + fixPermissions(); + ~fixPermissions(); int fixPerms(bool enable_debug, bool remove_data_for_missing_apps); + int fixContexts(); int fixDataInternalContexts(void); private: - int pchown(std::string fn, int puid, int pgid); - int pchmod(std::string fn, string mode); - vector listAllDirectories(std::string path); - vector listAllFiles(std::string path); - int getPackages(); - int fixSystemApps(); - int fixDataApps(); - int fixAllFiles(string directory, int gid, int uid, string file_perms); + int pchown(string fn, int puid, int pgid); + int pchmod(string fn, mode_t mode); + vector listAllDirectories(string path); + vector listAllFiles(string path); + void deletePackages(); + int getPackages(const string& packageFile); + int fixApps(); + int fixAllFiles(string directory, int uid, int gid, mode_t file_perms); + int fixDir(const string& dir, int diruid, int dirgid, mode_t dirmode, int fileuid, int filegid, mode_t filemode); int fixDataData(string dataDir); - int restorecon(std::string entry, struct stat *sb); + int restorecon(string entry, struct stat *sb); int fixDataDataContexts(void); - int fixContextsRecursively(std::string path, int level); + int fixContextsRecursively(string path, int level); struct package { string pkgName; string codePath; string appDir; - string app; string dDir; int gid; int uid; @@ -45,8 +48,5 @@ class fixPermissions { }; bool debug; bool remove_data; - bool multi_user; package* head; - package* temp; - string packageFile; }; -- cgit v1.2.3