From e277185eb1da950f6bb2982dc4f1495cce6988d0 Mon Sep 17 00:00:00 2001 From: implicitfield <114500360+implicitfield@users.noreply.github.com> Date: Sat, 19 Nov 2022 18:34:03 +0200 Subject: [PATCH] LibArchive: Do not assert if the provided stream cannot be discarded Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=52498 --- Userland/Libraries/LibArchive/TarStream.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Userland/Libraries/LibArchive/TarStream.cpp b/Userland/Libraries/LibArchive/TarStream.cpp index 9b81784ebb..9a16109fd7 100644 --- a/Userland/Libraries/LibArchive/TarStream.cpp +++ b/Userland/Libraries/LibArchive/TarStream.cpp @@ -84,12 +84,11 @@ bool TarFileStream::discard_or_error(size_t count) TarInputStream::TarInputStream(InputStream& stream) : m_stream(stream) { - if (!m_stream.read_or_error(Bytes(&m_header, sizeof(m_header)))) { + if (!m_stream.read_or_error(Bytes(&m_header, sizeof(m_header))) || !m_stream.discard_or_error(block_size - sizeof(TarFileHeader))) { m_finished = true; m_stream.handle_any_error(); // clear out errors so we don't assert return; } - VERIFY(m_stream.discard_or_error(block_size - sizeof(TarFileHeader))); } static constexpr unsigned long block_ceiling(unsigned long offset)