← Commit list

b773f715d

Denys Vlasenko
Denys Vlasenko
2009-07-08
FAILED Duration: 33s

Subject

tar: handle 256-base encoding in mtime

Binary

No binary (build failed)

Architecture & Compiler Flags

Architecture: x86_64-linux-gnu Compiler: gcc (Ubuntu 11.4.0-1ubuntu1~22.04.3) 11.4.0

—

Build Log

(log yok)

Commit Diff GitHub →

archival/libunarchive/get_header_tar.c+7 -3
@@ -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);