Browse code

fix fd handling (thanks Edwin)

git-svn: trunk@3580

Tomasz Kojm authored on 2008/02/04 19:32:23
Showing 2 changed files
... ...
@@ -1,3 +1,7 @@
1
+Mon Feb  4 11:15:28 CET 2008 (tk)
2
+---------------------------------
3
+  * libclamav/cab.c: fix fd handling (thanks Edwin)
4
+
1 5
 Sun Feb  3 21:23:01 EET 2008 (edwin)
2 6
 ------------------------------------
3 7
   * clamav-milter: use cli_ctime()
... ...
@@ -648,6 +648,20 @@ static int cab_unstore(struct cab_file *file, int bytes)
648 648
 	    return CL_EMSCAB;						\
649 649
 	}								\
650 650
 	file->cab->actfol = file->folder;				\
651
+    } else {								\
652
+    	if(file->cab->state && file->cab->state->stream) {		\
653
+	    switch(file->cab->state->cmethod & 0x000f) {		\
654
+		case 0x0001:						\
655
+		    ((struct mszip_stream *) file->cab->state->stream)->ofd = file->ofd;									\
656
+		    break;						\
657
+		case 0x0002:						\
658
+		    ((struct qtm_stream *) file->cab->state->stream)->ofd = file->ofd;									\
659
+		    break;						\
660
+		case 0x0003:						\
661
+		    ((struct lzx_stream *) file->cab->state->stream)->ofd = file->ofd;									\
662
+		    break;						\
663
+	    }								\
664
+	}								\
651 665
     }
652 666
 
653 667