From ddcd14922465ca3775f1cb2f4b8cb24d2e03ea02 Mon Sep 17 00:00:00 2001 From: Gunnar Beutner Date: Mon, 19 Apr 2021 22:10:11 +0200 Subject: [PATCH] LibC: Avoid division by zero in fread()/fwrite() --- Userland/Libraries/LibC/stdio.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Userland/Libraries/LibC/stdio.cpp b/Userland/Libraries/LibC/stdio.cpp index f847e10b4b..5a58bb89bb 100644 --- a/Userland/Libraries/LibC/stdio.cpp +++ b/Userland/Libraries/LibC/stdio.cpp @@ -777,6 +777,8 @@ size_t fread(void* ptr, size_t size, size_t nmemb, FILE* stream) VERIFY(!Checked::multiplication_would_overflow(size, nmemb)); size_t nread = stream->read(reinterpret_cast(ptr), size * nmemb); + if (!nread) + return 0; return nread / size; } @@ -786,6 +788,8 @@ size_t fwrite(const void* ptr, size_t size, size_t nmemb, FILE* stream) VERIFY(!Checked::multiplication_would_overflow(size, nmemb)); size_t nwritten = stream->write(reinterpret_cast(ptr), size * nmemb); + if (!nwritten) + return 0; return nwritten / size; }