fix(archive): handle invalid UTF-8 passwords in 7z decompression

This commit is contained in:
ttyS3 2024-09-06 14:12:33 +00:00 committed by João Marcos
parent 67ca183a25
commit 08ab63837e

View File

@ -194,16 +194,24 @@ pub fn list_archive(
Ok(true)
};
match password {
let result = match password {
Some(password) => {
let password = match password.to_str() {
Ok(p) => p,
Err(_) => return vec![Err(Error::InvalidPassword("7z requires that all passwords are valid UTF-8"))].into_iter(),
};
sevenz_rust::decompress_with_extract_fn_and_password(
reader,
".",
sevenz_rust::Password::from(password.to_str().unwrap()),
sevenz_rust::Password::from(password),
entry_extract_fn,
).unwrap()
)
},
None => sevenz_rust::decompress_with_extract_fn(reader, ".", entry_extract_fn).unwrap(),
None => sevenz_rust::decompress_with_extract_fn(reader, ".", entry_extract_fn),
};
if let Err(e) = result {
return vec![Err(e.into())].into_iter();
}
files.into_iter()