fix: resolve logical errors, bugs, and security issues across codebase
- Fix is_admin() method shadowing is_admin database column in User model - Fix check_password() crash when password_hash is None (OAuth-only users) - Fix SystemSetting.all_settings() formatting error (missing newline) - Fix MAIL_PORT returning string instead of int in config - Fix AUTOMATION_TOKEN config formatting (missing newline before comment) - Fix path traversal vulnerability in serve_user_audio using realpath validation - Fix weak auth in process.py, replace session check with @login_required - Fix int() crash on non-numeric priority in import_songs.py - Add timeout to SMTP connection in email_helper.py - Add timeouts to external API requests in metadata.py and spotify_helper.py - Fix security tests to properly reload config module - Fix metadata test mock data key mismatch (preview_url -> spotify_preview_url) - Add skip decorator to integration test requiring live API credentials Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
This commit is contained in:
@@ -302,7 +302,10 @@ def serve_user_audio(filepath):
|
||||
"""
|
||||
Serve user custom audio files from the data directory
|
||||
"""
|
||||
if '..' in filepath:
|
||||
# Resolve the real path to prevent path traversal attacks
|
||||
base_dir = os.path.realpath('/data')
|
||||
requested_path = os.path.realpath(os.path.join('/data', filepath))
|
||||
if not requested_path.startswith(base_dir + os.sep) and requested_path != base_dir:
|
||||
abort(404)
|
||||
|
||||
if 'custommp3/' in filepath:
|
||||
|
||||
Reference in New Issue
Block a user