unzip: do not set directory mode to 0777
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=882177 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
@@ -336,7 +336,9 @@ static void unzip_create_leading_dirs(const char *fn)
|
|||||||
{
|
{
|
||||||
/* Create all leading directories */
|
/* Create all leading directories */
|
||||||
char *name = xstrdup(fn);
|
char *name = xstrdup(fn);
|
||||||
if (bb_make_directory(dirname(name), 0777, FILEUTILS_RECUR)) {
|
|
||||||
|
/* mode of -1: set mode according to umask */
|
||||||
|
if (bb_make_directory(dirname(name), -1, FILEUTILS_RECUR)) {
|
||||||
xfunc_die(); /* bb_make_directory is noisy */
|
xfunc_die(); /* bb_make_directory is noisy */
|
||||||
}
|
}
|
||||||
free(name);
|
free(name);
|
||||||
|
@@ -92,6 +92,7 @@ int FAST_FUNC bb_make_directory(char *path, long mode, int flags)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//bb_error_msg("mkdir '%s'", path);
|
||||||
if (mkdir(path, 0777) < 0) {
|
if (mkdir(path, 0777) < 0) {
|
||||||
/* If we failed for any other reason than the directory
|
/* If we failed for any other reason than the directory
|
||||||
* already exists, output a diagnostic and return -1 */
|
* already exists, output a diagnostic and return -1 */
|
||||||
@@ -118,7 +119,9 @@ int FAST_FUNC bb_make_directory(char *path, long mode, int flags)
|
|||||||
/* Done. If necessary, update perms on the newly
|
/* Done. If necessary, update perms on the newly
|
||||||
* created directory. Failure to update here _is_
|
* created directory. Failure to update here _is_
|
||||||
* an error. */
|
* an error. */
|
||||||
if ((mode != -1) && (chmod(path, mode) < 0)) {
|
if (mode != -1) {
|
||||||
|
//bb_error_msg("chmod 0%03lo mkdir '%s'", mode, path);
|
||||||
|
if (chmod(path, mode) < 0)) {
|
||||||
fail_msg = "set permissions of";
|
fail_msg = "set permissions of";
|
||||||
if (flags & FILEUTILS_IGNORE_CHMOD_ERR) {
|
if (flags & FILEUTILS_IGNORE_CHMOD_ERR) {
|
||||||
flags = 0;
|
flags = 0;
|
||||||
@@ -126,6 +129,7 @@ int FAST_FUNC bb_make_directory(char *path, long mode, int flags)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
goto ret0;
|
goto ret0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user