Question:
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
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
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.
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