Hi,

Today I came a cross a strange tar archive which couldn't been
extracted by tar from busybox (tested on recent snapshot).
I checked that this archive has files/directories with creation date about 1920.
Looks like very old dates are stored in different manner then dates above 1970.

Here is what I changed to solve my problem
file: /archival/libunarchive/get_header_tar.c
@@ -301,7 +303,9 @@
       file_header->uname = tar.uname[0] ? xstrndup(tar.uname,
sizeof(tar.uname)) : NULL;
       file_header->gname = tar.gname[0] ? xstrndup(tar.gname,
sizeof(tar.gname)) : NULL;
 #endif
-       file_header->mtime = GET_OCTAL(tar.mtime);
+       file_header->mtime = *tar.mtime == 0xFF /* positive base256? */
+                       ? getBase256_len12(tar.mtime)
+                       : GET_OCTAL(tar.mtime);
       /* Size field: handle GNU tar's "base256 encoding" */
       file_header->size = (*tar.size & 0xc0) == 0x80 /* positive base256? */
                       ? getBase256_len12(tar.size)

Don't know if the condition is good for all situation, but it did work
in my case

T4
_______________________________________________
busybox mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/busybox

Reply via email to