Browse code

improved zip support

git-svn-id: file:///var/lib/svn/clamav-devel/trunk/clamav-devel@1197 77e5149b-7576-45b1-b177-96237e5ba77b

Tomasz Kojm authored on 2004/12/19 11:03:06
Showing 2 changed files
... ...
@@ -1,3 +1,7 @@
1
+Sun Dec 19 03:00:48 CET 2004 (tk)
2
+---------------------------------
3
+  * libclamav: improved zip support
4
+
1 5
 Sun Dec 19 02:09:50 CET 2004 (tk)
2 6
 ---------------------------------
3 7
   * docs/MacOSX: updated (Dale Enterprise L.L.C)
... ...
@@ -187,10 +187,15 @@ zzip_file_open(ZZIP_DIR * dir, zzip_char_t* name, int o_mode)
187 187
             switch (hdr->d_compr)
188 188
             {
189 189
             case 0: /* store */
190
+	    case 1: /* shrink */	
191
+	    case 6: /* implode */
190 192
             case 8: /* inflate */
193
+	    case 9: /* deflate */
191 194
                 break;
192 195
             default:
193
-                { err = ZZIP_UNSUPP_COMPR; goto error; }
196
+		cli_dbgmsg("ZzipLib: Unsupported compression mode (%d)\n", hdr->d_compr);
197
+                err = ZZIP_UNSUPP_COMPR;
198
+		goto error;
194 199
             }
195 200
 
196 201
             if (dir->cache.fp) 
... ...
@@ -238,8 +243,13 @@ zzip_file_open(ZZIP_DIR * dir, zzip_char_t* name, int o_mode)
238 238
 		dataoff = dir->io->read(dir->fd, (void*)p, sizeof(*p));
239 239
 		if (dataoff < (zzip_ssize_t)sizeof(*p))
240 240
 		{ err = ZZIP_DIR_READ;  goto error; }
241
-                if (! ZZIP_FILE_HEADER_CHECKMAGIC(p)) /* PK\3\4 */
242
-		{ err = ZZIP_CORRUPTED; goto error; }
241
+
242
+		/* TODO: Improve header check for old archives
243
+                if (! ZZIP_FILE_HEADER_CHECKMAGIC(p))
244
+		{
245
+		    err = ZZIP_CORRUPTED; goto error;
246
+		}
247
+		*/
243 248
 
244 249
                 dataoff = ZZIP_GET16(p->z_namlen) + ZZIP_GET16(p->z_extras);
245 250
               
... ...
@@ -265,7 +275,7 @@ zzip_file_open(ZZIP_DIR * dir, zzip_char_t* name, int o_mode)
265 265
     dir->errcode = ZZIP_ENOENT;         zzip_errno(ZZIP_ENOENT);
266 266
     return NULL;
267 267
 error:
268
-    if (fp) zzip_file_close(fp);
268
+if (fp) zzip_file_close(fp);
269 269
     dir->errcode = err;                 zzip_errno(err);
270 270
     return NULL;
271 271
 }