]> git.seodisparate.com - SimpleArchiver/commitdiff
Stricter directory permissions on dir creation
authorStephen Seo <seo.disparate@gmail.com>
Mon, 3 Feb 2025 07:43:33 +0000 (16:43 +0900)
committerStephen Seo <seo.disparate@gmail.com>
Mon, 3 Feb 2025 07:44:27 +0000 (16:44 +0900)
Directory default permission settings changed (for on dir creation).

Previous impl used:    rwxrwxr-x
Current impl now uses: rwxr-xr-x

src/archiver.c
src/helpers.c

index 6d447b486907b5fb32455a848c56bb6fcebd3d04..89128dc5f0a321969a7fc2606c48570843f1f4c8 100644 (file)
@@ -6189,7 +6189,7 @@ int simple_archiver_parse_archive_version_0(FILE *in_f, int_fast8_t do_extract,
           (state->parsed->flags & 0x2000)
             ? simple_archiver_internal_permissions_to_mode_t(
                 state->parsed->dir_permissions)
-            : (S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH),
+            : (S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH),
           (state->parsed->flags & 0x400) ? state->parsed->uid : getuid(),
           (state->parsed->flags & 0x800) ? state->parsed->gid : getgid());
 
@@ -6562,7 +6562,7 @@ int simple_archiver_parse_archive_version_0(FILE *in_f, int_fast8_t do_extract,
           (state->parsed->flags & 0x2000)
             ? simple_archiver_internal_permissions_to_mode_t(
                 state->parsed->dir_permissions)
-            : (S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH),
+            : (S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH),
           (state->parsed->flags & 0x400) ? state->parsed->uid : getuid(),
           (state->parsed->flags & 0x800) ? state->parsed->gid : getgid());
         if (abs_path && rel_path) {
@@ -7092,7 +7092,7 @@ int simple_archiver_parse_archive_version_1(FILE *in_f, int_fast8_t do_extract,
           (state->parsed->flags & 0x2000)
             ? simple_archiver_internal_permissions_to_mode_t(
                 state->parsed->dir_permissions)
-            : (S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH),
+            : (S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH),
           (state->parsed->flags & 0x400) ? state->parsed->uid : getuid(),
           (state->parsed->flags & 0x800) ? state->parsed->gid : getgid());
         int_fast8_t link_create_retry = 0;
@@ -7198,7 +7198,7 @@ int simple_archiver_parse_archive_version_1(FILE *in_f, int_fast8_t do_extract,
           (state->parsed->flags & 0x2000)
             ? simple_archiver_internal_permissions_to_mode_t(
                 state->parsed->dir_permissions)
-            : (S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH),
+            : (S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH),
           (state->parsed->flags & 0x400) ? state->parsed->uid : getuid(),
           (state->parsed->flags & 0x800) ? state->parsed->gid : getgid());
         int_fast8_t link_create_retry = 0;
@@ -7685,7 +7685,7 @@ int simple_archiver_parse_archive_version_1(FILE *in_f, int_fast8_t do_extract,
             (state->parsed->flags & 0x2000)
               ? simple_archiver_internal_permissions_to_mode_t(
                   state->parsed->dir_permissions)
-              : (S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH),
+              : (S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH),
             (state->parsed->flags & 0x400)
               ? state->parsed->uid
               : file_info->uid,
@@ -7853,7 +7853,7 @@ int simple_archiver_parse_archive_version_1(FILE *in_f, int_fast8_t do_extract,
             (state->parsed->flags & 0x2000)
               ? simple_archiver_internal_permissions_to_mode_t(
                   state->parsed->dir_permissions)
-              : (S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH),
+              : (S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH),
             (state->parsed->flags & 0x400)
               ? state->parsed->uid
               : file_info->uid,
@@ -8157,7 +8157,7 @@ int simple_archiver_parse_archive_version_2(FILE *in_f, int_fast8_t do_extract,
         state && (state->parsed->flags & 0x2000)
           ? simple_archiver_internal_permissions_to_mode_t(
               state->parsed->dir_permissions)
-          : (S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH),
+          : (S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH),
         state && (state->parsed->flags & 0x400) ? state->parsed->uid : uid,
         state && (state->parsed->flags & 0x800) ? state->parsed->gid : gid);
       if (ret != 0) {
@@ -8624,7 +8624,7 @@ int simple_archiver_parse_archive_version_3(FILE *in_f,
         (state->parsed->flags & 0x2000)
           ? simple_archiver_internal_permissions_to_mode_t(
               state->parsed->dir_permissions)
-          : (S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH),
+          : (S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH),
         (state->parsed->flags & 0x400) ? state->parsed->uid : current_uid,
         (state->parsed->flags & 0x800) ? state->parsed->gid : current_gid);
       int_fast8_t link_create_retry = 0;
@@ -8690,7 +8690,7 @@ int simple_archiver_parse_archive_version_3(FILE *in_f,
         (state->parsed->flags & 0x2000)
           ? simple_archiver_internal_permissions_to_mode_t(
               state->parsed->dir_permissions)
-          : (S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH),
+          : (S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH),
         (state->parsed->flags & 0x400) ? state->parsed->uid : current_uid,
         (state->parsed->flags & 0x800) ? state->parsed->gid : current_gid);
       int_fast8_t link_create_retry = 0;
@@ -9305,7 +9305,7 @@ int simple_archiver_parse_archive_version_3(FILE *in_f,
             (state->parsed->flags & 0x2000)
               ? simple_archiver_internal_permissions_to_mode_t(
                   state->parsed->dir_permissions)
-              : (S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH),
+              : (S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH),
             (state->parsed->flags & 0x400) ? state->parsed->uid : file_info->uid,
             (state->parsed->flags & 0x800) ? state->parsed->gid : file_info->gid);
           int ret = read_decomp_to_out_file(
@@ -9481,7 +9481,7 @@ int simple_archiver_parse_archive_version_3(FILE *in_f,
             (state->parsed->flags & 0x2000)
               ? simple_archiver_internal_permissions_to_mode_t(
                   state->parsed->dir_permissions)
-              : (S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH),
+              : (S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH),
             (state->parsed->flags & 0x400) ? state->parsed->uid : file_info->uid,
             (state->parsed->flags & 0x800) ? state->parsed->gid : file_info->gid);
           __attribute__((cleanup(simple_archiver_helper_cleanup_FILE)))
@@ -9847,7 +9847,7 @@ int simple_archiver_parse_archive_version_3(FILE *in_f,
         state && (state->parsed->flags & 0x2000)
           ? simple_archiver_internal_permissions_to_mode_t(
               state->parsed->dir_permissions)
-          : (S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH),
+          : (S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH),
         state && (state->parsed->flags & 0x400) ? state->parsed->uid : uid,
         state && (state->parsed->flags & 0x800) ? state->parsed->gid : gid);
       if (ret != 0) {
index 3f465b3b4f99e35caecf2df21052e50b6ce413be..be9bfa804fe545f89cd74aef06972f78911f73c2 100644 (file)
@@ -212,7 +212,7 @@ int simple_archiver_helper_make_dirs(const char *file_path) {
         return ret;
       }
       // Now make dir.
-      ret = mkdir(dir, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
+      ret = mkdir(dir, S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH);
       if (ret != 0) {
         // Error.
         return 2;