Archived Forum Post

Index of archived forum posts

Question:

Problem zipping big files in 9.4.1

Oct 15 '13 at 12:01

Hello,

I recently switched to VC 2005 c++ lib version 9.4.1 from the older 9.3.1

There might be a failure in zipping big files: Unpacking these zip files ends up with an error ( LastError text see below ).

In my example the zip file contains as first file a giant db dump as a text file and two small files with descriptive text.

If the zip file is additionally encrypted, there is a wrong unzip password reported, but I think this is misleading, maybe it´s caused by a corrupted header structure ?

Trying WINRAR to unzip, the file isn´t unzipped without any error.

Using WINZIP the check reports (text translated from german): No accordance of the central and the local directory for xyz.zip ( Compression size local: 0 , central 11832852251 )

The central size is the correct value: in my example the packed file is a ~118 GB text file. The effect seems to be the same also with smaller files of only some GB size. Very small files in the kB range are packed and unpacked normally.

Unzip: DllDate: Aug 15 2013

ChilkatVersion: 9.4.1.42

UnlockPrefix: .........

Username: W7W:kdlorig

Architecture: Little Endian; 32-bit

Language: Visual C++ 8.0

VerboseLogging: 1

oemCodePage: 850

UnzipDir: G:SO-EDAT-DSTENTP-TEST-UM13-Z-000-KUNDE-Name-SOFTWAREENTP

onlyNewer: 0

ignoreZipDirs: 0

numEntries: 4

totalSizeToUnzip: 11832869810 This zip entry is a directory...

Making sure the output file can be created... inflateToOutput2:

_cMethod: 0 wzCryptInit:

mode: 3

ZipAes_derive_key:

pwd: 6833 6170 6777 716A 6834 6133 6866 7863

7273 6A34 3033 3864 6B70 6839 7877 7769

pwd_len: 32

salt: D61B FF4A C102 0000 00E4 1F36 D587 C583

salt_len: 16

key_len: 66

key: D023 3D56 7EBE 4800 0E42 1BED BCAD 6F6E

E1A6 5942 73C2 520A 8045 5298 5ED6 FB6A

1DBE BEEC AC74 311E D6DC A592 85E0 906C

E9EB 2190 EF5F 2329 AC9C 9861 3BBD B2E8

0EE1

--ZipAes_derive_key

key_length: 32

kbuf: D023 3D56 7EBE 4800 0E42 1BED BCAD 6F6E

E1A6 5942 73C2 520A 8045 5298 5ED6 FB6A

passwordVerifier: 0EE1

--wzCryptInit

Invalid password for WinZip AES decryption;

--inflateToOutput2

Unzip failed

filename: G:SO-EDAT-DSTENTP-TEST-UM13-Z-000-KUNDE-Name-SOFTWAREENTPDIV-20131013-221102DIV- 20131013-221102-DATA.ZIP

Making sure the output file can be created...

inflateToOutput2:

_cMethod: 8

wzCryptInit:

mode: 3

ZipAes_derive_key:

pwd: 6833 6170 6777 716A 6834 6133 6866 7863

7273 6A34 3033 3864 6B70 6839 7877 7769

pwd_len: 32

salt: 6B71 9BA7 C902 E84D A750 47A4 195B 4CC0

salt_len: 16

key_len: 66

key: 484F F8ED 910D 7999 9650 6C55 E0F1 9195

6AD5 B6A8 7CEE 7B81 967F FEA5 444E 314B

815F 2F4E 9F85 B10B B44A 5898 C464 736E

C16A 15D5 0672 72E5 C879 9E56 E477 240F

00DD

--ZipAes_derive_key

key_length: 32

kbuf: 484F F8ED 910D 7999 9650 6C55 E0F1 9195

6AD5 B6A8 7CEE 7B81 967F FEA5 444E 314B

passwordVerifier: 00DD

--wzCryptInit

Inflating from deflated bytes...

bZlib: 0

bEnhancedDeflate: 0

--inflateToOutput2

Making sure the output file can be created...

