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
diff --git a/fixPermissions.hpp b/fixPermissions.hpp
index e57d7bf..f61a9a1 100644
--- a/fixPermissions.hpp
+++ b/fixPermissions.hpp
@@ -16,28 +16,31 @@
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 <string> listAllDirectories(std::string path);
- vector <string> 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 <string> listAllDirectories(string path);
+ vector <string> 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 @@
};
bool debug;
bool remove_data;
- bool multi_user;
package* head;
- package* temp;
- string packageFile;
};