tar: handle 256-base encoding in mtime
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
da49f58524
commit
b773f715d6
@ -301,9 +301,13 @@ char FAST_FUNC get_header_tar(archive_handle_t *archive_handle)
|
||||
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);
|
||||
/* Size field: handle GNU tar's "base256 encoding" */
|
||||
file_header->size = (*tar.size & 0xc0) == 0x80 /* positive base256? */
|
||||
/* mtime: rudimentally handle GNU tar's "base256 encoding"
|
||||
* People report tarballs with NEGATIVE unix times encoded that way */
|
||||
file_header->mtime = (tar.mtime[0] & 0x80) /* base256? */
|
||||
? 0 /* bogus */
|
||||
: GET_OCTAL(tar.mtime);
|
||||
/* size: handle GNU tar's "base256 encoding" */
|
||||
file_header->size = (tar.size[0] & 0xc0) == 0x80 /* positive base256? */
|
||||
? getBase256_len12(tar.size)
|
||||
: GET_OCTAL(tar.size);
|
||||
file_header->gid = GET_OCTAL(tar.gid);
|
||||
|
Loading…
Reference in New Issue
Block a user