Commit Graph

50 Commits

Author SHA1 Message Date
Greg Tucker
dca9dd221e igzip: Use unaligned load on static header to fix usan
Clang with sanitizer on was catching on cast of static header.
Switching to uload64 macro for better general solution.

Change-Id: I495d440407bb1773841e2f7cdc48bd95fc1a2df4
Signed-off-by: Greg Tucker <greg.b.tucker@intel.com>
2020-11-04 12:40:08 -07:00
Greg Tucker
d7927673ba igzip: Inflate detect pre-gen header and use pre-expanded
Performance improvement for inflate to skip the time-consuming process of decode
table expansion when the header matches a known common dymanic one such as
produced by level 0 compression.

Change-Id: Ia2550b812a062b7cc2eb1b72bcb609f1a631e40b
Signed-off-by: Greg Tucker <greg.b.tucker@intel.com>
2020-10-21 18:09:49 -07:00
Greg Tucker
93049d0d1f igzip: Fix read header for correct null checking and init
Issue with reading header only appears when combined with new feature in cli of
multiple concatenated gzip files.

Change-Id: Id8df9150c6f27d8b22e810b511291f3fcf136723
Signed-off-by: Greg Tucker <greg.b.tucker@intel.com>
2020-08-13 15:21:10 -07:00
Roy Oursler
aae6e29d28 igzip: Remove unaligned stores
Change-Id: I8d351c8b7153178d26d6fc702ee3036b71165b93
Signed-off-by: Roy Oursler <roy.j.oursler@intel.com>
2019-03-07 09:27:50 -07:00
Roy Oursler
5be1ba2215 igzip: Remove undefined unaligned loads
Change-Id: I02591d958f8691d07b261218cf5ab361e8ad36c9
Signed-off-by: Roy Oursler <roy.j.oursler@intel.com>
2019-03-07 09:27:50 -07:00
Roy Oursler
9689ba7e13 igzip: Remove igzip copy of crc32_gzip
Change-Id: I859ed904effa0a8bd7462b77b13e359014912639
Signed-off-by: Roy Oursler <roy.j.oursler@intel.com>
2018-09-20 11:12:02 -07:00
Roy Oursler
c19657241a igzip: Setup optimized static header table to be default
Change-Id: Ia54682f7e1e321a26f941da8f884f385cfd42ad9
Signed-off-by: Roy Oursler <roy.j.oursler@intel.com>
2018-09-20 11:12:02 -07:00
Roy Oursler
52d974762b igzip: Create precomputed static inflate_huff_code
Change-Id: I94a2de2b5e5bebc37e30f5d597a95c493da504c0
Signed-off-by: Roy Oursler <roy.j.oursler@intel.com>
2018-09-20 11:12:02 -07:00
Roy Oursler
ff1928e8ec igzip: Create functions to write gzip/zlib headers
Change-Id: If5aaa277a01214bd36406ee11680df0904ad12f7
Signed-off-by: Roy Oursler <roy.j.oursler@intel.com>
2018-09-20 11:12:02 -07:00
Roy Oursler
43374f6776 igzip: Implement gzip/zlib header/trailer parsing
Change-Id: I3fe8653f2286212a9d6c6ecfa3b78752b2cac8ef
Signed-off-by: Roy Oursler <roy.j.oursler@intel.com>
2018-09-20 11:12:02 -07:00
Roy Oursler
11542000f0 igzip: Implement limited window size for inflate
Change-Id: Ib7fce6a51db99fc7e11f06f5916c2b755bfc5c67
Signed-off-by: Roy Oursler <roy.j.oursler@intel.com>
2018-09-20 11:12:02 -07:00
Roy Oursler
995d420c6b igzip: Fix inflate for large output files
Change-Id: I3d3532100f8d60e0b446f5c90fc820cbfd2df1ec
Signed-off-by: Roy Oursler <roy.j.oursler@intel.com>
2018-08-03 12:54:05 -07:00
Greg Tucker
d30b45ffbe igzip: Remove unused initialization in inflate expand huffcode
Change-Id: Ia9732fc4a2acc9990e3b2b77bc604f740ce6be30
Signed-off-by: Greg Tucker <greg.b.tucker@intel.com>
2018-06-21 14:39:08 -07:00
Roy Oursler
14ba3747b5 igzip: Optimize multibyte for small files
Change-Id: I8400e0be07da75fd549724147ab06aa71f7cc9df
Signed-off-by: Roy Oursler <roy.j.oursler@intel.com>
2018-06-14 15:30:14 -07:00
Roy Oursler
5d6d9a21eb igzip: Optimize bit reverse
Change-Id: I45244b8c2f07fab0f237b11b92fa5f557aff878b
Signed-off-by: Roy Oursler <roy.j.oursler@intel.com>
2018-06-14 15:30:14 -07:00
Roy Oursler
3732485914 igzip: Accept multiple inflate codes for matches of 258
Allow inflate to accept code 284 with extra bits 0x1f to be accepted
as a match of length 258. This matches zlib's behaviour.

