deflate-ruby 1.0.1 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (139) hide show
  1. checksums.yaml +4 -4
  2. data/CLAUDE.md +95 -92
  3. data/GEM_VERIFICATION_REPORT.md +140 -0
  4. data/LICENSE.txt +6 -6
  5. data/README.md +87 -65
  6. data/Rakefile +23 -0
  7. data/ext/deflate_ruby/{libdeflate/lib/x86/adler32_impl.h → adler32_impl.h} +8 -7
  8. data/ext/deflate_ruby/common_defs.h +748 -0
  9. data/ext/deflate_ruby/{libdeflate/lib/x86/cpu_features.c → cpu_features.c} +46 -16
  10. data/ext/deflate_ruby/{libdeflate/lib/x86/cpu_features.h → cpu_features.h} +2 -1
  11. data/ext/deflate_ruby/{libdeflate/lib/x86/crc32_impl.h → crc32_impl.h} +22 -23
  12. data/ext/deflate_ruby/{libdeflate/lib/crc32_multipliers.h → crc32_multipliers.h} +2 -4
  13. data/ext/deflate_ruby/{libdeflate/lib/x86/crc32_pclmul_template.h → crc32_pclmul_template.h} +23 -94
  14. data/ext/deflate_ruby/{libdeflate/lib/crc32_tables.h → crc32_tables.h} +1 -1
  15. data/ext/deflate_ruby/{libdeflate/lib/deflate_compress.c → deflate_compress.c} +59 -60
  16. data/ext/deflate_ruby/deflate_ruby.c +392 -218
  17. data/ext/deflate_ruby/deflate_ruby.h +6 -0
  18. data/ext/deflate_ruby/extconf.rb +35 -25
  19. data/ext/deflate_ruby/libdeflate/adler32.c +162 -0
  20. data/ext/deflate_ruby/libdeflate/{lib/arm → arm}/adler32_impl.h +14 -7
  21. data/ext/deflate_ruby/libdeflate/{lib/arm → arm}/crc32_impl.h +25 -31
  22. data/ext/deflate_ruby/libdeflate/arm/crc32_pmull_helpers.h +156 -0
  23. data/ext/deflate_ruby/libdeflate/arm/crc32_pmull_wide.h +226 -0
  24. data/ext/deflate_ruby/libdeflate/bt_matchfinder.h +342 -0
  25. data/ext/deflate_ruby/libdeflate/common_defs.h +2 -1
  26. data/ext/deflate_ruby/libdeflate/cpu_features_common.h +93 -0
  27. data/ext/deflate_ruby/libdeflate/crc32.c +262 -0
  28. data/ext/deflate_ruby/libdeflate/crc32_multipliers.h +375 -0
  29. data/ext/deflate_ruby/libdeflate/crc32_tables.h +587 -0
  30. data/ext/deflate_ruby/libdeflate/decompress_template.h +777 -0
  31. data/ext/deflate_ruby/libdeflate/deflate_compress.c +4128 -0
  32. data/ext/deflate_ruby/libdeflate/deflate_compress.h +15 -0
  33. data/ext/deflate_ruby/libdeflate/deflate_constants.h +56 -0
  34. data/ext/deflate_ruby/libdeflate/deflate_decompress.c +1208 -0
  35. data/ext/deflate_ruby/libdeflate/gzip_compress.c +90 -0
  36. data/ext/deflate_ruby/libdeflate/gzip_constants.h +45 -0
  37. data/ext/deflate_ruby/libdeflate/gzip_decompress.c +144 -0
  38. data/ext/deflate_ruby/libdeflate/hc_matchfinder.h +401 -0
  39. data/ext/deflate_ruby/libdeflate/ht_matchfinder.h +234 -0
  40. data/ext/deflate_ruby/libdeflate/lib_common.h +106 -0
  41. data/ext/deflate_ruby/libdeflate/libdeflate.h +2 -2
  42. data/ext/deflate_ruby/libdeflate/{lib/matchfinder_common.h → matchfinder_common.h} +3 -3
  43. data/ext/deflate_ruby/libdeflate/x86/adler32_impl.h +135 -0
  44. data/ext/deflate_ruby/libdeflate/x86/adler32_template.h +518 -0
  45. data/ext/deflate_ruby/libdeflate/x86/cpu_features.c +213 -0
  46. data/ext/deflate_ruby/libdeflate/x86/cpu_features.h +170 -0
  47. data/ext/deflate_ruby/libdeflate/x86/crc32_impl.h +159 -0
  48. data/ext/deflate_ruby/libdeflate/x86/crc32_pclmul_template.h +424 -0
  49. data/ext/deflate_ruby/libdeflate/x86/decompress_impl.h +57 -0
  50. data/ext/deflate_ruby/libdeflate.h +411 -0
  51. data/ext/deflate_ruby/matchfinder_common.h +224 -0
  52. data/ext/deflate_ruby/matchfinder_impl.h +122 -0
  53. data/ext/deflate_ruby/utils.c +141 -0
  54. data/ext/deflate_ruby/zlib_compress.c +82 -0
  55. data/ext/deflate_ruby/zlib_constants.h +21 -0
  56. data/ext/deflate_ruby/zlib_decompress.c +104 -0
  57. data/lib/deflate_ruby/version.rb +1 -1
  58. data/lib/deflate_ruby.rb +1 -63
  59. data/sig/deflate_ruby.rbs +4 -0
  60. data/test/test_deflate_ruby.rb +220 -0
  61. data/test/test_helper.rb +6 -0
  62. metadata +90 -144
  63. data/ext/deflate_ruby/libdeflate/CMakeLists.txt +0 -270
  64. data/ext/deflate_ruby/libdeflate/NEWS.md +0 -494
  65. data/ext/deflate_ruby/libdeflate/README.md +0 -228
  66. data/ext/deflate_ruby/libdeflate/libdeflate-config.cmake.in +0 -3
  67. data/ext/deflate_ruby/libdeflate/libdeflate.pc.in +0 -18
  68. data/ext/deflate_ruby/libdeflate/programs/CMakeLists.txt +0 -105
  69. data/ext/deflate_ruby/libdeflate/programs/benchmark.c +0 -696
  70. data/ext/deflate_ruby/libdeflate/programs/checksum.c +0 -218
  71. data/ext/deflate_ruby/libdeflate/programs/config.h.in +0 -19
  72. data/ext/deflate_ruby/libdeflate/programs/gzip.c +0 -688
  73. data/ext/deflate_ruby/libdeflate/programs/prog_util.c +0 -521
  74. data/ext/deflate_ruby/libdeflate/programs/prog_util.h +0 -225
  75. data/ext/deflate_ruby/libdeflate/programs/test_checksums.c +0 -200
  76. data/ext/deflate_ruby/libdeflate/programs/test_custom_malloc.c +0 -155
  77. data/ext/deflate_ruby/libdeflate/programs/test_incomplete_codes.c +0 -385
  78. data/ext/deflate_ruby/libdeflate/programs/test_invalid_streams.c +0 -130
  79. data/ext/deflate_ruby/libdeflate/programs/test_litrunlen_overflow.c +0 -72
  80. data/ext/deflate_ruby/libdeflate/programs/test_overread.c +0 -95
  81. data/ext/deflate_ruby/libdeflate/programs/test_slow_decompression.c +0 -472
  82. data/ext/deflate_ruby/libdeflate/programs/test_trailing_bytes.c +0 -151
  83. data/ext/deflate_ruby/libdeflate/programs/test_util.c +0 -237
  84. data/ext/deflate_ruby/libdeflate/programs/test_util.h +0 -61
  85. data/ext/deflate_ruby/libdeflate/programs/tgetopt.c +0 -118
  86. data/ext/deflate_ruby/libdeflate/scripts/android_build.sh +0 -118
  87. data/ext/deflate_ruby/libdeflate/scripts/android_tests.sh +0 -69
  88. data/ext/deflate_ruby/libdeflate/scripts/benchmark.sh +0 -10
  89. data/ext/deflate_ruby/libdeflate/scripts/checksum.sh +0 -10
  90. data/ext/deflate_ruby/libdeflate/scripts/checksum_benchmarks.sh +0 -253
  91. data/ext/deflate_ruby/libdeflate/scripts/cmake-helper.sh +0 -17
  92. data/ext/deflate_ruby/libdeflate/scripts/deflate_benchmarks.sh +0 -119
  93. data/ext/deflate_ruby/libdeflate/scripts/exec_tests.sh +0 -38
  94. data/ext/deflate_ruby/libdeflate/scripts/gen-release-archives.sh +0 -37
  95. data/ext/deflate_ruby/libdeflate/scripts/gen_bitreverse_tab.py +0 -19
  96. data/ext/deflate_ruby/libdeflate/scripts/gen_crc32_multipliers.c +0 -199
  97. data/ext/deflate_ruby/libdeflate/scripts/gen_crc32_tables.c +0 -105
  98. data/ext/deflate_ruby/libdeflate/scripts/gen_default_litlen_costs.py +0 -44
  99. data/ext/deflate_ruby/libdeflate/scripts/gen_offset_slot_map.py +0 -29
  100. data/ext/deflate_ruby/libdeflate/scripts/gzip_tests.sh +0 -523
  101. data/ext/deflate_ruby/libdeflate/scripts/libFuzzer/deflate_compress/corpus/0 +0 -0
  102. data/ext/deflate_ruby/libdeflate/scripts/libFuzzer/deflate_compress/fuzz.c +0 -95
  103. data/ext/deflate_ruby/libdeflate/scripts/libFuzzer/deflate_decompress/corpus/0 +0 -3
  104. data/ext/deflate_ruby/libdeflate/scripts/libFuzzer/deflate_decompress/fuzz.c +0 -62
  105. data/ext/deflate_ruby/libdeflate/scripts/libFuzzer/fuzz.sh +0 -108
  106. data/ext/deflate_ruby/libdeflate/scripts/libFuzzer/gzip_decompress/corpus/0 +0 -0
  107. data/ext/deflate_ruby/libdeflate/scripts/libFuzzer/gzip_decompress/fuzz.c +0 -19
  108. data/ext/deflate_ruby/libdeflate/scripts/libFuzzer/zlib_decompress/corpus/0 +0 -3
  109. data/ext/deflate_ruby/libdeflate/scripts/libFuzzer/zlib_decompress/fuzz.c +0 -19
  110. data/ext/deflate_ruby/libdeflate/scripts/run_tests.sh +0 -416
  111. data/ext/deflate_ruby/libdeflate/scripts/toolchain-i686-w64-mingw32.cmake +0 -8
  112. data/ext/deflate_ruby/libdeflate/scripts/toolchain-x86_64-w64-mingw32.cmake +0 -8
  113. /data/ext/deflate_ruby/{libdeflate/lib/adler32.c → adler32.c} +0 -0
  114. /data/ext/deflate_ruby/{libdeflate/lib/x86/adler32_template.h → adler32_template.h} +0 -0
  115. /data/ext/deflate_ruby/{libdeflate/lib/bt_matchfinder.h → bt_matchfinder.h} +0 -0
  116. /data/ext/deflate_ruby/{libdeflate/lib/cpu_features_common.h → cpu_features_common.h} +0 -0
  117. /data/ext/deflate_ruby/{libdeflate/lib/crc32.c → crc32.c} +0 -0
  118. /data/ext/deflate_ruby/{libdeflate/lib/arm/crc32_pmull_helpers.h → crc32_pmull_helpers.h} +0 -0
  119. /data/ext/deflate_ruby/{libdeflate/lib/arm/crc32_pmull_wide.h → crc32_pmull_wide.h} +0 -0
  120. /data/ext/deflate_ruby/{libdeflate/lib/x86/decompress_impl.h → decompress_impl.h} +0 -0
  121. /data/ext/deflate_ruby/{libdeflate/lib/decompress_template.h → decompress_template.h} +0 -0
  122. /data/ext/deflate_ruby/{libdeflate/lib/deflate_compress.h → deflate_compress.h} +0 -0
  123. /data/ext/deflate_ruby/{libdeflate/lib/deflate_constants.h → deflate_constants.h} +0 -0
  124. /data/ext/deflate_ruby/{libdeflate/lib/deflate_decompress.c → deflate_decompress.c} +0 -0
  125. /data/ext/deflate_ruby/{libdeflate/lib/gzip_compress.c → gzip_compress.c} +0 -0
  126. /data/ext/deflate_ruby/{libdeflate/lib/gzip_constants.h → gzip_constants.h} +0 -0
  127. /data/ext/deflate_ruby/{libdeflate/lib/gzip_decompress.c → gzip_decompress.c} +0 -0
  128. /data/ext/deflate_ruby/{libdeflate/lib/hc_matchfinder.h → hc_matchfinder.h} +0 -0
  129. /data/ext/deflate_ruby/{libdeflate/lib/ht_matchfinder.h → ht_matchfinder.h} +0 -0
  130. /data/ext/deflate_ruby/{libdeflate/lib/lib_common.h → lib_common.h} +0 -0
  131. /data/ext/deflate_ruby/libdeflate/{lib/arm → arm}/cpu_features.c +0 -0
  132. /data/ext/deflate_ruby/libdeflate/{lib/arm → arm}/cpu_features.h +0 -0
  133. /data/ext/deflate_ruby/libdeflate/{lib/arm → arm}/matchfinder_impl.h +0 -0
  134. /data/ext/deflate_ruby/libdeflate/{lib/riscv → riscv}/matchfinder_impl.h +0 -0
  135. /data/ext/deflate_ruby/libdeflate/{lib/utils.c → utils.c} +0 -0
  136. /data/ext/deflate_ruby/libdeflate/{lib/x86 → x86}/matchfinder_impl.h +0 -0
  137. /data/ext/deflate_ruby/libdeflate/{lib/zlib_compress.c → zlib_compress.c} +0 -0
  138. /data/ext/deflate_ruby/libdeflate/{lib/zlib_constants.h → zlib_constants.h} +0 -0
  139. /data/ext/deflate_ruby/libdeflate/{lib/zlib_decompress.c → zlib_decompress.c} +0 -0
