[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