diff --git a/Meta/Lagom/Fuzzers/FuzzTar.cpp b/Meta/Lagom/Fuzzers/FuzzTar.cpp index 5e76197eae..82c54d9789 100644 --- a/Meta/Lagom/Fuzzers/FuzzTar.cpp +++ b/Meta/Lagom/Fuzzers/FuzzTar.cpp @@ -19,8 +19,12 @@ extern "C" int LLVMFuzzerTestOneInput(uint8_t const* data, size_t size) while (!tar_stream.finished()) { auto const& header = tar_stream.header(); - if (!header.content_is_like_extended_header()) - continue; + if (!header.content_is_like_extended_header()) { + if (tar_stream.advance().is_error()) + return 0; + else + continue; + } switch (header.type_flag()) { case Archive::TarFileType::GlobalExtendedHeader: diff --git a/Userland/Utilities/tar.cpp b/Userland/Utilities/tar.cpp index dca9a18947..48e65b0cce 100644 --- a/Userland/Utilities/tar.cpp +++ b/Userland/Utilities/tar.cpp @@ -124,6 +124,7 @@ ErrorOr serenity_main(Main::Arguments arguments) VERIFY_NOT_REACHED(); } + TRY(tar_stream.advance()); continue; } @@ -141,6 +142,7 @@ ErrorOr serenity_main(Main::Arguments arguments) long_name.append(reinterpret_cast(buffer.data()), bytes_read); local_overrides.set("path", long_name.to_string()); + TRY(tar_stream.advance()); continue; } default: