zip/zip-3.0-fix-memory_leaks.patch

66 lines
1.7 KiB
Diff

--- 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;