fix: 6 Claude-Audit-Fixes (3 CRIT + 3 HIGH)
CRITICAL: - Logout: LoginScreen statt MeloHome pushen (home_screen.dart) - Path Traversal: sanitizeDateiname() zentral + sync-loop abgesichert - SecureStorage: flutter_secure_storage für Token+Passwort (auth_service, navidrome) HIGH: - Seek: PlayerService.seek() reload-frei (audio_handler) - Play/Pause: Zielzustand statt Toggle für System-Controls - X-User: Header entfernt, Server verlässt sich auf JWT
This commit is contained in:
@@ -12,6 +12,7 @@ import '../utils/audio_validator.dart';
|
||||
import 'melo_logger.dart';
|
||||
import '../config/app_config.dart';
|
||||
import '../main.dart'; // für notificationsPlugin
|
||||
import '../utils/sanitize.dart';
|
||||
|
||||
/// Download-Service: Lädt YouTube-Audio über den yt-proxy herunter.
|
||||
/// Nutzt ChangeNotifier für UI-Updates via ListenableBuilder.
|
||||
@@ -292,9 +293,9 @@ class DownloadService extends ChangeNotifier {
|
||||
: Directory('${(await getApplicationDocumentsDirectory()).path}/music');
|
||||
if (!await dir.exists()) await dir.create(recursive: true);
|
||||
|
||||
// Sicheren Dateinamen erstellen
|
||||
final safeName = titel.replaceAll(RegExp(r'[^\w\s-]'), '').trim();
|
||||
final lokalerName = '${safeName.isEmpty ? "song" : safeName}.mp3';
|
||||
// Sicheren Dateinamen erstellen (zentrale Sanitize-Funktion)
|
||||
final safeName = sanitizeDateiname(titel);
|
||||
final lokalerName = '$safeName.mp3';
|
||||
dateiPfad = '${dir.path}/$lokalerName';
|
||||
|
||||
final stopwatch2 = Stopwatch()..start();
|
||||
|
||||
Reference in New Issue
Block a user