forked from mirrors/LibreTranslate
14 lines
426 B
Python
14 lines
426 B
Python
|
import os
|
||
|
|
||
|
class SuspiciousFileOperation(Exception):
|
||
|
pass
|
||
|
|
||
|
def path_traversal_check(unsafe_path, known_safe_path):
|
||
|
known_safe_path = os.path.abspath(known_safe_path)
|
||
|
unsafe_path = os.path.abspath(unsafe_path)
|
||
|
|
||
|
if (os.path.commonprefix([known_safe_path, unsafe_path]) != known_safe_path):
|
||
|
raise SuspiciousFileOperation("{} is not safe".format(unsafe_path))
|
||
|
|
||
|
# Passes the check
|
||
|
return unsafe_path
|