Change-Id: Id85052ceea2b23d3db9c147672dd7996a4c66786
Signed-off-by: Roy Oursler <roy.j.oursler@intel.com>
2018-06-14 15:30:14 -07:00
Roy Oursler
a61e035445 igzip: Improve inflate invalid block identification
Change-Id: I31ab9fa641e448c643ff4c6e606837c07ec2b14f
Signed-off-by: Roy Oursler <roy.j.oursler@intel.com>
2018-06-14 15:30:14 -07:00
Roy Oursler
b3ddaff6c5 igzip: Create flag to determine maximum symbols decoded
Change-Id: I94c185bf10662931248ccae07aa5659626f1deb2
Signed-off-by: Roy Oursler <roy.j.oursler@intel.com>
2018-06-14 15:30:14 -07:00
Roy Oursler
2de5a0fd88 igzip: Swap length code lookup with length lookup
Change-Id: I9f1c3ea5353f2c2fa98bab1d0cb1eb3c7b7397f6
Signed-off-by: Roy Oursler <roy.j.oursler@intel.com>
2018-06-14 15:30:14 -07:00
Roy Oursler
ec6169ac3b igzip: Combine distance code and extra bit count lookup
Change-Id: I12dca7126313406afd6ccbbaa91e7a1cc4a91bc0
Signed-off-by: Roy Oursler <roy.j.oursler@intel.com>
2018-06-14 15:30:14 -07:00
Roy Oursler
abd1963a22 igzip: Allow decoding symbol triples
Change-Id: I82e088b65a37adb1853ce2525dafafec06586a0f
Signed-off-by: Roy Oursler <roy.j.oursler@intel.com>
2018-06-14 15:30:14 -07:00
Roy Oursler
bf4c2dab27 igzip: Allow decoding symbol pairs
Change-Id: I306404d7821cf4e43c28ae6477038b17a29b0c47
Signed-off-by: Roy Oursler <roy.j.oursler@intel.com>
2018-06-14 15:30:14 -07:00
Roy Oursler
3d1b5b40d3 igzip: Rearrangement of make_inflate_huff_code
Change-Id: Ieff4a7c03827ff6a41b2e8e7316b239b94343c1a
Signed-off-by: Roy Oursler <roy.j.oursler@intel.com>
2018-06-14 15:30:14 -07:00
Roy Oursler
222a68f760 igzip: Implement multibyte decode
Change-Id: I923a57a01f696f2082945fafcc2773655b9a5beb
Signed-off-by: Roy Oursler <roy.j.oursler@intel.com>
2018-06-14 15:30:14 -07:00
Roy Oursler
7a1dc55c27 igzip: Increase size of large short code lookup
Change-Id: I05a564d1759ae417a966f3a12621799db0edf80a
Signed-off-by: Roy Oursler <roy.j.oursler@intel.com>
2018-06-14 15:30:14 -07:00
Greg Tucker
a7fad4b9d2 igzip: Change a few conflicting functions to static
Signed-off-by: Greg Tucker <greg.b.tucker@intel.com>
2017-08-18 14:34:14 -07:00
Roy Oursler
48d7def5d9 igzip: Fix inflate total_out behavior to align with expected behavior
Modify total_out to be total data decompressed into user supplied buffers,
rather than to user supplied and internal buffers.

