bug-tar
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Bug-tar] [PATCH 1/2] check_compressed_archive: check for compressed sig


From: Alexander Kolesen
Subject: [Bug-tar] [PATCH 1/2] check_compressed_archive: check for compressed signatures first prior to checking tar checksum
Date: Thu, 2 Jan 2014 00:13:21 +0300

There's a chance we can wrongly treat compressed file as a plain tar file.
To prevent this, let's check for the compressed signatures first.
---
 src/buffer.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/src/buffer.c b/src/buffer.c
index 4b44eaf..723ea71 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -390,14 +390,16 @@ check_compressed_archive (bool *pshort)
   /* Restore global values */
   read_full_records = sfr;
 
-  if (tar_checksum (record_start, true) == HEADER_SUCCESS)
-    /* Probably a valid header */
-    return ct_tar;
-
+  /* Check for compressed signatures first, then check a tar checksum.
+   There's a chance of wrongly treat compressed file as a valid .tar file 
otherwise */
   for (p = magic + 2; p < magic + NMAGIC; p++)
     if (memcmp (record_start->buffer, p->magic, p->length) == 0)
       return p->type;
 
+  if (tar_checksum (record_start, true) == HEADER_SUCCESS)
+    /* Probably a valid header */
+    return ct_tar;
+
   return ct_none;
 }
 
-- 
1.8.5.2




reply via email to

[Prev in Thread] Current Thread [Next in Thread]