File zip-3.0-fix-memory_leaks.patch of Package zip

--- zipfile.c	
+++ zipfile.c	
@@ -2166,7 +2166,7 @@ int readlocal(localz, z)
 #ifndef UTIL
   ulg start_disk = 0;
   uzoff_t start_offset = 0;
-  char *split_path;
+  char *split_path = NULL;
 
   start_disk = z->dsk;
   start_offset = z->off;
@@ -2197,6 +2197,7 @@ int readlocal(localz, z)
       split_path = get_in_split_path(in_path, start_disk);
     }
   }
+  if (split_path) free(split_path);
 #endif
 
   /* For utilities assume archive is on one disk for now */
@@ -6014,7 +6015,7 @@ int zipcopy(z)
   ulg e = 0;            /* extended local header size */
   ulg start_disk = 0;
   uzoff_t start_offset = 0;
-  char *split_path;
+  char *split_path = NULL;
   char buf[LOCHEAD + 1];
   struct zlist far *localz;
   int r;
@@ -6063,6 +6064,7 @@ int zipcopy(z)
         split_path = get_in_split_path(in_path, start_disk);
       }
     }
+    if (split_path) free(split_path);
 
     if (zfseeko(in_file, start_offset, SEEK_SET) != 0) {
       fclose(in_file);
--- zip.c	
+++ zip.c	
@@ -3450,6 +3450,7 @@ char **argv;            /* command line
                 }
               }
               */
+              free(value);  /* Added by Polo from forum */
               if (kk == 3) {
                 first_listarg = argnum;
                 kk = 4;
--- fileio.c	
+++ fileio.c	
@@ -696,6 +696,7 @@ int newnamew(namew, isdir, casesensitive
         return ZE_MEM;
       }
       strcpy(z->name, name);
+      if (z->oname) free(z->oname);
       z->oname = oname;
       oname = NULL;
       z->dosflag = dosflag;
@@ -959,6 +960,7 @@ int newname(name, isdir, casesensitive)
         return ZE_MEM;
       }
       strcpy(z->name, name);
+      if (z->oname) free(z->oname);
       z->oname = oname;
       z->dosflag = dosflag;
 

openSUSE Build Service is sponsored by