|
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