From f365f8710d818d9a6ae1a1b6a126d1cc433a80e6 Mon Sep 17 00:00:00 2001 From: Pk11 Date: Tue, 25 May 2021 22:17:20 -0500 Subject: [PATCH] Add safety check to extracting --- source/utils/extract.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/source/utils/extract.cpp b/source/utils/extract.cpp index ffda9ab..56be759 100644 --- a/source/utils/extract.cpp +++ b/source/utils/extract.cpp @@ -124,7 +124,17 @@ Result extractArchive(const std::string &archivePath, const std::string &wantedF return EXTRACT_ERROR_ARCHIVE; } - fwrite(buf, 1, size, file); + size_t written = fwrite(buf, 1, size, file); + + /* Failed to write, likely out of space. */ + if (written != size) { + fclose(file); + delete[] buf; + archive_read_close(a); + archive_read_free(a); + return EXTRACT_ERROR_WRITEFILE; + } + sizeLeft -= size; writeOffset += size; }