diff options
author | Eric Andersen | 2003-09-11 08:32:40 +0000 |
---|---|---|
committer | Eric Andersen | 2003-09-11 08:32:40 +0000 |
commit | 2fdba24620314729941bb30e6dd987dd1a1f1709 (patch) | |
tree | 747015fe95950a8bf64dc14769aca5d5452590e0 /archival | |
parent | 6231f092bd5861cd51a05440b15c00afabbb8851 (diff) | |
download | busybox-2fdba24620314729941bb30e6dd987dd1a1f1709.zip busybox-2fdba24620314729941bb30e6dd987dd1a1f1709.tar.gz |
Marc A. Lehmann writes:
The tar -x command in busybox does not restore the file mode correctly.
The reason is most probably this code in
archival/libunarachive/data_extract_all.c:
chmod(file_header->name, file_header->mode);
chown(file_header->name, file_header->uid, file_header->gid);
chown clears the set*id bits (on current versions of linux :). Flipping
the order around fixes the problem.
(tested with 1.00pre3 from cvs).
Diffstat (limited to 'archival')
-rw-r--r-- | archival/libunarchive/data_extract_all.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/archival/libunarchive/data_extract_all.c b/archival/libunarchive/data_extract_all.c index 05bd2f0..7349339 100644 --- a/archival/libunarchive/data_extract_all.c +++ b/archival/libunarchive/data_extract_all.c @@ -112,8 +112,8 @@ extern void data_extract_all(archive_handle_t *archive_handle) } } - chmod(file_header->name, file_header->mode); chown(file_header->name, file_header->uid, file_header->gid); + chmod(file_header->name, file_header->mode); if (archive_handle->flags & ARCHIVE_PRESERVE_DATE) { struct utimbuf t; |