mirror of
https://github.com/RGBCube/serenity
synced 2025-05-23 19:15:07 +00:00
unzip: Don't fail from mmap when trying to decompress empty files
Given an empty file, unzip would try to create a zero-size memory mapping of that file, which would fail with EINVAL. With this commit, attempting to unzip an empty file of course still fails, since that's not a valid PKZIP file, but it now fails for the correct reason and with the correct error message.
This commit is contained in:
parent
1a2f71581b
commit
4aaab80649
1 changed files with 7 additions and 2 deletions
|
@ -100,12 +100,17 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
auto mapped_file = TRY(Core::MappedFile::map(zip_file_path));
|
RefPtr<Core::MappedFile> mapped_file;
|
||||||
|
ReadonlyBytes input_bytes;
|
||||||
|
if (st.st_size > 0) {
|
||||||
|
mapped_file = TRY(Core::MappedFile::map(zip_file_path));
|
||||||
|
input_bytes = mapped_file->bytes();
|
||||||
|
}
|
||||||
|
|
||||||
if (!quiet)
|
if (!quiet)
|
||||||
warnln("Archive: {}", zip_file_path);
|
warnln("Archive: {}", zip_file_path);
|
||||||
|
|
||||||
auto zip_file = Archive::Zip::try_create(mapped_file->bytes());
|
auto zip_file = Archive::Zip::try_create(input_bytes);
|
||||||
if (!zip_file.has_value()) {
|
if (!zip_file.has_value()) {
|
||||||
warnln("Invalid zip file {}", zip_file_path);
|
warnln("Invalid zip file {}", zip_file_path);
|
||||||
return 1;
|
return 1;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue