Fix invalid torrent names to use from_utf8_lossy #316

This commit is contained in:
Igor Katson 2025-06-12 08:55:01 +01:00
parent acf67b2439
commit 1409dffb8f
No known key found for this signature in database
GPG key ID: B4EC22B66D61A3F5
2 changed files with 13 additions and 8 deletions

View file

@ -566,9 +566,13 @@ fn make_torrent_details(
Ok(TorrentDetailsResponse { Ok(TorrentDetailsResponse {
id, id,
info_hash: info_hash.as_string(), info_hash: info_hash.as_string(),
name: name name: name.map(|s| s.to_owned()).or_else(|| {
.map(|s| s.to_owned()) info.and_then(|i| {
.or_else(|| info.and_then(|i| i.name.as_ref().map(|b| b.to_string()))), i.name
.as_ref()
.map(|b| String::from_utf8_lossy(b.as_ref()).into())
})
}),
files: Some(files), files: Some(files),
output_folder, output_folder,
stats: None, stats: None,

View file

@ -1006,11 +1006,12 @@ impl Session {
} }
if let Some(name) = &info.name { if let Some(name) = &info.name {
let s = let s = String::from_utf8_lossy(name.as_slice());
std::str::from_utf8(name.as_slice()).context("invalid UTF-8 in torrent name")?; if !s.is_empty() {
let pb = PathBuf::from(s); let pb = PathBuf::from(s.as_ref());
check_valid(&pb)?; check_valid(&pb)?;
return Ok(Some(pb)); return Ok(Some(pb));
}
}; };
if let Some(name) = magnet_name { if let Some(name) = magnet_name {
let pb = PathBuf::from(name); let pb = PathBuf::from(name);