|
|
|
@ -164,7 +164,10 @@ def sanitize_filename(filename: str) -> str:
|
|
|
|
|
|
|
|
|
|
|
|
# Remove consecutive dots to prevent directory traversal attempts like '..'
|
|
|
|
# Remove consecutive dots to prevent directory traversal attempts like '..'
|
|
|
|
filename = re.sub(r'\.{2,}', '.', filename)
|
|
|
|
filename = re.sub(r'\.{2,}', '.', filename)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# remove potential $(
|
|
|
|
|
|
|
|
filename = re.sub(r'\$\([\s\S]*?\)', '', filename)
|
|
|
|
|
|
|
|
|
|
|
|
# Ensure filename is not practically empty after sanitization
|
|
|
|
# Ensure filename is not practically empty after sanitization
|
|
|
|
if not filename.strip() or filename.strip().replace('.', '') == '':
|
|
|
|
if not filename.strip() or filename.strip().replace('.', '') == '':
|
|
|
|
raise ValueError("Filename invalid after sanitization")
|
|
|
|
raise ValueError("Filename invalid after sanitization")
|
|
|
|
|