diff --git a/ChangeLog b/ChangeLog index 863ccc081..931d36758 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +Mon Feb 4 11:15:28 CET 2008 (tk) +--------------------------------- + * libclamav/cab.c: fix fd handling (thanks Edwin) + Sun Feb 3 21:23:01 EET 2008 (edwin) ------------------------------------ * clamav-milter: use cli_ctime() diff --git a/libclamav/cab.c b/libclamav/cab.c index f55593c84..f54b7811b 100644 --- a/libclamav/cab.c +++ b/libclamav/cab.c @@ -648,6 +648,20 @@ static int cab_unstore(struct cab_file *file, int bytes) return CL_EMSCAB; \ } \ file->cab->actfol = file->folder; \ + } else { \ + if(file->cab->state && file->cab->state->stream) { \ + switch(file->cab->state->cmethod & 0x000f) { \ + case 0x0001: \ + ((struct mszip_stream *) file->cab->state->stream)->ofd = file->ofd; \ + break; \ + case 0x0002: \ + ((struct qtm_stream *) file->cab->state->stream)->ofd = file->ofd; \ + break; \ + case 0x0003: \ + ((struct lzx_stream *) file->cab->state->stream)->ofd = file->ofd; \ + break; \ + } \ + } \ }