[Pkg-clamav-commits] [SCM] Debian repository for ClamAV branch, debian/unstable, updated. debian/0.95+dfsg-1-6156-g094ec9b
aCaB
acab at clamav.net
Sun Apr 4 00:58:46 UTC 2010
The following commit has been merged in the debian/unstable branch:
commit c19515d572f7fb943803829c70461c6921cc8796
Author: aCaB <acab at clamav.net>
Date: Tue Jul 14 20:28:55 2009 +0200
cab related bug fixed, works now
diff --git a/libclamav/ishield.c b/libclamav/ishield.c
index 9aed643..e3fc3d1 100644
--- a/libclamav/ishield.c
+++ b/libclamav/ishield.c
@@ -360,6 +360,7 @@ int cli_scanishield(int desc, cli_ctx *ctx, off_t off, size_t sz) {
long cabno;
if(!strcasecmp(fname + 4, "1.hdr")) {
if(c.hdr == -1) {
+ cli_dbgmsg("ishield: added data1.hdr to array\n");
c.hdr = coff;
c.hdrsz = fsize;
coff += fsize;
@@ -377,6 +378,7 @@ int cli_scanishield(int desc, cli_ctx *ctx, off_t off, size_t sz) {
ret = CL_EMEM;
break;
}
+ cli_dbgmsg("ishield: added data%lu.cab to array\n", cabno);
c.cabs[i].cabno = cabno;
c.cabs[i].off = coff;
c.cabs[i].sz = fsize;
@@ -392,9 +394,12 @@ int cli_scanishield(int desc, cli_ctx *ctx, off_t off, size_t sz) {
}
if(ret == CL_CLEAN && (c.cabcnt || c.hdr != -1)) {
- if(is_parse_hdr(desc, ctx, &c) == CL_CLEAN /* FIXMEISHIELD */) {
+ if(is_parse_hdr(desc, ctx, &c) == CL_CLEAN /* FIXMEISHIELD: return something and avoid scanning */) {
unsigned int i;
- if(c.hdr != -1) ret = is_dump_and_scan(desc, ctx, c.hdr, c.hdrsz);
+ if(c.hdr != -1) {
+ cli_errmsg("ishield: scanning data1.hdr\n");
+ ret = is_dump_and_scan(desc, ctx, c.hdr, c.hdrsz);
+ }
for(i=0; i<c.cabcnt && ret == CL_CLEAN; i++) {
cli_errmsg("ishield: scanning data%u.cab\n", c.cabs[i].cabno);
ret = is_dump_and_scan(desc, ctx, c.cabs[i].off, c.cabs[i].sz);
@@ -581,20 +586,24 @@ static int is_parse_hdr(int desc, cli_ctx *ctx, struct IS_CABSTUFF *c) { /* FIXM
cli_errmsg("is_parse_hdr: not scanned (dup)\n");
else {
if(file->size) { /* FIXMEISHIELD: limits */
- unsigned int cab;
+ unsigned int j;
int ret;
- for(cab=0; cab<c->cabcnt && c->cabs[cab].cabno != cabno; cab++) {}
- if(cab != cab<c->cabcnt) {
-/* if(CLI_ISCONTAINED(c->cabs[cab].off, c->cabs[cab].sz, file_stream_off + c->cabs[cab].off, file_csize + c->cabs[cab].off)) */
- ret = is_extract_cab(desc, ctx, file_stream_off + c->cabs[cab].off, file_size, file_csize);
-/* else */
-/* cli_dbgmsg("is_parse_hdr: stream out of file\n"); */
+ for(j=0; j<c->cabcnt && c->cabs[j].cabno != cabno; j++) {}
+ if(j != c->cabcnt) {
+ if(CLI_ISCONTAINED(c->cabs[j].off, c->cabs[j].sz, file_stream_off + c->cabs[j].off, file_csize))
+ ret = is_extract_cab(desc, ctx, file_stream_off + c->cabs[j].off, file_size, file_csize);
+ else
+ cli_dbgmsg("is_parse_hdr: stream out of file\n");
+ } else {
+ cli_dbgmsg("is_parse_hdr: data%u.cab not available\n", cabno);
}
if(ret != CL_CLEAN) {
free(hdr);
return ret;
}
+ } else {
+ cli_dbgmsg("is_parse_hdr: skipped empty file\n");
}
}
break;
--
Debian repository for ClamAV
More information about the Pkg-clamav-commits
mailing list