diff options
author | Ralf Corsepius <ralf.corsepius@rtems.org> | 2011-03-18 10:10:55 +0000 |
---|---|---|
committer | Ralf Corsepius <ralf.corsepius@rtems.org> | 2011-03-18 10:10:55 +0000 |
commit | 8198f694f52b6a6284069a37b44bcce5847acdf2 (patch) | |
tree | 37d98345fa38b6c25ca6e1b0658ffd45c31cbfcd /cpukit/zlib/contrib/minizip | |
parent | Import from zlib-1.2.5 (diff) | |
download | rtems-8198f694f52b6a6284069a37b44bcce5847acdf2.tar.bz2 |
Import zlib-1.2.3
Diffstat (limited to 'cpukit/zlib/contrib/minizip')
-rw-r--r-- | cpukit/zlib/contrib/minizip/ChangeLogUnzip | 4 | ||||
-rw-r--r-- | cpukit/zlib/contrib/minizip/crypt.h | 4 | ||||
-rw-r--r-- | cpukit/zlib/contrib/minizip/ioapi.c | 4 | ||||
-rw-r--r-- | cpukit/zlib/contrib/minizip/ioapi.h | 4 | ||||
-rw-r--r-- | cpukit/zlib/contrib/minizip/iowin32.c | 4 | ||||
-rw-r--r-- | cpukit/zlib/contrib/minizip/iowin32.h | 4 | ||||
-rw-r--r-- | cpukit/zlib/contrib/minizip/miniunz.c | 8 | ||||
-rw-r--r-- | cpukit/zlib/contrib/minizip/minizip.c | 4 | ||||
-rw-r--r-- | cpukit/zlib/contrib/minizip/mztools.c | 32 | ||||
-rw-r--r-- | cpukit/zlib/contrib/minizip/mztools.h | 8 | ||||
-rw-r--r-- | cpukit/zlib/contrib/minizip/unzip.c | 7 | ||||
-rw-r--r-- | cpukit/zlib/contrib/minizip/unzip.h | 8 | ||||
-rw-r--r-- | cpukit/zlib/contrib/minizip/zip.c | 43 | ||||
-rw-r--r-- | cpukit/zlib/contrib/minizip/zip.h | 7 |
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 |