git-svn: trunk@2810
Tomasz Kojm authored on 2007/02/19 01:01:56... | ... |
@@ -1,7 +1,13 @@ |
1 |
+Sun Feb 18 15:03:37 CET 2007 (tk) |
|
2 |
+--------------------------------- |
|
3 |
+ * libclamav/unzip.c: handle some deflate64 compressed files |
|
4 |
+ |
|
1 | 5 |
Sat Feb 17 11:20:17 CET 2007 (edwin) |
6 |
+------------------------------------ |
|
2 | 7 |
* libclamav/entconv.c: Don't normalize buffer shorter than 2 bytes. |
3 | 8 |
|
4 | 9 |
Sat Feb 17 11:20:17 CET 2007 (edwin) |
10 |
+------------------------------------ |
|
5 | 11 |
* libclamav/rtf.c: Fix possible memory leak, and add more sanity checks. |
6 | 12 |
|
7 | 13 |
Sat Feb 17 02:34:17 CET 2007 (acab) |
... | ... |
@@ -480,6 +480,7 @@ zip_file *zip_file_open(zip_dir *dir, const char *name, int d_off) |
480 | 480 |
switch (hdr->d_compr) { |
481 | 481 |
case ZIP_METHOD_STORED: |
482 | 482 |
case ZIP_METHOD_DEFLATED: |
483 |
+ case ZIP_METHOD_DEFLATED64: |
|
483 | 484 |
break; |
484 | 485 |
|
485 | 486 |
case ZIP_METHOD_SHRUNK: |
... | ... |
@@ -489,7 +490,6 @@ zip_file *zip_file_open(zip_dir *dir, const char *name, int d_off) |
489 | 489 |
case ZIP_METHOD_REDUCEDx4: |
490 | 490 |
case ZIP_METHOD_IMPLODED: |
491 | 491 |
case ZIP_METHOD_TOKENIZED: |
492 |
- case ZIP_METHOD_DEFLATED64: |
|
493 | 492 |
case ZIP_METHOD_IMPLODED_DCL: |
494 | 493 |
case ZIP_METHOD_BZIP2: |
495 | 494 |
case ZIP_METHOD_AES: |
... | ... |
@@ -613,6 +613,7 @@ ssize_t zip_file_read(zip_file *fp, char *buf, size_t len) |
613 | 613 |
return bread; |
614 | 614 |
|
615 | 615 |
case ZIP_METHOD_DEFLATED: |
616 |
+ case ZIP_METHOD_DEFLATED64: |
|
616 | 617 |
fp->d_stream.avail_out = l; |
617 | 618 |
fp->d_stream.next_out = (unsigned char *) buf; |
618 | 619 |
do { |
... | ... |
@@ -641,7 +642,12 @@ ssize_t zip_file_read(zip_file *fp, char *buf, size_t len) |
641 | 641 |
if(ret == Z_OK) { |
642 | 642 |
fp->restlen -= (fp->d_stream.total_out - startlen); |
643 | 643 |
} else { |
644 |
- dir->errcode = CL_EZIP; |
|
644 |
+ if(fp->method == ZIP_METHOD_DEFLATED64) { |
|
645 |
+ cli_dbgmsg("Unzip: zip_file_read: Not supported compression method (%u)\n", fp->method); |
|
646 |
+ dir->errcode = CL_ESUPPORT; |
|
647 |
+ } else { |
|
648 |
+ dir->errcode = CL_EZIP; |
|
649 |
+ } |
|
645 | 650 |
return -1; |
646 | 651 |
} |
647 | 652 |
} |