Skip to content

Commit 9418e66

Browse files
Patching CVE-2007-4559
1 parent 1312299 commit 9418e66

File tree

1 file changed

+20
-1
lines changed

1 file changed

+20
-1
lines changed

TMessagesProj/jni/boringssl/util/bot/go/bootstrap.py

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,26 @@ def install_toolset(toolset_root, url):
132132
f.extractall(toolset_root)
133133
elif pkg_path.endswith('.tar.gz'):
134134
with tarfile.open(pkg_path, 'r:gz') as f:
135-
f.extractall(toolset_root)
135+
def is_within_directory(directory, target):
136+
137+
abs_directory = os.path.abspath(directory)
138+
abs_target = os.path.abspath(target)
139+
140+
prefix = os.path.commonprefix([abs_directory, abs_target])
141+
142+
return prefix == abs_directory
143+
144+
def safe_extract(tar, path=".", members=None, *, numeric_owner=False):
145+
146+
for member in tar.getmembers():
147+
member_path = os.path.join(path, member.name)
148+
if not is_within_directory(path, member_path):
149+
raise Exception("Attempted Path Traversal in Tar File")
150+
151+
tar.extractall(path, members, numeric_owner=numeric_owner)
152+
153+
154+
safe_extract(f, toolset_root)
136155
else:
137156
raise Failure('Unrecognized archive format')
138157

0 commit comments

Comments
 (0)