Skip to content

Commit 3a04959

Browse files
committed
Refactor fuzz_tree.py to use a library facility for temp file creation
See: - gitpython-developers#1901 (comment)
1 parent 797009d commit 3a04959

File tree

1 file changed

+19
-20
lines changed

1 file changed

+19
-20
lines changed

fuzzing/fuzz-targets/fuzz_tree.py

+19-20
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
import io
2222
import sys
2323
import os
24-
import shutil
24+
import tempfile
2525

2626
if getattr(sys, "frozen", False) and hasattr(sys, "_MEIPASS"):
2727
path_to_bundled_git_binary = os.path.abspath(os.path.join(os.path.dirname(__file__), "git"))
@@ -33,29 +33,28 @@
3333

3434
def TestOneInput(data):
3535
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")
4136

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")
4443

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)
5150

52-
_repo = git.Repo("/tmp/")
51+
_repo = git.Repo(temp_dir)
5352

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
5958

6059

6160
def main():

0 commit comments

Comments
 (0)