Harden settings read sanitization for invalid providers
This commit is contained in:
@@ -587,7 +587,7 @@ def _normalize_handwriting_style_settings(payload: dict[str, Any], defaults: dic
|
||||
|
||||
|
||||
def _sanitize_settings(payload: dict[str, Any]) -> dict[str, Any]:
|
||||
"""Sanitizes all persisted settings into a stable normalized structure."""
|
||||
"""Sanitizes persisted settings into a stable structure while tolerating corrupt provider rows."""
|
||||
|
||||
if not isinstance(payload, dict):
|
||||
payload = {}
|
||||
@@ -603,7 +603,14 @@ def _sanitize_settings(payload: dict[str, Any]) -> dict[str, Any]:
|
||||
if not isinstance(provider_payload, dict):
|
||||
continue
|
||||
fallback = defaults["providers"][0]
|
||||
candidate = _normalize_provider(provider_payload, fallback_id=f"provider-{index + 1}", fallback_values=fallback)
|
||||
try:
|
||||
candidate = _normalize_provider(
|
||||
provider_payload,
|
||||
fallback_id=f"provider-{index + 1}",
|
||||
fallback_values=fallback,
|
||||
)
|
||||
except AppSettingsValidationError:
|
||||
continue
|
||||
if candidate["id"] in seen_provider_ids:
|
||||
continue
|
||||
seen_provider_ids.add(candidate["id"])
|
||||
|
||||
Reference in New Issue
Block a user