mirror of
https://github.com/nimbold/Firelink.git
synced 2026-09-02 05:57:59 +00:00
fix(settings): harden persisted consumer state
- validate complete settings snapshots before replacing durable state - sanitize malformed proxy, user-agent, sidebar, speed, and path values at native and renderer hydration boundaries - add hostile persisted-settings regression coverage
This commit is contained in:
@@ -10912,8 +10912,12 @@ fn db_save_settings(
|
||||
crate::db::preserve_legacy_pairing_token(existing.as_deref(), &sanitized)?
|
||||
};
|
||||
let merged = crate::settings::canonicalize_torrent_network_settings(&merged)?;
|
||||
let decoded = crate::settings::decode_stored_settings(&serde_json::Value::String(merged.clone()))?;
|
||||
// Validate the complete settings document before replacing the durable
|
||||
// copy. A malformed renderer snapshot must not poison restart hydration or
|
||||
// leave the previous valid settings unrecoverable after this command
|
||||
// reports an error.
|
||||
crate::db::save_settings(&connection, &merged)?;
|
||||
let decoded = crate::settings::decode_stored_settings(&serde_json::Value::String(merged))?;
|
||||
let prevent_system_sleep = decoded.prevents_sleep_while_downloading;
|
||||
let prevent_display_sleep = decoded.prevents_display_sleep_while_downloading;
|
||||
if let Ok(mut cached) = app_state.scheduler_settings.write() {
|
||||
|
||||
Reference in New Issue
Block a user