diff options
author | Douglas Bagnall <douglas.bagnall@catalyst.net.nz> | 2022-11-21 10:17:54 +1300 |
---|---|---|
committer | Joseph Sutton <jsutton@samba.org> | 2022-12-01 22:56:39 +0000 |
commit | 1a3d8da731320a3422fd6d093cd20beb9ff00167 (patch) | |
tree | dea6c8f637990913c80d02d488637ab3f7dd5aae /lib/compression | |
parent | 6a7c0ca23c6e5a4cc5ba2f860b988269306697fa (diff) | |
download | samba-1a3d8da731320a3422fd6d093cd20beb9ff00167.tar.gz |
lib/compression: test util to generate fuzzing seeds
Signed-off-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
Reviewed-by: Joseph Sutton <josephsutton@catalyst.net.nz>
Diffstat (limited to 'lib/compression')
-rwxr-xr-x | lib/compression/tests/scripts/make-fuzz-examples | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/lib/compression/tests/scripts/make-fuzz-examples b/lib/compression/tests/scripts/make-fuzz-examples new file mode 100755 index 00000000000..09200fba919 --- /dev/null +++ b/lib/compression/tests/scripts/make-fuzz-examples @@ -0,0 +1,45 @@ +#!/usr/bin/python3 +# +"""Pack the compressed files created by test_lzx_huffman.c (with +LZXHUFF_DEBUG_FILES) into the format used by the decompression fuzzer. + +That is, the first 3 bytes are the length of the decompressed file, +and the rest of the file is the compressed data. + +USAGE: make-fuzz-examples DIR + +where DIR is probably '/tmp'. +""" +import os +import sys + + +if '--help' in sys.argv or '-h' in sys.argv or len(sys.argv) != 2: + print(__doc__) + exit(len(sys.argv) != 2) + + +def main(): + files = set(os.listdir(sys.argv[1])) + + for fn in files: + if fn.endswith('-compressed'): + fn2 = fn.replace('-compressed', '-decompressed') + if fn2 not in files: + print(f"skipping {fn}, no {fn2}") + continue + cfn = '/tmp/' + fn + dfn = '/tmp/' + fn2 + wfn = '/tmp/' + fn.replace('-compressed', '.fuzz') + + size = os.stat(dfn).st_size + sbytes = bytes([(size & 0xff), (size >> 8) & 0xff, (size >> 16) & 0xff]) + + with open(cfn, 'rb') as f: + s = f.read() + + with open(wfn, 'wb') as f: + s = f.write(sbytes + s) + + +main() |