From: Sergey Poznyakoff Date: Thu, 19 Feb 2015 15:00:58 +0000 (+0200) Subject: Improve compression format recognition X-Git-Url: https://git.brokenzipper.com/gitweb?a=commitdiff_plain;h=1847ec67cec36a17354115374954fea211d1f0da;p=chaz%2Ftar 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). --- diff --git a/src/buffer.c b/src/buffer.c index a7d8971..1a96595 100644 --- a/src/buffer.c +++ b/src/buffer.c @@ -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;