Revert the patch from Konstantin Boldyshev <konst@linuxassembly.org> to never
change permissions on existing directories. This behavior is contrary to SUSv2 and contrary to GNU tar. Thanks to Matt Kraai for pointing this out. I should have been much more careful about accepting such a patch. -Erik
This commit is contained in:
parent
67a4640333
commit
cb2a372c9f
@ -382,8 +382,6 @@ tarExtractRegularFile(TarInfo *header, int extractFlag, int tostdoutFlag)
|
||||
static int
|
||||
tarExtractDirectory(TarInfo *header, int extractFlag, int tostdoutFlag)
|
||||
{
|
||||
int result;
|
||||
|
||||
if (extractFlag==FALSE || tostdoutFlag==TRUE)
|
||||
return( TRUE);
|
||||
|
||||
@ -394,15 +392,12 @@ tarExtractDirectory(TarInfo *header, int extractFlag, int tostdoutFlag)
|
||||
/* make the final component, just in case it was
|
||||
* omitted by create_path() (which will skip the
|
||||
* directory if it doesn't have a terminating '/') */
|
||||
result = mkdir(header->name, header->mode);
|
||||
/* Don't fix permissions on pre-existing directories */
|
||||
if (result == 0) {
|
||||
fixUpPermissions(header);
|
||||
} else if (result < 0 && errno != EEXIST) {
|
||||
if (mkdir(header->name, header->mode) < 0 && errno != EEXIST) {
|
||||
perror_msg("%s", header->name);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
fixUpPermissions(header);
|
||||
return( TRUE);
|
||||
}
|
||||
|
||||
|
9
tar.c
9
tar.c
@ -382,8 +382,6 @@ tarExtractRegularFile(TarInfo *header, int extractFlag, int tostdoutFlag)
|
||||
static int
|
||||
tarExtractDirectory(TarInfo *header, int extractFlag, int tostdoutFlag)
|
||||
{
|
||||
int result;
|
||||
|
||||
if (extractFlag==FALSE || tostdoutFlag==TRUE)
|
||||
return( TRUE);
|
||||
|
||||
@ -394,15 +392,12 @@ tarExtractDirectory(TarInfo *header, int extractFlag, int tostdoutFlag)
|
||||
/* make the final component, just in case it was
|
||||
* omitted by create_path() (which will skip the
|
||||
* directory if it doesn't have a terminating '/') */
|
||||
result = mkdir(header->name, header->mode);
|
||||
/* Don't fix permissions on pre-existing directories */
|
||||
if (result == 0) {
|
||||
fixUpPermissions(header);
|
||||
} else if (result < 0 && errno != EEXIST) {
|
||||
if (mkdir(header->name, header->mode) < 0 && errno != EEXIST) {
|
||||
perror_msg("%s", header->name);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
fixUpPermissions(header);
|
||||
return( TRUE);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user