Signed-off-by: Roy Oursler <roy.j.oursler@intel.com>
2017-08-18 14:28:10 -07:00
Roy Oursler
34c341db35 igzip: Add reset functions for both deflate and inflate.
Change-Id: I8677a4365ac5c2343751660176f3b2eb4746ddfe
Signed-off-by: Roy Oursler <roy.j.oursler@intel.com>
2017-06-26 04:14:44 -04:00
Roy Oursler
ed15402f5b igzip: Add stateful dictionary support
Change-Id: I75dbac947787bc0041674468c88d0aa41b8b082f
Signed-off-by: Roy Oursler <roy.j.oursler@intel.com>
2017-06-26 04:11:48 -04:00
Greg Tucker
3025e83b91 igzip: Add avx2 optimized adler32 checksum
Change-Id: I019a38cf98836e3e6c7215a6914b85abb9399e33
Signed-off-by: Greg Tucker <greg.b.tucker@intel.com>
2017-06-26 03:56:49 -04:00
Roy Oursler
87652b4489 igzip: Modify inflate to optionally calculate adler32 hash
Change-Id: I314617b89b59d53608e464c7d2cf299faa3528b5
Signed-off-by: Roy Oursler <roy.j.oursler@intel.com>
2017-06-21 05:42:12 -04:00
Greg Tucker
9d0fda20fd igzip: Add copyright notice
Signed-off-by: Greg Tucker <greg.b.tucker@intel.com>
2016-12-06 21:06:10 -07:00
Roy Oursler
dfa4fd0940 igzip: Fix inflate bug with long when invalid huffman codes.
Change-Id: I52bfed0afa208462ed4a8614dd46cda5a5dc968d
Signed-off-by: Roy Oursler <roy.j.oursler@intel.com>
2016-12-06 16:18:32 -07:00
Roy Oursler
89fedafcc9 igzip: Fix make_huff_code_lookup_table initialization bug.
Change-Id: I192ce6c907271d52bfda5bf4be6d5b2a35a9d459
Signed-off-by: Roy Oursler <roy.j.oursler@intel.com>
2016-12-06 16:17:17 -07:00
Roy Oursler
f0a39fea2a igzip: Fix make_inflate_huff_code bug causing out of bounds writes
Change-Id: I7dcdb22031cb7b506f76578ee6d080924d917476
Signed-off-by: Roy Oursler <roy.j.oursler@intel.com>
2016-12-06 16:16:55 -07:00
Roy Oursler
600d887143 igzip: Fix bug in inflate when exactly one distance is coded
Initialize the lookup table so invalid lookups do not cause segfaults.

