Improve compression format recognition
Some comressed archives can pass the checksum test, which makes tar treat them as uncompressed archives. * src/buffer.c (check_compressed_archive): Test the checksum only if the block we read looks like a valid tar header (i.e. has a magic string).
This commit is contained in:
@@ -391,7 +391,10 @@ check_compressed_archive (bool *pshort)
|
||||
/* Restore global values */
|
||||
read_full_records = sfr;
|
||||
|
||||
if (tar_checksum (record_start, true) == HEADER_SUCCESS)
|
||||
if ((strcmp (record_start->header.magic, TMAGIC) == 0 ||
|
||||
strcmp (record_start->buffer + offsetof (struct posix_header, magic),
|
||||
OLDGNU_MAGIC) == 0) &&
|
||||
tar_checksum (record_start, true) == HEADER_SUCCESS)
|
||||
/* Probably a valid header */
|
||||
return ct_tar;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user