From 33b77673cbf634accd9730963de46147c75ff1a5 Mon Sep 17 00:00:00 2001 From: Rinat Ibragimov Date: Wed, 29 Apr 2015 21:27:41 +0300 Subject: [PATCH] check if ftell() returns -1 --- parson.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/parson.c b/parson.c index 83a21ff..587e8c8 100644 --- a/parson.c +++ b/parson.c @@ -179,11 +179,17 @@ static size_t parson_strlen(const char *string) { static char * read_file(const char * filename) { FILE *fp = fopen(filename, "r"); size_t file_size; + long pos; char *file_contents; if (!fp) return NULL; fseek(fp, 0L, SEEK_END); - file_size = ftell(fp); + pos = ftell(fp); + if (pos < 0) { + fclose(fp); + return NULL; + } + file_size = pos; rewind(fp); file_contents = (char*)PARSON_MALLOC(sizeof(char) * (file_size + 1)); if (!file_contents) {