From d5d108e090030ef858dab95e7eec0f2da71333c5 Mon Sep 17 00:00:00 2001 From: PMheart <17109513+PMheart@users.noreply.github.com> Date: Sat, 23 Apr 2022 10:06:13 +0200 Subject: [PATCH] User: Improved UserReadFile error-checking --- User/Library/UserFile.c | 28 +++++++++++++++++++++++----- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/User/Library/UserFile.c b/User/Library/UserFile.c index a75f486a..1baeb1a2 100644 --- a/User/Library/UserFile.c +++ b/User/Library/UserFile.c @@ -65,15 +65,33 @@ UserReadFile ( return NULL; } - fseek (FilePtr, 0, SEEK_END); + if (fseek (FilePtr, 0, SEEK_END) != 0) { + fclose (FilePtr); + return NULL; + } + FileSize = ftell (FilePtr); - fseek (FilePtr, 0, SEEK_SET); + if (FileSize <= 0) { + fclose (FilePtr); + return NULL; + } + + if (fseek (FilePtr, 0, SEEK_SET) != 0) { + fclose (FilePtr); + return NULL; + } Buffer = AllocatePool (FileSize + 1); - if (Buffer == NULL - || (FileSize > 0 && fread (Buffer, FileSize, 1, FilePtr) != 1)) { - abort (); + if (Buffer == NULL) { + fclose (FilePtr); + return NULL; } + + if (fread (Buffer, FileSize, 1, FilePtr) != 1) { + fclose (FilePtr); + return NULL; + } + fclose (FilePtr); Buffer[FileSize] = 0;