Browse code

libclamav: mspack: fix memory leak

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

Tomasz Kojm authored on 2004/07/31 04:13:21
Showing 3 changed files
... ...
@@ -1,3 +1,7 @@
1
+Fri Jul 30 21:08:29 CEST 2004 (tk)
2
+----------------------------------
3
+  * libclamav: mspack: fix memory leak
4
+
1 5
 Fri Jul 30 19:47:11 CEST 2004 (tk)
2 6
 ----------------------------------
3 7
   * clamd: scanstream: add mutex around gethostbyname
... ...
@@ -249,7 +249,7 @@ static struct mscabd_cabinet *cabd_dopen(struct mscab_decompressor *base,
249 249
   if ((fh = sys->dopen(sys, desc, MSPACK_SYS_OPEN_READ))) {
250 250
     if ((cab = sys->alloc(sys, sizeof(struct mscabd_cabinet_p)))) {
251 251
       cab->base.filename = "descriptor";
252
-      cab->base.desc = desc;
252
+      cab->base.desc = dup(desc);
253 253
       error = cabd_read_headers(sys, fh, cab, (off_t) 0, 0);
254 254
       if (error) {
255 255
 	cabd_close(base, (struct mscabd_cabinet *) cab);
... ...
@@ -677,7 +677,7 @@ static struct mscabd_cabinet *cabd_dsearch(struct mscab_decompressor *base,
677 677
   struct mspack_file *fh;
678 678
   unsigned int firstlen = 0;
679 679
   off_t filelen;
680
-  char *filename = "descriptor-";
680
+  char *filename = "descriptor";
681 681
 
682 682
   if (!base) return NULL;
683 683
   sys = this->system;
... ...
@@ -709,8 +709,8 @@ static struct mscabd_cabinet *cabd_dsearch(struct mscab_decompressor *base,
709 709
 		     (unsigned int) (firstlen - filelen));
710 710
       }
711 711
     }
712
-    
713
-    /* sys->close(fh); */
712
+
713
+    sys->close(fh);
714 714
   }
715 715
   else {
716 716
     this->error = MSPACK_ERR_OPEN;
... ...
@@ -811,7 +811,7 @@ static int cabd_find(struct mscab_decompressor_p *this, unsigned char *buf,
811 811
 	    return MSPACK_ERR_NOMEMORY;
812 812
 	  }
813 813
 	  cab->base.filename = filename;
814
-	  cab->base.desc = desc;
814
+	  cab->base.desc = dup(desc);
815 815
 	  if (cabd_read_headers(sys, fh, cab, caboff, 1)) {
816 816
 	    /* destroy the failed cabinet */
817 817
 	    cabd_close((struct mscab_decompressor *) this,
... ...
@@ -96,7 +96,7 @@ struct mspack_system *mspack_default_system = NULL;
96 96
 
97 97
 struct mspack_file_p {
98 98
   FILE *fh;
99
-  char *name;
99
+  const char *name;
100 100
   int desc;
101 101
 };
102 102