Fix compression method for encrypted empty files and directories when updating a ZipFile #902
+89
−35
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
I certify that I own, and have sufficient rights to contribute, all source code and related material intended to be compiled or integrated with the source code for the SharpZipLib open source product (the "Contribution"). My Contribution is licensed under the MIT License.
Fixes this issue: #885
This PR fixes an issue that is encountered when calling
ZipInputStream.GetNextEntry()on an encrypted zip that contains a directory which was added usingZipFile.AddDirectory().ZipFile.AddDirectory()adds an empty file with compression method set to Deflated but when running updates, will set this method to Stored as it is an empty file.ZipInputStreamwill observe that it is stored, crypted, and that the compressed size (0) less a crypto header size is not equal to the file size. This is becauseZipFilewill not write an encryption header for files that are zero length.When creating a directory with ZipOutputStream, the directory is NOT set to Stored despite being empty
This PR makes a change so as to not set the compression method to stored for files that are zero length if they are encrypted. It also adds a unit test to ensure that it works, this unit test failed before the fix was implemented. This PR also has formatting/linting changes which were automatically done by my code editor
I certify that I own, and have sufficient rights to contribute, all source code and related material intended to be compiled or integrated with the source code for the SharpZipLib open source product (the "Contribution"). My Contribution is licensed under the MIT License.