fix: harden audited download and release paths

This commit is contained in:
NimBold
2026-07-21 08:39:54 +03:30
parent 69ce2b15ba
commit 886388d5f2
14 changed files with 219 additions and 51 deletions
+12 -4
View File
@@ -1,5 +1,5 @@
use crate::ipc::{DownloadStateEvent, DownloadStatus, QueueDirection};
use crate::retry::{backoff_and_emit, is_transient_network_error, BackoffOutcome};
use crate::retry::{backoff_and_emit, is_transient_network_error, BackoffOutcome, MAX_RETRIES};
use log;
use serde::Deserialize;
use serde_json;
@@ -1600,7 +1600,7 @@ impl<R: tauri::Runtime> QueueManager<R> {
}
fn automatic_retry_limit(max_tries: Option<i32>) -> usize {
max_tries.unwrap_or(0).max(0) as usize
max_tries.unwrap_or(MAX_RETRIES as i32).max(0) as usize
}
fn aria2_attempt_limit(max_tries: Option<i32>) -> u32 {
@@ -1977,8 +1977,9 @@ impl SidecarSpawner for ProductionSpawner {
}
}
Err(e) => {
log::error!("aria2 addUri [{}] failed: {}", id, e);
Err(format!("aria2 addUri failed: {e}"))
let safe_error = crate::redact_sensitive_text(&e);
log::error!("aria2 addUri [{}] failed: {}", id, safe_error);
Err(format!("aria2 addUri failed: {safe_error}"))
}
}
}
@@ -2288,4 +2289,11 @@ mod tests {
assert_eq!(aria2_attempt_limit(Some(0)), 1);
assert_eq!(aria2_attempt_limit(Some(10)), 1);
}
#[test]
fn omitted_retry_limit_uses_the_shared_default_but_zero_stays_explicit() {
assert_eq!(automatic_retry_limit(None), MAX_RETRIES);
assert_eq!(automatic_retry_limit(Some(0)), 0);
assert_eq!(automatic_retry_limit(Some(2)), 2);
}
}