extlz4 0.3 → 0.3.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/HISTORY.ja.md +7 -0
- data/README.md +3 -3
- data/contrib/lz4/Makefile.inc +87 -0
- data/contrib/lz4/NEWS +7 -0
- data/contrib/lz4/README.md +1 -1
- data/contrib/lz4/lib/README.md +3 -5
- data/contrib/lz4/lib/liblz4-dll.rc.in +35 -0
- data/contrib/lz4/lib/lz4.c +296 -182
- data/contrib/lz4/lib/lz4.h +125 -40
- data/contrib/lz4/lib/lz4frame.c +30 -6
- data/contrib/lz4/lib/lz4frame.h +11 -2
- data/contrib/lz4/lib/lz4hc.c +93 -30
- data/contrib/lz4/lib/lz4hc.h +3 -0
- data/contrib/lz4/ossfuzz/Makefile +74 -0
- data/contrib/lz4/ossfuzz/compress_frame_fuzzer.c +42 -0
- data/contrib/lz4/ossfuzz/compress_fuzzer.c +51 -0
- data/contrib/lz4/ossfuzz/compress_hc_fuzzer.c +57 -0
- data/contrib/lz4/ossfuzz/decompress_frame_fuzzer.c +67 -0
- data/contrib/lz4/ossfuzz/decompress_fuzzer.c +58 -0
- data/contrib/lz4/ossfuzz/fuzz.h +48 -0
- data/contrib/lz4/ossfuzz/fuzz_helpers.h +94 -0
- data/contrib/lz4/ossfuzz/lz4_helpers.c +51 -0
- data/contrib/lz4/ossfuzz/lz4_helpers.h +13 -0
- data/contrib/lz4/ossfuzz/ossfuzz.sh +23 -0
- data/contrib/lz4/ossfuzz/round_trip_frame_fuzzer.c +39 -0
- data/contrib/lz4/ossfuzz/round_trip_fuzzer.c +50 -0
- data/contrib/lz4/ossfuzz/round_trip_hc_fuzzer.c +39 -0
- data/contrib/lz4/ossfuzz/round_trip_stream_fuzzer.c +302 -0
- data/contrib/lz4/ossfuzz/standaloneengine.c +74 -0
- data/contrib/lz4/ossfuzz/travisoss.sh +21 -0
- data/ext/blockapi.c +3 -3
- data/ext/hashargs.c +1 -1
- data/lib/extlz4.rb +5 -1
- data/lib/extlz4/version.rb +1 -1
- data/test/common.rb +2 -2
- metadata +22 -3
@@ -0,0 +1,74 @@
|
|
1
|
+
#include <stdint.h>
|
2
|
+
#include <stdio.h>
|
3
|
+
#include <stdlib.h>
|
4
|
+
|
5
|
+
#include "fuzz.h"
|
6
|
+
|
7
|
+
/**
|
8
|
+
* Main procedure for standalone fuzzing engine.
|
9
|
+
*
|
10
|
+
* Reads filenames from the argument array. For each filename, read the file
|
11
|
+
* into memory and then call the fuzzing interface with the data.
|
12
|
+
*/
|
13
|
+
int main(int argc, char **argv)
|
14
|
+
{
|
15
|
+
int ii;
|
16
|
+
for(ii = 1; ii < argc; ii++)
|
17
|
+
{
|
18
|
+
FILE *infile;
|
19
|
+
printf("[%s] ", argv[ii]);
|
20
|
+
|
21
|
+
/* Try and open the file. */
|
22
|
+
infile = fopen(argv[ii], "rb");
|
23
|
+
if(infile)
|
24
|
+
{
|
25
|
+
uint8_t *buffer = NULL;
|
26
|
+
size_t buffer_len;
|
27
|
+
|
28
|
+
printf("Opened.. ");
|
29
|
+
|
30
|
+
/* Get the length of the file. */
|
31
|
+
fseek(infile, 0L, SEEK_END);
|
32
|
+
buffer_len = ftell(infile);
|
33
|
+
|
34
|
+
/* Reset the file indicator to the beginning of the file. */
|
35
|
+
fseek(infile, 0L, SEEK_SET);
|
36
|
+
|
37
|
+
/* Allocate a buffer for the file contents. */
|
38
|
+
buffer = (uint8_t *)calloc(buffer_len, sizeof(uint8_t));
|
39
|
+
if(buffer)
|
40
|
+
{
|
41
|
+
/* Read all the text from the file into the buffer. */
|
42
|
+
fread(buffer, sizeof(uint8_t), buffer_len, infile);
|
43
|
+
printf("Read %zu bytes, fuzzing.. ", buffer_len);
|
44
|
+
|
45
|
+
/* Call the fuzzer with the data. */
|
46
|
+
LLVMFuzzerTestOneInput(buffer, buffer_len);
|
47
|
+
|
48
|
+
printf("complete !!");
|
49
|
+
|
50
|
+
/* Free the buffer as it's no longer needed. */
|
51
|
+
free(buffer);
|
52
|
+
buffer = NULL;
|
53
|
+
}
|
54
|
+
else
|
55
|
+
{
|
56
|
+
fprintf(stderr,
|
57
|
+
"[%s] Failed to allocate %zu bytes \n",
|
58
|
+
argv[ii],
|
59
|
+
buffer_len);
|
60
|
+
}
|
61
|
+
|
62
|
+
/* Close the file as it's no longer needed. */
|
63
|
+
fclose(infile);
|
64
|
+
infile = NULL;
|
65
|
+
}
|
66
|
+
else
|
67
|
+
{
|
68
|
+
/* Failed to open the file. Maybe wrong name or wrong permissions? */
|
69
|
+
fprintf(stderr, "[%s] Open failed. \n", argv[ii]);
|
70
|
+
}
|
71
|
+
|
72
|
+
printf("\n");
|
73
|
+
}
|
74
|
+
}
|
@@ -0,0 +1,21 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
|
3
|
+
set -ex
|
4
|
+
|
5
|
+
# Clone the oss-fuzz repository
|
6
|
+
git clone https://github.com/google/oss-fuzz.git /tmp/ossfuzz
|
7
|
+
|
8
|
+
if [[ ! -d /tmp/ossfuzz/projects/lz4 ]]
|
9
|
+
then
|
10
|
+
echo "Could not find the lz4 project in ossfuzz"
|
11
|
+
exit 1
|
12
|
+
fi
|
13
|
+
|
14
|
+
# Modify the oss-fuzz Dockerfile so that we're checking out the current branch on travis.
|
15
|
+
sed -i "s@https://github.com/lz4/lz4.git@-b $TRAVIS_BRANCH https://github.com/lz4/lz4.git@" /tmp/ossfuzz/projects/lz4/Dockerfile
|
16
|
+
|
17
|
+
# Try and build the fuzzers
|
18
|
+
pushd /tmp/ossfuzz
|
19
|
+
python infra/helper.py build_image --pull lz4
|
20
|
+
python infra/helper.py build_fuzzers lz4
|
21
|
+
popd
|
data/ext/blockapi.c
CHANGED
@@ -32,7 +32,7 @@ aux_LZ4_compress_fast_continue_nogvl(va_list *vp)
|
|
32
32
|
static int
|
33
33
|
aux_LZ4_compress_fast_continue(void *context, const char *src, char *dest, int srcsize, int destsize, int acceleration)
|
34
34
|
{
|
35
|
-
return (int)aux_thread_call_without_gvl(
|
35
|
+
return (int)(intptr_t)aux_thread_call_without_gvl(
|
36
36
|
aux_LZ4_compress_fast_continue_nogvl, NULL,
|
37
37
|
context, src, dest, srcsize, destsize, acceleration);
|
38
38
|
}
|
@@ -54,7 +54,7 @@ static int
|
|
54
54
|
aux_LZ4_compressHC_continue(void *context, const char *src, char *dest, int srcsize, int destsize, int acceleration__ignored__)
|
55
55
|
{
|
56
56
|
(void)acceleration__ignored__;
|
57
|
-
return (int)aux_thread_call_without_gvl(
|
57
|
+
return (int)(intptr_t)aux_thread_call_without_gvl(
|
58
58
|
aux_LZ4_compressHC_continue_nogvl, NULL,
|
59
59
|
context, src, dest, srcsize, destsize);
|
60
60
|
}
|
@@ -76,7 +76,7 @@ aux_LZ4_decompress_safe_continue_nogvl(va_list *vp)
|
|
76
76
|
static int
|
77
77
|
aux_LZ4_decompress_safe_continue(LZ4_streamDecode_t *context, const char *src, char *dest, int srcsize, int maxsize)
|
78
78
|
{
|
79
|
-
return (int)aux_thread_call_without_gvl(
|
79
|
+
return (int)(intptr_t)aux_thread_call_without_gvl(
|
80
80
|
aux_LZ4_decompress_safe_continue_nogvl, NULL,
|
81
81
|
context, src, dest, srcsize, maxsize);
|
82
82
|
}
|
data/ext/hashargs.c
CHANGED
@@ -142,7 +142,7 @@ rbx_scanhash(VALUE hash, VALUE rest, struct rbx_scanhash_arg *args, struct rbx_s
|
|
142
142
|
hash = rbx_scanhash_to_hash(hash);
|
143
143
|
if (!NIL_P(hash) && !RHASH_EMPTY_P(hash)) {
|
144
144
|
struct rbx_scanhash_args argset = { args, end, rest };
|
145
|
-
rb_hash_foreach(hash, rbx_scanhash_foreach, (VALUE)&argset);
|
145
|
+
rb_hash_foreach(hash, (int (*)(VALUE, VALUE, VALUE))rbx_scanhash_foreach, (VALUE)&argset);
|
146
146
|
}
|
147
147
|
|
148
148
|
rbx_scanhash_check_missingkeys(args, end);
|
data/lib/extlz4.rb
CHANGED
@@ -4,7 +4,11 @@ require "stringio"
|
|
4
4
|
|
5
5
|
ver = RUBY_VERSION[/\d+\.\d+/]
|
6
6
|
soname = File.basename(__FILE__, ".rb") << ".so"
|
7
|
-
|
7
|
+
begin
|
8
|
+
require_relative File.join(ver, soname)
|
9
|
+
rescue LoadError
|
10
|
+
require File.join(ver, soname)
|
11
|
+
end
|
8
12
|
|
9
13
|
require_relative "extlz4/version"
|
10
14
|
|
data/lib/extlz4/version.rb
CHANGED
data/test/common.rb
CHANGED
@@ -14,5 +14,5 @@ SAMPLES = {
|
|
14
14
|
"random (big size)" => OpenSSL::Random.random_bytes(BIGSIZE),
|
15
15
|
}
|
16
16
|
|
17
|
-
SAMPLES["freebsd ports index"] = File.read("/usr/ports/INDEX-
|
18
|
-
SAMPLES["freebsd kernel"] = File.read("/boot/kernel/kernel", mode: "rb") rescue nil # if on FreeBSD
|
17
|
+
(SAMPLES["freebsd ports index"] = File.read("/usr/ports/INDEX-12", mode: "rb")) rescue nil # if on FreeBSD
|
18
|
+
(SAMPLES["freebsd kernel"] = File.read("/boot/kernel/kernel", mode: "rb")) rescue nil # if on FreeBSD
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: extlz4
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 0.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- dearblue
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-06-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -86,10 +86,12 @@ files:
|
|
86
86
|
- bin/extlz4
|
87
87
|
- contrib/lz4/INSTALL
|
88
88
|
- contrib/lz4/LICENSE
|
89
|
+
- contrib/lz4/Makefile.inc
|
89
90
|
- contrib/lz4/NEWS
|
90
91
|
- contrib/lz4/README.md
|
91
92
|
- contrib/lz4/lib/LICENSE
|
92
93
|
- contrib/lz4/lib/README.md
|
94
|
+
- contrib/lz4/lib/liblz4-dll.rc.in
|
93
95
|
- contrib/lz4/lib/liblz4.pc.in
|
94
96
|
- contrib/lz4/lib/lz4.c
|
95
97
|
- contrib/lz4/lib/lz4.h
|
@@ -100,6 +102,23 @@ files:
|
|
100
102
|
- contrib/lz4/lib/lz4hc.h
|
101
103
|
- contrib/lz4/lib/xxhash.c
|
102
104
|
- contrib/lz4/lib/xxhash.h
|
105
|
+
- contrib/lz4/ossfuzz/Makefile
|
106
|
+
- contrib/lz4/ossfuzz/compress_frame_fuzzer.c
|
107
|
+
- contrib/lz4/ossfuzz/compress_fuzzer.c
|
108
|
+
- contrib/lz4/ossfuzz/compress_hc_fuzzer.c
|
109
|
+
- contrib/lz4/ossfuzz/decompress_frame_fuzzer.c
|
110
|
+
- contrib/lz4/ossfuzz/decompress_fuzzer.c
|
111
|
+
- contrib/lz4/ossfuzz/fuzz.h
|
112
|
+
- contrib/lz4/ossfuzz/fuzz_helpers.h
|
113
|
+
- contrib/lz4/ossfuzz/lz4_helpers.c
|
114
|
+
- contrib/lz4/ossfuzz/lz4_helpers.h
|
115
|
+
- contrib/lz4/ossfuzz/ossfuzz.sh
|
116
|
+
- contrib/lz4/ossfuzz/round_trip_frame_fuzzer.c
|
117
|
+
- contrib/lz4/ossfuzz/round_trip_fuzzer.c
|
118
|
+
- contrib/lz4/ossfuzz/round_trip_hc_fuzzer.c
|
119
|
+
- contrib/lz4/ossfuzz/round_trip_stream_fuzzer.c
|
120
|
+
- contrib/lz4/ossfuzz/standaloneengine.c
|
121
|
+
- contrib/lz4/ossfuzz/travisoss.sh
|
103
122
|
- examples/frameapi.rb
|
104
123
|
- ext/blockapi.c
|
105
124
|
- ext/depend
|
@@ -142,7 +161,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
142
161
|
- !ruby/object:Gem::Version
|
143
162
|
version: '0'
|
144
163
|
requirements: []
|
145
|
-
rubygems_version: 3.0.
|
164
|
+
rubygems_version: 3.0.6
|
146
165
|
signing_key:
|
147
166
|
specification_version: 4
|
148
167
|
summary: ruby bindings for LZ4
|