Mercurial > hg
comparison contrib/fuzz/mpatch_corpus.py @ 43076:2372284d9457
formatting: blacken the codebase
This is using my patch to black
(https://github.com/psf/black/pull/826) so we don't un-wrap collection
literals.
Done with:
hg files 'set:**.py - mercurial/thirdparty/** - "contrib/python-zstandard/**"' | xargs black -S
# skip-blame mass-reformatting only
# no-check-commit reformats foo_bar functions
Differential Revision: https://phab.mercurial-scm.org/D6971
author | Augie Fackler <augie@google.com> |
---|---|
date | Sun, 06 Oct 2019 09:45:02 -0400 |
parents | 1fb2510cf8c8 |
children | ba84a1ae4ae5 |
comparison
equal
deleted
inserted
replaced
43075:57875cf423c9 | 43076:2372284d9457 |
---|---|
10 ) | 10 ) |
11 | 11 |
12 ap = argparse.ArgumentParser() | 12 ap = argparse.ArgumentParser() |
13 ap.add_argument("out", metavar="some.zip", type=str, nargs=1) | 13 ap.add_argument("out", metavar="some.zip", type=str, nargs=1) |
14 args = ap.parse_args() | 14 args = ap.parse_args() |
15 | |
15 | 16 |
16 class deltafrag(object): | 17 class deltafrag(object): |
17 def __init__(self, start, end, data): | 18 def __init__(self, start, end, data): |
18 self.start = start | 19 self.start = start |
19 self.end = end | 20 self.end = end |
20 self.data = data | 21 self.data = data |
21 | 22 |
22 def __str__(self): | 23 def __str__(self): |
23 return struct.pack( | 24 return ( |
24 ">lll", self.start, self.end, len(self.data)) + self.data | 25 struct.pack(">lll", self.start, self.end, len(self.data)) |
26 + self.data | |
27 ) | |
28 | |
25 | 29 |
26 class delta(object): | 30 class delta(object): |
27 def __init__(self, frags): | 31 def __init__(self, frags): |
28 self.frags = frags | 32 self.frags = frags |
29 | 33 |
30 def __str__(self): | 34 def __str__(self): |
31 return ''.join(str(f) for f in self.frags) | 35 return ''.join(str(f) for f in self.frags) |
32 | 36 |
37 | |
33 class corpus(object): | 38 class corpus(object): |
34 | |
35 def __init__(self, base, deltas): | 39 def __init__(self, base, deltas): |
36 self.base = base | 40 self.base = base |
37 self.deltas = deltas | 41 self.deltas = deltas |
38 | 42 |
39 def __str__(self): | 43 def __str__(self): |
47 + [self.base] | 51 + [self.base] |
48 + deltas | 52 + deltas |
49 ) | 53 ) |
50 return "".join(parts) | 54 return "".join(parts) |
51 | 55 |
56 | |
52 with zipfile.ZipFile(args.out[0], "w", zipfile.ZIP_STORED) as zf: | 57 with zipfile.ZipFile(args.out[0], "w", zipfile.ZIP_STORED) as zf: |
53 # Manually constructed entries | 58 # Manually constructed entries |
54 zf.writestr( | 59 zf.writestr( |
55 "one_delta_applies", | 60 "one_delta_applies", str(corpus('a', [delta([deltafrag(0, 1, 'b')])])) |
56 str(corpus('a', [delta([deltafrag(0, 1, 'b')])])) | |
57 ) | 61 ) |
58 zf.writestr( | 62 zf.writestr( |
59 "one_delta_starts_late", | 63 "one_delta_starts_late", |
60 str(corpus('a', [delta([deltafrag(3, 1, 'b')])])) | 64 str(corpus('a', [delta([deltafrag(3, 1, 'b')])])), |
61 ) | 65 ) |
62 zf.writestr( | 66 zf.writestr( |
63 "one_delta_ends_late", | 67 "one_delta_ends_late", |
64 str(corpus('a', [delta([deltafrag(0, 20, 'b')])])) | 68 str(corpus('a', [delta([deltafrag(0, 20, 'b')])])), |
65 ) | 69 ) |
66 | 70 |
67 try: | 71 try: |
68 # Generated from repo data | 72 # Generated from repo data |
69 r = hg.repository(uimod.ui(), '../..') | 73 r = hg.repository(uimod.ui(), '../..') |
70 fl = r.file('mercurial/manifest.py') | 74 fl = r.file('mercurial/manifest.py') |
71 rl = getattr(fl, '_revlog', fl) | 75 rl = getattr(fl, '_revlog', fl) |
72 bins = rl._chunks(rl._deltachain(10)[0]) | 76 bins = rl._chunks(rl._deltachain(10)[0]) |
73 zf.writestr('manifest_py_rev_10', | 77 zf.writestr('manifest_py_rev_10', str(corpus(bins[0], bins[1:]))) |
74 str(corpus(bins[0], bins[1:]))) | 78 except: # skip this, so no re-raises |
75 except: # skip this, so no re-raises | |
76 print('skipping seed file from repo data') | 79 print('skipping seed file from repo data') |
77 # Automatically discovered by running the fuzzer | 80 # Automatically discovered by running the fuzzer |
78 zf.writestr( | 81 zf.writestr( |
79 "mpatch_decode_old_overread", "\x02\x00\x00\x00\x02\x00\x00\x00" | 82 "mpatch_decode_old_overread", "\x02\x00\x00\x00\x02\x00\x00\x00" |
80 ) | 83 ) |
81 # https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=8876 | 84 # https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=8876 |
82 zf.writestr( | 85 zf.writestr( |
83 "mpatch_ossfuzz_getbe32_ubsan", | 86 "mpatch_ossfuzz_getbe32_ubsan", |
84 "\x02\x00\x00\x00\x0c \xff\xff\xff\xff ") | 87 "\x02\x00\x00\x00\x0c \xff\xff\xff\xff ", |
88 ) | |
85 zf.writestr( | 89 zf.writestr( |
86 "mpatch_apply_over_memcpy", | 90 "mpatch_apply_over_memcpy", |
87 '\x13\x01\x00\x05\xd0\x00\x00\x00\x00\x00\x00\x00\x00\n \x00\x00\x00' | 91 '\x13\x01\x00\x05\xd0\x00\x00\x00\x00\x00\x00\x00\x00\n \x00\x00\x00' |
88 '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' | 92 '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' |
89 '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00' | 93 '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00' |
340 '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' | 344 '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' |
341 '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' | 345 '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' |
342 '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' | 346 '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' |
343 '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00se\x00\x00' | 347 '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00se\x00\x00' |
344 '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' | 348 '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' |
345 '\x00\x00\x00\x00') | 349 '\x00\x00\x00\x00', |
350 ) |