[BusyBox-cvs] busybox/archival/libunarchive data_extract_all.c, 1.12, 1.13
Erik Andersen
andersen at busybox.net
Thu Sep 11 08:32:43 UTC 2003
Update of /var/cvs/busybox/archival/libunarchive
In directory winder:/tmp/cvs-serv14448/archival/libunarchive
Modified Files:
data_extract_all.c
Log Message:
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).
Index: data_extract_all.c
===================================================================
RCS file: /var/cvs/busybox/archival/libunarchive/data_extract_all.c,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -d -r1.12 -r1.13
--- data_extract_all.c 28 Aug 2003 19:12:23 -0000 1.12
+++ data_extract_all.c 11 Sep 2003 08:32:40 -0000 1.13
@@ -112,8 +112,8 @@
}
}
- 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;
More information about the busybox-cvs
mailing list