[BusyBox-cvs] busybox/archival/libunarchive get_header_tar.c, 1.33, 1.34
Glenn McGrath
bug1 at busybox.net
Fri Feb 20 02:25:20 UTC 2004
Update of /var/cvs/busybox/archival/libunarchive
In directory nail:/tmp/cvs-serv4163/archival/libunarchive
Modified Files:
get_header_tar.c
Log Message:
A strict interpretation of the ustar format requires the type flag to be
interpreted, we cannot depend on the file type being set in the mode
field.
Index: get_header_tar.c
===================================================================
RCS file: /var/cvs/busybox/archival/libunarchive/get_header_tar.c,v
retrieving revision 1.33
retrieving revision 1.34
diff -u -d -r1.33 -r1.34
--- get_header_tar.c 19 Feb 2004 08:48:30 -0000 1.33
+++ get_header_tar.c 20 Feb 2004 02:25:18 -0000 1.34
@@ -13,9 +13,9 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
- * FIXME: Better checking required in oldcompatability mode,
- * the file db.1.85.tar.gz from sleepycat.com has trailing garbage
- * GNU tar can handle it, busybox tar reports invalid tar header.
+ * FIXME:
+ * In privelidged mode if uname and gname map to a uid amd gid then use the
+ * mapped value instead of the uid/gid values in tar header
*
* References:
* GNU tar and star man pages,
@@ -135,14 +135,16 @@
case 'g':
bb_error_msg_and_die("pax is not tar");
break;
-#ifdef CONFIG_FEATURE_TAR_OLDGNU_COMPATABILITY
+ case '7':
+ /* Reserved for high performance files, treat as normal file */
case 0:
case '0':
+#ifdef CONFIG_FEATURE_TAR_OLDGNU_COMPATABILITY
if (last_char_is(file_header->name, '/')) {
file_header->mode |= S_IFDIR;
- } else {
+ } else
+#endif
file_header->mode |= S_IFREG;
- }
break;
case '2':
file_header->mode |= S_IFLNK;
@@ -159,11 +161,6 @@
case '6':
file_header->mode |= S_IFIFO;
break;
- case '7':
- /* Reserved for high performance files, treat as normal file */
- file_header->mode |= S_IFREG;
- break;
-#endif
#ifdef CONFIG_FEATURE_TAR_GNU_EXTENSIONS
case 'L': {
longname = xmalloc(file_header->size + 1);
More information about the busybox-cvs
mailing list