Findings
correctness
crates/prostheke/src/repo.rs:31 — SubtitleRow::into_domain silently discards corrupted DB rows with no diagnostic (low)
resilience
crates/prostheke/src/providers/opensubtitles.rs:291 — OpenSubtitles subtitle download buffers full response bytes with no size limit before writing to disk (low)
crates/prostheke/src/repo.rs:145 — list_media_missing_subtitles fetches all subtitle rows into memory regardless of library size (low)
security
crates/prostheke/src/providers/opensubtitles.rs:289 — SSRF via OpenSubtitles-returned download link fetched without host validation (low)
testing
crates/prostheke/src/repo.rs:30 — SubtitleRow::into_domain silent failure modes have no test coverage (low)
crates/prostheke/src/search.rs:55 — search_all_providers provider-failure isolation has no test coverage (low)
Note
These are batched low/info findings; split any out if it gets prioritized.
Findings
correctness
crates/prostheke/src/repo.rs:31— SubtitleRow::into_domain silently discards corrupted DB rows with no diagnostic (low)resilience
crates/prostheke/src/providers/opensubtitles.rs:291— OpenSubtitles subtitle download buffers full response bytes with no size limit before writing to disk (low)crates/prostheke/src/repo.rs:145— list_media_missing_subtitles fetches all subtitle rows into memory regardless of library size (low)security
crates/prostheke/src/providers/opensubtitles.rs:289— SSRF via OpenSubtitles-returned download link fetched without host validation (low)testing
crates/prostheke/src/repo.rs:30— SubtitleRow::into_domain silent failure modes have no test coverage (low)crates/prostheke/src/search.rs:55— search_all_providers provider-failure isolation has no test coverage (low)Note
These are batched low/info findings; split any out if it gets prioritized.