Change-Id: Ibb88c4c473fa233f8821c35b3e32ff62814c2b15
Signed-off-by: Roy Oursler <roy.j.oursler@intel.com>
2016-12-06 13:59:04 -07:00
Roy Oursler
e569ff70e7 igzip: Create flag for inflate to return crc of the decompressed data
Change-Id: I2d966f2d4ca135e3c938a9501bf5d2e11d8e92fe
Signed-off-by: Roy Oursler <roy.j.oursler@intel.com>
2016-12-06 11:16:34 -07:00
Roy Oursler
c17f2959d4 igzip: Fix bug read_header causing false error return values
Change-Id: I7b2fc0d7fa1ea78fab6c8788618d3e48ece56cfd
Signed-off-by: Roy Oursler <roy.j.oursler@intel.com>
2016-12-06 09:12:11 -07:00
Roy Oursler
b95c60cd1b igzip: Add check for non-valid decoded symbols
Change-Id: Ie95c28ca87b76ba8751fa5b07be345d3b00d5134
Signed-off-by: Roy Oursler <roy.j.oursler@intel.com>
2016-12-06 09:11:12 -07:00
Roy Oursler
fb62881057 igzip: Fix bugs in setup dynamic header when invalid input is supplied
Change-Id: I8df868e259397b289387ae7eb25d0805a22e33ea
Signed-off-by: Roy Oursler <roy.j.oursler@intel.com>
2016-12-06 09:10:34 -07:00
Roy Oursler
8c5fa7010a igzip: Fix incorrect block_state for inflate_stateless
Change-Id: Id26b528dca540ac8e177af59f9ace797fbb0a752
Signed-off-by: Roy Oursler <roy.j.oursler@intel.com>
2016-12-06 09:08:40 -07:00
Roy Oursler
e2b0640fd9 igzip: Make inline functions in igzip_inflate.c static
Make inline functions in igzip_inflate.c static to fix compiling issue on Mac.

Change-Id: Id4fdc0b8fe9ea9655bc3368bade579aebc8c2a72
Signed-off-by: Roy Oursler <roy.j.oursler@intel.com>
2016-12-05 16:44:31 -07:00
Roy Oursler
88f95d8594 igzip: Merge inflate.h and igzip_lib.h and fix external naming
Merge inflate.h and igzip_lib.h and rename many defines to avoid conflicts,
along with general cleanup of the new header.

Signed-off-by: Roy Oursler <roy.j.oursler@intel.com>
Reviewed-by: Greg Tucker <greg.b.tucker@intel.com>
2016-12-05 16:40:43 -07:00
Roy Oursler
d06e14b937 igzip: Port update_histogram and decode_huffman_code_block to windows
Signed-off-by: Roy Oursler <roy.j.oursler@intel.com>
Reviewed-by: Greg Tucker <greg.b.tucker@intel.com>
2016-12-05 16:17:54 -07:00
Roy Oursler
340e0f99df igzip: Implement stateful inflate.
Signed-off-by: Roy Oursler <roy.j.oursler@intel.com>
Reviewed-by: Greg Tucker <greg.b.tucker@intel.com>
2016-12-05 16:17:07 -07:00
Roy Oursler
60d9a30f4e igzip: Rename small_code_lookup
Rename small_code_lookup to short_code_lookup to match naming of
long_code_lookup.

Signed-off-by: Roy Oursler <roy.j.oursler@intel.com>
Reviewed-by: Greg Tucker <greg.b.tucker@intel.com>
2016-12-05 16:01:46 -07:00
Roy Oursler
464476003a igzip: Separate inflate_huffman_code into a large and small datastructure.
Signed-off-by: Roy Oursler <roy.j.oursler@intel.com>
Reviewed-by: Greg Tucker <greg.b.tucker@intel.com>
2016-12-05 16:01:21 -07:00
Roy Oursler
e64bc2ed37 igzip: Improve make_inflate_huffcode algorithm.
Signed-off-by: Roy Oursler <roy.j.oursler@intel.com>
Reviewed-by: Greg Tucker <greg.b.tucker@intel.com>
2016-12-05 16:00:57 -07:00
Roy Oursler
456be4cfc1 igzip: Rearrange inflate_state
Signed-off-by: Roy Oursler <roy.j.oursler@intel.com>
Reviewed-by: Greg Tucker <greg.b.tucker@intel.com>
2016-12-05 12:53:34 -07:00
Roy Oursler
09a5a243bf igzip: Implement statelesss inflate in assembly
Signed-off-by: Roy Oursler <roy.j.oursler@intel.com>
Reviewed-by: Greg Tucker <greg.b.tucker@intel.com>
2016-12-05 12:45:53 -07:00