FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
GitPython/fuzzing/fuzz-targets/fuzz_diff.py at 3.2.0 · gitpython-developers/GitPython · GitHub
gitpython-developers
GitPython
Repository navigation
Code
Issues
6
(6)
Pull requests
8
(8)
Discussions
Actions
Security and quality
42
(42)
Insights
Expand file tree
Breadcrumbs
GitPython
/
fuzzing
/
fuzz-targets
/
fuzz_diff.py
Copy path
More file actions
More file actions
Latest commit
History
History
History
86 lines (68 loc) · 2.82 KB
Breadcrumbs
GitPython
/
fuzzing
/
fuzz-targets
/
fuzz_diff.py
Copy path
File metadata and controls
86 lines (68 loc) · 2.82 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
import
sys
import
os
import
io
import
tempfile
from
binascii
import
Error
as
BinasciiError
import
atheris
if
getattr
(
sys
,
"frozen"
,
False
)
and
hasattr
(
sys
,
"_MEIPASS"
):
path_to_bundled_git_binary
=
os
.
path
.
abspath
(
os
.
path
.
join
(
os
.
path
.
dirname
(
__file__
),
"git"
))
os
.
environ
[
"GIT_PYTHON_GIT_EXECUTABLE"
]
=
path_to_bundled_git_binary
with
atheris
.
instrument_imports
():
from
git
import
Repo
,
Diff
class
BytesProcessAdapter
:
"""Allows bytes to be used as process objects returned by subprocess.Popen."""
@
atheris
.
instrument_func
def
__init__
(
self
,
input_string
):
self
.
stdout
=
io
.
BytesIO
(
input_string
)
self
.
stderr
=
io
.
BytesIO
()
@
atheris
.
instrument_func
def
wait
(
self
):
return
0
poll
=
wait
@
atheris
.
instrument_func
def
TestOneInput
(
data
):
fdp
=
atheris
.
FuzzedDataProvider
(
data
)
with
tempfile
.
TemporaryDirectory
()
as
temp_dir
:
repo
=
Repo
.
init
(
path
=
temp_dir
)
try
:
diff
=
Diff
(
repo
,
a_rawpath
=
fdp
.
ConsumeBytes
(
fdp
.
ConsumeIntInRange
(
0
,
fdp
.
remaining_bytes
())),
b_rawpath
=
fdp
.
ConsumeBytes
(
fdp
.
ConsumeIntInRange
(
0
,
fdp
.
remaining_bytes
())),
a_blob_id
=
fdp
.
ConsumeBytes
(
20
),
b_blob_id
=
fdp
.
ConsumeBytes
(
20
),
a_mode
=
fdp
.
ConsumeBytes
(
fdp
.
ConsumeIntInRange
(
0
,
fdp
.
remaining_bytes
())),
b_mode
=
fdp
.
ConsumeBytes
(
fdp
.
ConsumeIntInRange
(
0
,
fdp
.
remaining_bytes
())),
new_file
=
fdp
.
ConsumeBool
(),
deleted_file
=
fdp
.
ConsumeBool
(),
copied_file
=
fdp
.
ConsumeBool
(),
raw_rename_from
=
fdp
.
ConsumeBytes
(
fdp
.
ConsumeIntInRange
(
0
,
fdp
.
remaining_bytes
())),
raw_rename_to
=
fdp
.
ConsumeBytes
(
fdp
.
ConsumeIntInRange
(
0
,
fdp
.
remaining_bytes
())),
diff
=
fdp
.
ConsumeBytes
(
fdp
.
ConsumeIntInRange
(
0
,
fdp
.
remaining_bytes
())),
change_type
=
fdp
.
PickValueInList
([
"A"
,
"D"
,
"C"
,
"M"
,
"R"
,
"T"
,
"U"
]),
score
=
fdp
.
ConsumeIntInRange
(
0
,
fdp
.
remaining_bytes
()),
)
except
BinasciiError
:
return
-
1
except
AssertionError
as
e
:
if
"Require 20 byte binary sha, got"
in
str
(
e
):
return
-
1
else
:
raise
e
_
=
diff
.
__str__
()
_
=
diff
.
a_path
_
=
diff
.
b_path
_
=
diff
.
rename_from
_
=
diff
.
rename_to
_
=
diff
.
renamed_file
diff_index
=
diff
.
_index_from_patch_format
(
repo
,
proc
=
BytesProcessAdapter
(
fdp
.
ConsumeBytes
(
fdp
.
ConsumeIntInRange
(
0
,
fdp
.
remaining_bytes
())))
)
diff
.
_handle_diff_line
(
lines_bytes
=
fdp
.
ConsumeBytes
(
fdp
.
ConsumeIntInRange
(
0
,
fdp
.
remaining_bytes
())),
repo
=
repo
,
index
=
diff_index
)
def
main
():
atheris
.
Setup
(
sys
.
argv
,
TestOneInput
)
atheris
.
Fuzz
()
if
__name__
==
"__main__"
:
main
()
Back
|
FazBrowse Home
|
New Git URL