]> git.saurik.com Git - cydia.git/commitdiff
Fix permissions of _.* containers on new stashes.
authorJay Freeman (saurik) <saurik@saurik.com>
Fri, 13 Jun 2014 08:31:54 +0000 (01:31 -0700)
committerJay Freeman (saurik) <saurik@saurik.com>
Fri, 13 Jun 2014 08:31:54 +0000 (01:31 -0700)
Library/move.sh
postinst.mm

index c0fc10cda47dad23990b8c57c6d5c19907156a13..98d9986f6a51bf6914691f32ffc608cc7a548bef 100755 (executable)
@@ -24,6 +24,9 @@ function mv_() {
     tmp=$(mktemp -d /var/stash/_.XXXXXX)
     dst=${tmp}/${src##*/}
 
     tmp=$(mktemp -d /var/stash/_.XXXXXX)
     dst=${tmp}/${src##*/}
 
+    chmod 755 "${tmp}"
+    chown root.admin "${tmp}"
+
     mkdir -- "${dst}" || {
         rmdir -- "${tmp}"
         exit 1
     mkdir -- "${dst}" || {
         rmdir -- "${tmp}"
         exit 1
index a32691179822e94144d9026f110601e93559e213..405b3176ecbea26888247a32fcbdbcb738b2f7a9 100644 (file)
@@ -24,6 +24,33 @@ void Finish(const char *finish) {
     fclose(fout);
 }
 
     fclose(fout);
 }
 
+static void FixPermissions() {
+    DIR *stash(opendir("/var/stash"));
+    if (stash == NULL)
+        return;
+
+    while (dirent *entry = readdir(stash)) {
+        const char *folder(entry->d_name);
+        if (strlen(folder) != 8)
+            continue;
+        if (strncmp(folder, "_.", 2) != 0)
+            continue;
+
+        char path[1024];
+        sprintf(path, "/var/stash/%s", folder);
+
+        struct stat stat;
+        if (lstat(path, &stat) == -1)
+            continue;
+        if (!S_ISDIR(stat.st_mode))
+            continue;
+
+        chmod(path, 0755);
+    }
+
+    closedir(stash);
+}
+
 #define APPLICATIONS "/Applications"
 static bool FixApplications() {
     char target[1024];
 #define APPLICATIONS "/Applications"
 static bool FixApplications() {
     char target[1024];
@@ -126,6 +153,8 @@ int main(int argc, const char *argv[]) {
 
     CydiaWriteSources();
 
 
     CydiaWriteSources();
 
+    FixPermissions();
+
     if (FixApplications())
         Finish("restart");
 
     if (FixApplications())
         Finish("restart");