mirror of
https://github.com/samba-team/samba.git
synced 2025-01-10 01:18:15 +03:00
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>
This commit is contained in:
parent
6a7c0ca23c
commit
1a3d8da731
45
lib/compression/tests/scripts/make-fuzz-examples
Executable file
45
lib/compression/tests/scripts/make-fuzz-examples
Executable file
@ -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()
|
Loading…
Reference in New Issue
Block a user