From 62e7b6fe75a56cd03af37a6e4a64aa658d355466 Mon Sep 17 00:00:00 2001 From: eschnett Date: Mon, 19 Nov 2012 21:55:30 +0000 Subject: Check file size while reading git-svn-id: http://svn.cactuscode.org/flesh/trunk@4915 17b73243-c579-4c4c-a9d2-2d5706c11dac --- src/util/ParseFile.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/util/ParseFile.c b/src/util/ParseFile.c index a80e1df8..751bed98 100644 --- a/src/util/ParseFile.c +++ b/src/util/ParseFile.c @@ -316,6 +316,7 @@ int main(int argc, char *argv[]) static char *ReadFile(FILE *file, unsigned long *filesize) { char *buffer; + size_t bytes_read; if (!file) { @@ -334,7 +335,13 @@ static char *ReadFile(FILE *file, unsigned long *filesize) return NULL; } /* Read file into buffer and return */ - fread(buffer, *filesize, 1, file); + bytes_read = fread(buffer, *filesize, 1, file); + if (bytes_read != *filesize) + { + fprintf(stderr, "File size changed while reading.\n"); + free(buffer); + return NULL; + } /* Protect buffer for string operations */ buffer[*filesize] = '\0'; return buffer; -- cgit v1.2.3