summaryrefslogtreecommitdiffstats
path: root/cpukit/zlib/contrib/minizip
diff options
context:
space:
mode:
authorRalf Corsepius <ralf.corsepius@rtems.org>2011-03-18 10:10:55 +0000
committerRalf Corsepius <ralf.corsepius@rtems.org>2011-03-18 10:10:55 +0000
commit8198f694f52b6a6284069a37b44bcce5847acdf2 (patch)
tree37d98345fa38b6c25ca6e1b0658ffd45c31cbfcd /cpukit/zlib/contrib/minizip
parentImport from zlib-1.2.5 (diff)
downloadrtems-8198f694f52b6a6284069a37b44bcce5847acdf2.tar.bz2
Import zlib-1.2.3
Diffstat (limited to 'cpukit/zlib/contrib/minizip')
-rw-r--r--cpukit/zlib/contrib/minizip/ChangeLogUnzip4
-rw-r--r--cpukit/zlib/contrib/minizip/crypt.h4
-rw-r--r--cpukit/zlib/contrib/minizip/ioapi.c4
-rw-r--r--cpukit/zlib/contrib/minizip/ioapi.h4
-rw-r--r--cpukit/zlib/contrib/minizip/iowin32.c4
-rw-r--r--cpukit/zlib/contrib/minizip/iowin32.h4
-rw-r--r--cpukit/zlib/contrib/minizip/miniunz.c8
-rw-r--r--cpukit/zlib/contrib/minizip/minizip.c4
-rw-r--r--cpukit/zlib/contrib/minizip/mztools.c32
-rw-r--r--cpukit/zlib/contrib/minizip/mztools.h8
-rw-r--r--cpukit/zlib/contrib/minizip/unzip.c7
-rw-r--r--cpukit/zlib/contrib/minizip/unzip.h8
-rw-r--r--cpukit/zlib/contrib/minizip/zip.c43
-rw-r--r--cpukit/zlib/contrib/minizip/zip.h7
14 files changed, 91 insertions, 50 deletions
diff --git a/cpukit/zlib/contrib/minizip/ChangeLogUnzip b/cpukit/zlib/contrib/minizip/ChangeLogUnzip
index 4be4d16249..50ca6a9e0f 100644
--- a/cpukit/zlib/contrib/minizip/ChangeLogUnzip
+++ b/cpukit/zlib/contrib/minizip/ChangeLogUnzip
@@ -1,3 +1,7 @@
+Change in 1.01e (12 feb 05)
+- Fix in zipOpen2 for globalcomment (Rolf Kalbermatter)
+- Fix possible memory leak in unzip.c (Zoran Stevanovic)
+
Change in 1.01b (20 may 04)
- Integrate patch from Debian package (submited by Mark Brown)
- Add tools mztools from Xavier Roche
diff --git a/cpukit/zlib/contrib/minizip/crypt.h b/cpukit/zlib/contrib/minizip/crypt.h
index 7f8a634280..622f4bc2ec 100644
--- a/cpukit/zlib/contrib/minizip/crypt.h
+++ b/cpukit/zlib/contrib/minizip/crypt.h
@@ -1,9 +1,9 @@
/* crypt.h -- base code for crypt/uncrypt ZIPfile
- Version 1.01, May 8th, 2004
+ Version 1.01e, February 12th, 2005
- Copyright (C) 1998-2004 Gilles Vollant
+ Copyright (C) 1998-2005 Gilles Vollant
This code is a modified version of crypting code in Infozip distribution
diff --git a/cpukit/zlib/contrib/minizip/ioapi.c b/cpukit/zlib/contrib/minizip/ioapi.c
index c9e69f27ca..f1bee23e64 100644
--- a/cpukit/zlib/contrib/minizip/ioapi.c
+++ b/cpukit/zlib/contrib/minizip/ioapi.c
@@ -1,9 +1,9 @@
/* ioapi.c -- IO base function header for compress/uncompress .zip
files using zlib + zip or unzip API
- Version 1.01, May 8th, 2004
+ Version 1.01e, February 12th, 2005
- Copyright (C) 1998-2004 Gilles Vollant
+ Copyright (C) 1998-2005 Gilles Vollant
*/
#include <stdio.h>
diff --git a/cpukit/zlib/contrib/minizip/ioapi.h b/cpukit/zlib/contrib/minizip/ioapi.h
index b76116178a..7d457baab3 100644
--- a/cpukit/zlib/contrib/minizip/ioapi.h
+++ b/cpukit/zlib/contrib/minizip/ioapi.h
@@ -1,9 +1,9 @@
/* ioapi.h -- IO base function header for compress/uncompress .zip
files using zlib + zip or unzip API
- Version 1.01, May 8th, 2004
+ Version 1.01e, February 12th, 2005
- Copyright (C) 1998-2004 Gilles Vollant
+ Copyright (C) 1998-2005 Gilles Vollant
*/
#ifndef _ZLIBIOAPI_H
diff --git a/cpukit/zlib/contrib/minizip/iowin32.c b/cpukit/zlib/contrib/minizip/iowin32.c
index 940dc0b498..a9b5f78399 100644
--- a/cpukit/zlib/contrib/minizip/iowin32.c
+++ b/cpukit/zlib/contrib/minizip/iowin32.c
@@ -2,9 +2,9 @@
files using zlib + zip or unzip API
This IO API version uses the Win32 API (for Microsoft Windows)
- Version 1.01, May 8th, 2004
+ Version 1.01e, February 12th, 2005
- Copyright (C) 1998-2004 Gilles Vollant
+ Copyright (C) 1998-2005 Gilles Vollant
*/
#include <stdlib.h>
diff --git a/cpukit/zlib/contrib/minizip/iowin32.h b/cpukit/zlib/contrib/minizip/iowin32.h
index 8774fe7406..a3a437adf8 100644
--- a/cpukit/zlib/contrib/minizip/iowin32.h
+++ b/cpukit/zlib/contrib/minizip/iowin32.h
@@ -2,9 +2,9 @@
files using zlib + zip or unzip API
This IO API version uses the Win32 API (for Microsoft Windows)
- Version 1.01, May 8th, 2004
+ Version 1.01e, February 12th, 2005
- Copyright (C) 1998-2004 Gilles Vollant
+ Copyright (C) 1998-2005 Gilles Vollant
*/
#include <windows.h>
diff --git a/cpukit/zlib/contrib/minizip/miniunz.c b/cpukit/zlib/contrib/minizip/miniunz.c
index a6b06a2082..f599938884 100644
--- a/cpukit/zlib/contrib/minizip/miniunz.c
+++ b/cpukit/zlib/contrib/minizip/miniunz.c
@@ -1,8 +1,8 @@
/*
miniunz.c
- Version 1.01b, May 30th, 2004
+ Version 1.01e, February 12th, 2005
- Copyright (C) 1998-2004 Gilles Vollant
+ Copyright (C) 1998-2005 Gilles Vollant
*/
@@ -317,7 +317,7 @@ int do_extract_currentfile(uf,popt_extract_without_path,popt_overwrite,password)
printf("The file %s exists. Overwrite ? [y]es, [n]o, [A]ll: ",write_filename);
ret = scanf("%1s",answer);
- if (ret != 1)
+ if (ret != 1)
{
exit(EXIT_FAILURE);
}
@@ -567,7 +567,7 @@ int main(argc,argv)
return do_list(uf);
else if (opt_do_extract==1)
{
- if (opt_extractdir && chdir(dirname))
+ if (opt_extractdir && chdir(dirname))
{
printf("Error changing into %s, aborting\n", dirname);
exit(-1);
diff --git a/cpukit/zlib/contrib/minizip/minizip.c b/cpukit/zlib/contrib/minizip/minizip.c
index 918c32225c..f2dfecd8b1 100644
--- a/cpukit/zlib/contrib/minizip/minizip.c
+++ b/cpukit/zlib/contrib/minizip/minizip.c
@@ -1,8 +1,8 @@
/*
minizip.c
- Version 1.01b, May 30th, 2004
+ Version 1.01e, February 12th, 2005
- Copyright (C) 1998-2004 Gilles Vollant
+ Copyright (C) 1998-2005 Gilles Vollant
*/
#include <stdio.h>
diff --git a/cpukit/zlib/contrib/minizip/mztools.c b/cpukit/zlib/contrib/minizip/mztools.c
index c1266bc6c8..8a50ee4392 100644
--- a/cpukit/zlib/contrib/minizip/mztools.c
+++ b/cpukit/zlib/contrib/minizip/mztools.c
@@ -62,7 +62,7 @@ uLong* bytesRecovered;
unsigned int fnsize = READ_16(header + 26); /* file name length */
unsigned int extsize = READ_16(header + 28); /* extra field length */
filename[0] = extra[0] = '\0';
-
+
/* Header */
if (fwrite(header, 1, 30, fpOut) == 30) {
offset += 30;
@@ -70,7 +70,7 @@ uLong* bytesRecovered;
err = Z_ERRNO;
break;
}
-
+
/* Filename */
if (fnsize > 0) {
if (fread(filename, 1, fnsize, fpZip) == fnsize) {
@@ -103,7 +103,7 @@ uLong* bytesRecovered;
break;
}
}
-
+
/* Data */
{
int dataSize = cpsize;
@@ -133,7 +133,7 @@ uLong* bytesRecovered;
}
}
}
-
+
/* Central directory entry */
{
char header[46];
@@ -159,7 +159,7 @@ uLong* bytesRecovered;
/* Header */
if (fwrite(header, 1, 46, fpOutCD) == 46) {
offsetCD += 46;
-
+
/* Filename */
if (fnsize > 0) {
if (fwrite(filename, 1, fnsize, fpOutCD) == fnsize) {
@@ -172,7 +172,7 @@ uLong* bytesRecovered;
err = Z_STREAM_ERROR;
break;
}
-
+
/* Extra field */
if (extsize > 0) {
if (fwrite(extra, 1, extsize, fpOutCD) == extsize) {
@@ -182,7 +182,7 @@ uLong* bytesRecovered;
break;
}
}
-
+
/* Comment field */
if (comsize > 0) {
if ((int)fwrite(comment, 1, comsize, fpOutCD) == comsize) {
@@ -192,8 +192,8 @@ uLong* bytesRecovered;
break;
}
}
-
-
+
+
} else {
err = Z_ERRNO;
break;
@@ -225,17 +225,17 @@ uLong* bytesRecovered;
WRITE_32(header + 12, offsetCD); /* size of CD */
WRITE_32(header + 16, offset); /* offset to CD */
WRITE_16(header + 20, comsize); /* comment */
-
+
/* Header */
if (fwrite(header, 1, 22, fpOutCD) == 22) {
-
+
/* Comment field */
if (comsize > 0) {
if ((int)fwrite(comment, 1, comsize, fpOutCD) != comsize) {
err = Z_ERRNO;
}
}
-
+
} else {
err = Z_ERRNO;
}
@@ -248,7 +248,7 @@ uLong* bytesRecovered;
if (fpOutCD != NULL) {
int nRead;
char buffer[8192];
- while ( (nRead = fread(buffer, 1, sizeof(buffer), fpOutCD)) > 0) {
+ while ( (nRead = (int)fread(buffer, 1, sizeof(buffer), fpOutCD)) > 0) {
if ((int)fwrite(buffer, 1, nRead, fpOut) != nRead) {
err = Z_ERRNO;
break;
@@ -257,14 +257,14 @@ uLong* bytesRecovered;
fclose(fpOutCD);
}
}
-
+
/* Close */
fclose(fpZip);
fclose(fpOut);
-
+
/* Wipe temporary file */
(void)remove(fileOutTmp);
-
+
/* Number of recovered entries */
if (err == Z_OK) {
if (nRecovered != NULL) {
diff --git a/cpukit/zlib/contrib/minizip/mztools.h b/cpukit/zlib/contrib/minizip/mztools.h
index 88b34592bf..eee78dc56b 100644
--- a/cpukit/zlib/contrib/minizip/mztools.h
+++ b/cpukit/zlib/contrib/minizip/mztools.h
@@ -17,14 +17,14 @@ extern "C" {
#include "unzip.h"
-/* Repair a ZIP file (missing central directory)
+/* Repair a ZIP file (missing central directory)
file: file to recover
fileOut: output file after recovery
fileOutTmp: temporary file name used for recovery
*/
-extern int ZEXPORT unzRepair(const char* file,
- const char* fileOut,
- const char* fileOutTmp,
+extern int ZEXPORT unzRepair(const char* file,
+ const char* fileOut,
+ const char* fileOutTmp,
uLong* nRecovered,
uLong* bytesRecovered);
diff --git a/cpukit/zlib/contrib/minizip/unzip.c b/cpukit/zlib/contrib/minizip/unzip.c
index e14de9e5ba..9ad4766d8d 100644
--- a/cpukit/zlib/contrib/minizip/unzip.c
+++ b/cpukit/zlib/contrib/minizip/unzip.c
@@ -1,7 +1,7 @@
/* unzip.c -- IO for uncompress .zip files using zlib
- Version 1.01d, September 22th, 2004
+ Version 1.01e, February 12th, 2005
- Copyright (C) 1998-2004 Gilles Vollant
+ Copyright (C) 1998-2005 Gilles Vollant
Read unzip.h for more info
*/
@@ -1137,7 +1137,10 @@ extern int ZEXPORT unzOpenCurrentFile3 (file, method, level, raw, password)
if (err == Z_OK)
pfile_in_zip_read_info->stream_initialised=1;
else
+ {
+ TRYFREE(pfile_in_zip_read_info);
return err;
+ }
/* windowBits is passed < 0 to tell that there is no zlib header.
* Note that in this case inflate *requires* an extra "dummy" byte
* after the compressed stream in order to complete decompression and
diff --git a/cpukit/zlib/contrib/minizip/unzip.h b/cpukit/zlib/contrib/minizip/unzip.h
index 0c7c6f143c..b247937c80 100644
--- a/cpukit/zlib/contrib/minizip/unzip.h
+++ b/cpukit/zlib/contrib/minizip/unzip.h
@@ -1,11 +1,13 @@
/* unzip.h -- IO for uncompress .zip files using zlib
- Version 1.01, May 8th, 2004
+ Version 1.01e, February 12th, 2005
- Copyright (C) 1998-2004 Gilles Vollant
+ Copyright (C) 1998-2005 Gilles Vollant
This unzip package allow extract file from .ZIP file, compatible with PKZip 2.04g
WinZip, InfoZip tools and compatible.
- Encryption and multi volume ZipFile (span) are not supported.
+
+ Multi volume ZipFile (span) are not supported.
+ Encryption compatible with pkzip 2.04g only supported
Old compressions used by old PKZip 1.x are not supported
diff --git a/cpukit/zlib/contrib/minizip/zip.c b/cpukit/zlib/contrib/minizip/zip.c
index 2ccd7fd1ad..7fbe002743 100644
--- a/cpukit/zlib/contrib/minizip/zip.c
+++ b/cpukit/zlib/contrib/minizip/zip.c
@@ -1,7 +1,10 @@
/* zip.c -- IO on .zip files using zlib
- Version 1.01, May 8th, 2004
+ Version 1.01e, February 12th, 2005
- Copyright (C) 1998-2004 Gilles Vollant
+ 27 Dec 2004 Rolf Kalbermatter
+ Modification to zipOpen2 to support globalComment retrieval.
+
+ Copyright (C) 1998-2005 Gilles Vollant
Read zip.h for more info
*/
@@ -143,6 +146,9 @@ typedef struct
uLong begin_pos; /* position of the beginning of the zipfile */
uLong add_position_when_writting_offset;
uLong number_entry;
+#ifndef NO_ADDFILEINEXISTINGZIP
+ char *globalcomment;
+#endif
} zip_internal;
@@ -532,6 +538,7 @@ extern zipFile ZEXPORT zipOpen2 (pathname, append, globalcomment, pzlib_filefunc
/* now we add file in a zipfile */
# ifndef NO_ADDFILEINEXISTINGZIP
+ ziinit.globalcomment = NULL;
if (append == APPEND_STATUS_ADDINZIP)
{
uLong byte_before_the_zipfile;/* byte before the zipfile, (>0 for sfx)*/
@@ -592,7 +599,7 @@ extern zipFile ZEXPORT zipOpen2 (pathname, append, globalcomment, pzlib_filefunc
if (ziplocal_getLong(&ziinit.z_filefunc, ziinit.filestream,&offset_central_dir)!=ZIP_OK)
err=ZIP_ERRNO;
- /* zipfile comment length */
+ /* zipfile global comment length */
if (ziplocal_getShort(&ziinit.z_filefunc, ziinit.filestream,&size_comment)!=ZIP_OK)
err=ZIP_ERRNO;
@@ -606,9 +613,19 @@ extern zipFile ZEXPORT zipOpen2 (pathname, append, globalcomment, pzlib_filefunc
return NULL;
}
+ if (size_comment>0)
+ {
+ ziinit.globalcomment = ALLOC(size_comment+1);
+ if (ziinit.globalcomment)
+ {
+ size_comment = ZREAD(ziinit.z_filefunc, ziinit.filestream,ziinit.globalcomment,size_comment);
+ ziinit.globalcomment[size_comment]=0;
+ }
+ }
+
byte_before_the_zipfile = central_pos -
(offset_central_dir+size_central_dir);
- ziinit.add_position_when_writting_offset = byte_before_the_zipfile ;
+ ziinit.add_position_when_writting_offset = byte_before_the_zipfile;
{
uLong size_central_dir_to_read = size_central_dir;
@@ -641,10 +658,18 @@ extern zipFile ZEXPORT zipOpen2 (pathname, append, globalcomment, pzlib_filefunc
offset_central_dir+byte_before_the_zipfile,ZLIB_FILEFUNC_SEEK_SET)!=0)
err=ZIP_ERRNO;
}
+
+ if (globalcomment)
+ {
+ *globalcomment = ziinit.globalcomment;
+ }
# endif /* !NO_ADDFILEINEXISTINGZIP*/
if (err != ZIP_OK)
{
+# ifndef NO_ADDFILEINEXISTINGZIP
+ TRYFREE(ziinit.globalcomment);
+# endif /* !NO_ADDFILEINEXISTINGZIP*/
TRYFREE(zi);
return NULL;
}
@@ -1112,7 +1137,7 @@ extern int ZEXPORT zipClose (file, global_comment)
zip_internal* zi;
int err = 0;
uLong size_centraldir = 0;
- uLong centraldir_pos_inzip ;
+ uLong centraldir_pos_inzip;
uInt size_global_comment;
if (file == NULL)
return ZIP_PARAMERROR;
@@ -1123,12 +1148,15 @@ extern int ZEXPORT zipClose (file, global_comment)
err = zipCloseFileInZip (file);
}
+#ifndef NO_ADDFILEINEXISTINGZIP
+ if (global_comment==NULL)
+ global_comment = zi->globalcomment;
+#endif
if (global_comment==NULL)
size_global_comment = 0;
else
size_global_comment = (uInt)strlen(global_comment);
-
centraldir_pos_inzip = ZTELL(zi->z_filefunc,zi->filestream);
if (err==ZIP_OK)
{
@@ -1182,6 +1210,9 @@ extern int ZEXPORT zipClose (file, global_comment)
if (err == ZIP_OK)
err = ZIP_ERRNO;
+#ifndef NO_ADDFILEINEXISTINGZIP
+ TRYFREE(zi->globalcomment);
+#endif
TRYFREE(zi);
return err;
diff --git a/cpukit/zlib/contrib/minizip/zip.h b/cpukit/zlib/contrib/minizip/zip.h
index d5112c4dcb..acacce83b9 100644
--- a/cpukit/zlib/contrib/minizip/zip.h
+++ b/cpukit/zlib/contrib/minizip/zip.h
@@ -1,11 +1,12 @@
/* zip.h -- IO for compress .zip files using zlib
- Version 1.01, May 8th, 2004
+ Version 1.01e, February 12th, 2005
- Copyright (C) 1998-2004 Gilles Vollant
+ Copyright (C) 1998-2005 Gilles Vollant
This unzip package allow creates .ZIP file, compatible with PKZip 2.04g
WinZip, InfoZip tools and compatible.
- Encryption and multi volume ZipFile (span) are not supported.
+ Multi volume ZipFile (span) are not supported.
+ Encryption compatible with pkzip 2.04g only supported
Old compressions used by old PKZip 1.x are not supported
For uncompress .zip file, look at unzip.h