@@ -1,95 +0,0 @@
1
- #include <assert.h>
2
- #include <libdeflate.h>
3
- #include <stdbool.h>
4
- #include <stdint.h>
5
- #include <stdlib.h>
6
- #include <string.h>
7
- #include <sys/mman.h>
8
- #include <unistd.h>
9
-
10
- static void
11
- alloc_guarded_buffer(size_t size, uint8_t **start_ret, uint8_t **end_ret)
12
- {
13
- const size_t pagesize = sysconf(_SC_PAGESIZE);
14
- const size_t nr_pages = (size + pagesize - 1) / pagesize;
15
- uint8_t *base_addr, *start, *end;
16
-
17
- /* Allocate buffer and guard pages. */
18
- base_addr = mmap(NULL, (nr_pages + 2) * pagesize, PROT_READ|PROT_WRITE,
19
- MAP_PRIVATE|MAP_ANONYMOUS, -1, 0);
20
- assert(base_addr != (uint8_t *)MAP_FAILED);
21
- start = base_addr + pagesize;
22
- end = start + (nr_pages * pagesize);
23
-
24
- /* Unmap the guard pages. */
25
- munmap(base_addr, pagesize);
26
- munmap(end, pagesize);
27
-
28
- *start_ret = start;
29
- *end_ret = end;
30
- }
31
-
32
- static void
33
- free_guarded_buffer(uint8_t *start, uint8_t *end)
34
- {
35
- munmap(start, end - start);
36
- }
37
-
38
- /* Fuzz the DEFLATE compression and decompression round trip. */
39
- int LLVMFuzzerTestOneInput(const uint8_t *in, size_t insize)
40
- {
41
- int level;
42
- bool use_bound;
43
- struct libdeflate_compressor *c;
44
- struct libdeflate_decompressor *d;
45
- size_t csize_avail;
46
- uint8_t *ubuf_start, *ubuf_end, *ubuf;
47
- uint8_t *cbuf_start, *cbuf_end, *cbuf;
48
- uint8_t *dbuf_start, *dbuf_end, *dbuf;
49
- size_t csize;
50
- enum libdeflate_result res;
51
-
52
- if (insize < 2)
53
- return 0;
54
-
55
- level = in[0] % 13;
56
- use_bound = in[1] % 2;
57
- in += 2;
58
- insize -= 2;
59
-
60
- c = libdeflate_alloc_compressor(level);
61
- d = libdeflate_alloc_decompressor();
62
-
63
- /* Use guard pages to make all input/output buffer overflows segfault */
64
-
65
- alloc_guarded_buffer(insize, &ubuf_start, &ubuf_end);
66
- ubuf = ubuf_end - insize;
67
- memcpy(ubuf, in, insize);
68
-
69
- csize_avail = use_bound ? libdeflate_deflate_compress_bound(c, insize) :
70
- insize;
71
- alloc_guarded_buffer(csize_avail, &cbuf_start, &cbuf_end);
72
- cbuf = cbuf_end - csize_avail;
73
-
74
- alloc_guarded_buffer(insize, &dbuf_start, &dbuf_end);
75
- dbuf = dbuf_end - insize;
76
-
77
- csize = libdeflate_deflate_compress(c, ubuf, insize, cbuf, csize_avail);
78
- if (csize != 0) {
79
- assert(csize <= csize_avail);
80
- memmove(cbuf_end - csize, cbuf, csize);
81
- res = libdeflate_deflate_decompress(d, cbuf_end - csize, csize,
82
- dbuf, insize, NULL);
83
- assert(res == LIBDEFLATE_SUCCESS);
84
- assert(memcmp(in, dbuf, insize) == 0);
85
- } else {
86
- assert(!use_bound);
87
- }
88
-
89
- libdeflate_free_compressor(c);
90
- libdeflate_free_decompressor(d);
91
- free_guarded_buffer(ubuf_start, ubuf_end);
92
- free_guarded_buffer(cbuf_start, cbuf_end);
93
- free_guarded_buffer(dbuf_start, dbuf_end);
94
- return 0;
95
- }
@@ -1,3 +0,0 @@
1
- u�1
2
- �@Eg�Bl5
3
- ��V���6j��X{�i=���l=����l�����?t���D
@@ -1,62 +0,0 @@
1
- #include <assert.h>
2
- #include <libdeflate.h>
3
- #include <stdbool.h>
4
- #include <stdint.h>
5
- #include <stdlib.h>
6
- #include <string.h>
7
- #include <sys/mman.h>
8
- #include <unistd.h>
9
-
10
- static void
11
- alloc_guarded_buffer(size_t size, uint8_t **start_ret, uint8_t **end_ret)
12
- {
13
- const size_t pagesize = sysconf(_SC_PAGESIZE);
14
- const size_t nr_pages = (size + pagesize - 1) / pagesize;
15
- uint8_t *base_addr, *start, *end;
16
-
17
- /* Allocate buffer and guard pages. */
18
- base_addr = mmap(NULL, (nr_pages + 2) * pagesize, PROT_READ|PROT_WRITE,
19
- MAP_PRIVATE|MAP_ANONYMOUS, -1, 0);
20
- assert(base_addr != (uint8_t *)MAP_FAILED);
21
- start = base_addr + pagesize;
22
- end = start + (nr_pages * pagesize);
23
-
24
- /* Unmap the guard pages. */
25
- munmap(base_addr, pagesize);
26
- munmap(end, pagesize);
27
-
28
- *start_ret = start;
29
- *end_ret = end;
30
- }
31
-
32
- static void
33
- free_guarded_buffer(uint8_t *start, uint8_t *end)
34
- {
35
- munmap(start, end - start);
36
- }
37
-
38
- /* Fuzz DEFLATE decompression. */
39
- int LLVMFuzzerTestOneInput(const uint8_t *in, size_t insize)
40
- {
41
- size_t outsize_avail = 3 * insize;
42
- uint8_t *cbuf_start, *cbuf_end, *cbuf;
43
- uint8_t *dbuf_start, *dbuf_end, *dbuf;
44
- struct libdeflate_decompressor *d;
45
-
46
- /* Use guard pages to make all input/output buffer overflows segfault */
47
-
48
- alloc_guarded_buffer(insize, &cbuf_start, &cbuf_end);
49
- cbuf = cbuf_end - insize;
50
- memcpy(cbuf, in, insize);
51
-
52
- alloc_guarded_buffer(outsize_avail, &dbuf_start, &dbuf_end);
53
- dbuf = dbuf_end - outsize_avail;
54
-
55
- d = libdeflate_alloc_decompressor();
56
- libdeflate_deflate_decompress(d, cbuf, insize, dbuf, outsize_avail,
57
- NULL);
58
- libdeflate_free_decompressor(d);
59
- free_guarded_buffer(cbuf_start, cbuf_end);
60
- free_guarded_buffer(dbuf_start, dbuf_end);
61
- return 0;
62
- }
@@ -1,108 +0,0 @@
1
- #!/bin/bash
2
-
3
- set -e -u -o pipefail
4
-
5
- cd "$(dirname "$0")"
6
-
7
- read -r -a AVAILABLE_TARGETS < <(echo */fuzz.c | sed 's@/fuzz.c@@g')
8
-
9
- usage()
10
- {
11
- cat << EOF
12
- Usage: $0 [OPTION]... FUZZ_TARGET
13
-
14
- Fuzz libdeflate with LLVM's libFuzzer.
15
-
16
- Options:
17
- --asan Enable AddressSanitizer
18
- --max-len=LEN Maximum length of generated inputs (default: $MAX_LEN)
19
- --msan Enable MemorySanitizer
20
- --time=SECONDS Stop after the given time has passed
21
- --ubsan Enable UndefinedBehaviorSanitizer
22
-
23
- Available fuzz targets: ${AVAILABLE_TARGETS[*]}
24
- EOF
25
- }
26
-
27
- die()
28
- {
29
- echo "$*" 1>&2
30
- exit 1
31
- }
32
-
33
- run_cmd()
34
- {
35
- echo "$*"
36
- "$@"
37
- }
38
-
39
- EXTRA_SANITIZERS=
40
- EXTRA_FUZZER_ARGS=()
41
- MAX_LEN=65536
42
-
43
- longopts_array=(
44
- asan
45
- help
46
- max-len:
47
- msan
48
- time:
49
- ubsan
50
- )
51
- longopts=$(echo "${longopts_array[@]}" | tr ' ' ',')
52
-
53
- if ! options=$(getopt -o "" -l "$longopts" -- "$@"); then
54
- usage 1>&2
55
- exit 1
56
- fi
57
- eval set -- "$options"
58
- while true; do
59
- case "$1" in
60
- --asan)
61
- EXTRA_SANITIZERS+=",address"
62
- ;;
63
- --help)
64
- usage
65
- exit 0
66
- ;;
67
- --max-len)
68
- MAX_LEN=$2
69
- shift
70
- ;;
71
- --msan)
72
- EXTRA_SANITIZERS+=",memory"
73
- ;;
74
- --time)
75
- EXTRA_FUZZER_ARGS+=("-max_total_time=$2")
76
- shift
77
- ;;
78
- --ubsan)
79
- EXTRA_SANITIZERS+=",undefined"
80
- ;;
81
- --)
82
- shift
83
- break
84
- ;;
85
- *)
86
- echo 1>&2 "Invalid option '$1'"
87
- usage 1>&2
88
- exit 1
89
- esac
90
- shift
91
- done
92
- EXTRA_FUZZER_ARGS+=("-max_len=$MAX_LEN")
93
-
94
- if (( $# != 1 )); then
95
- echo 1>&2 "No fuzz target specified!"
96
- usage 1>&2
97
- exit 1
98
- fi
99
- TARGET=$1
100
- if [ ! -e "$TARGET/fuzz.c" ]; then
101
- echo 1>&2 "'$TARGET' is not a valid fuzz target!"
102
- usage 1>&2
103
- exit 1
104
- fi
105
- run_cmd clang -g -O1 -fsanitize=fuzzer$EXTRA_SANITIZERS \
106
- -Wall -Werror -DLIBDEFLATE_ENABLE_ASSERTIONS=1 -I ../../ \
107
- ../../lib/*{,/*}.c "$TARGET/fuzz.c" -o "$TARGET/fuzz"
108
- run_cmd "$TARGET/fuzz" "${EXTRA_FUZZER_ARGS[@]}" "$TARGET/corpus"
@@ -1,19 +0,0 @@
1
- #include <libdeflate.h>
2
- #include <stdint.h>
3
- #include <stdlib.h>
4
-
5
- /* Fuzz gzip decompression. */
6
- int LLVMFuzzerTestOneInput(const uint8_t *in, size_t insize)
7
- {
8
- size_t outsize_avail = 3 * insize;
9
- uint8_t *out;
10
- struct libdeflate_decompressor *d;
11
-
12
- out = malloc(outsize_avail);
13
-
14
- d = libdeflate_alloc_decompressor();
15
- libdeflate_gzip_decompress(d, in, insize, out, outsize_avail, NULL);
16
- libdeflate_free_decompressor(d);
17
- free(out);
18
- return 0;
19
- }
@@ -1,3 +0,0 @@
1
- x�u�1
2
- �@Eg�Bl5
3
- ��V���6j��X{�i=���l=����l�����?t���D
@@ -1,19 +0,0 @@
1
- #include <libdeflate.h>
2
- #include <stdint.h>
3
- #include <stdlib.h>
4
-
5
- /* Fuzz zlib decompression. */
6
- int LLVMFuzzerTestOneInput(const uint8_t *in, size_t insize)
7
- {
8
- size_t outsize_avail = 3 * insize;
9
- uint8_t *out;
10
- struct libdeflate_decompressor *d;
11
-
12
- out = malloc(outsize_avail);
13
-
14
- d = libdeflate_alloc_decompressor();
15
- libdeflate_zlib_decompress(d, in, insize, out, outsize_avail, NULL);
16
- libdeflate_free_decompressor(d);
17
- free(out);
18
- return 0;
19
- }