inflateToOutput2:

_cMethod: 8

wzCryptInit:

mode: 3

ZipAes_derive_key:

pwd: 6833 6170 6777 716A 6834 6133 6866 7863

7273 6A34 3033 3864 6B70 6839 7877 7769

pwd_len: 32

salt: ED3F 70DE 8F23 4FDD 720F 26B8 B347 7B1F

salt_len: 16

key_len: 66

key: F9F4 AAB5 94C7 14D6 03B9 0882 5AB7 7DD8

6270 5514 011D 2D39 FA8F 0F52 5FC2 562F

F09B E36A D2CC 2202 9515 2297 F74A F9B0

C415 EDDD 9EFF C591 6C85 3423 D239 563F

0C91

--ZipAes_derive_key

key_length: 32

kbuf: F9F4 AAB5 94C7 14D6 03B9 0882 5AB7 7DD8

6270 5514 011D 2D39 FA8F 0F52 5FC2 562F

passwordVerifier: 0C91

--wzCryptInit

Inflating from deflated bytes...

bZlib: 0

bEnhancedDeflate: 0

--inflateToOutput2

numUnzipped: 2

Not all files extracted successfully.

Failed.

--Unzip

--ChilkatLog

Loglevel - Debug


Answer

I'm confused about a number of things:

1) "Trying WINRAR to unzip, the file isn´t unzipped without any error." Does WINRAR extract all the files? Your statement has too many negatives for me to understand clearly: "isn't unzipped without any error" technically means WINRAR failed to unzip, but did not show any error. Is that what you really meant?

2) "Using WINZIP the check reports (text translated from german): No accordance of the central and the local directory for xyz.zip ( Compression size local: 0 , central 11832852251 )" Does this mean that the .zip in question is corrupt in some way? Or do you mean to say that these other tools have no problem with the .zip, but Chilkat does?

3) The indentation for the LastErrorText was lost, and makes it difficult to read.

4) If you wish to try a new pre-release with potentially improved information in LastErrorText, I uploaded a build to this URL: http://www.chilkatsoft.com/preRelease/chilkat-9.4.1-x86-vc8.zip


Answer

Hello, thank you for your quick answer.

I have to apologize for my english, if I confused you.

ad 1) WINRAR doesn´t unpack the first file ( the giant one ), only the two small files following after the first. And yes, it reports no error, but the first file simply isn´t unzipped.

It makes sense to me that the file is not unzipped, if WINRAR reads the zip file directory and finds the first entry with a length of zero (like WINZIP reports for that entry).

ad 2) I don´t know exactly, how to answer that question. Maybe the content itself is perfectly ok, but how to know this, if I can´t get it unpacked by any means (WINRAR/WINZIP/your LIB)? The size of the zip file seems to be correlated and matching to the original file size.

Also the (false?) reported problem that the password would be incorrect points for me towards a defective directory entry, because the whole zip was zipped with the same password and the password was correct for unpacking the last two files.

Simply spoken, the difference to me is: With lib V9.3.1 handling such a file triple was perfectly ok. Zipping remotely, sending to our company and unzipping locally as WINZIP AES 256 bit with a 32 char password was fine. After recompiling my application the failure was born. Maybe there is something I´m doing wrong, because there were a few small adaptions necessary for the new V9.4.1, but I can´t imagine what and where ?

ad 3) I´m sorry, I copied the text via copy/paste from notepad++ to the entry field of the form and all line ends were totally lost, the text was inserted as a homogenous block without any lines :-) I then splitted the text to lines manually. So the identation was lost. What better way do you propose to append the LastErrorText ?

Thank you very much for your download link. I will download the prerelease and recompile.


Answer

I found and fixed the problem in creating the ZIP64 zip. Here are new VC++ 8 builds:

32-bit: http://www.chilkatsoft.com/preRelease/chilkat-9.4.1-x86-vc8.zip

64-bit: http://www.chilkatsoft.com/preRelease/chilkat-9.4.1-x86_64-vc8.zip