|
21 | 21 | import io |
22 | 22 | import sys |
23 | 23 | import os |
24 | | -import shutil |
| 24 | +import tempfile |
25 | 25 |
|
26 | 26 | if getattr(sys, "frozen", False) and hasattr(sys, "_MEIPASS"): |
27 | 27 | path_to_bundled_git_binary = os.path.abspath(os.path.join(os.path.dirname(__file__), "git")) |
|
33 | 33 |
|
34 | 34 | def TestOneInput(data): |
35 | 35 | fdp = atheris.FuzzedDataProvider(data) |
36 | | - git_dir = "/tmp/.git" |
37 | | - head_file = os.path.join(git_dir, "HEAD") |
38 | | - refs_dir = os.path.join(git_dir, "refs") |
39 | | - common_dir = os.path.join(git_dir, "commondir") |
40 | | - objects_dir = os.path.join(git_dir, "objects") |
41 | 36 |
|
42 | | - if os.path.isdir(git_dir): |
43 | | - shutil.rmtree(git_dir) |
| 37 | + with tempfile.TemporaryDirectory() as temp_dir: |
| 38 | + git_dir = os.path.join(temp_dir, ".git") |
| 39 | + head_file = os.path.join(git_dir, "HEAD") |
| 40 | + refs_dir = os.path.join(git_dir, "refs") |
| 41 | + common_dir = os.path.join(git_dir, "commondir") |
| 42 | + objects_dir = os.path.join(git_dir, "objects") |
44 | 43 |
|
45 | | - os.mkdir(git_dir) |
46 | | - with open(head_file, "w") as f: |
47 | | - f.write(fdp.ConsumeUnicodeNoSurrogates(1024)) |
48 | | - os.mkdir(refs_dir) |
49 | | - os.mkdir(common_dir) |
50 | | - os.mkdir(objects_dir) |
| 44 | + os.mkdir(git_dir) |
| 45 | + with open(head_file, "w") as f: |
| 46 | + f.write(fdp.ConsumeUnicodeNoSurrogates(1024)) |
| 47 | + os.mkdir(refs_dir) |
| 48 | + os.mkdir(common_dir) |
| 49 | + os.mkdir(objects_dir) |
51 | 50 |
|
52 | | - _repo = git.Repo("/tmp/") |
| 51 | + _repo = git.Repo(temp_dir) |
53 | 52 |
|
54 | | - fuzz_tree = git.Tree(_repo, git.Tree.NULL_BIN_SHA, 0, "") |
55 | | - try: |
56 | | - fuzz_tree._deserialize(io.BytesIO(data)) |
57 | | - except IndexError: |
58 | | - return -1 |
| 53 | + fuzz_tree = git.Tree(_repo, git.Tree.NULL_BIN_SHA, 0, "") |
| 54 | + try: |
| 55 | + fuzz_tree._deserialize(io.BytesIO(data)) |
| 56 | + except IndexError: |
| 57 | + return -1 |
59 | 58 |
|
60 | 59 |
|
61 | 60 | def main(): |
|
0 commit comments