From: Jouni Malinen Date: Thu, 14 Apr 2011 17:22:21 +0000 (+0300) Subject: Add sanity checks for fseek and ftell return values X-Git-Tag: hostap-1-bp~402 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=fe655a8402a51d03da2fe39da15c9bb3f845be34;p=thirdparty%2Fhostap.git Add sanity checks for fseek and ftell return values In theory, these calls could fail, but it is not really likely to happen in practice in the use case here. Anyway, check that they do not return an error before accepting the length of the file. --- diff --git a/src/utils/os_unix.c b/src/utils/os_unix.c index 9a2465ad3..4e117585b 100644 --- a/src/utils/os_unix.c +++ b/src/utils/os_unix.c @@ -315,14 +315,21 @@ char * os_readfile(const char *name, size_t *len) { FILE *f; char *buf; + long pos; f = fopen(name, "rb"); if (f == NULL) return NULL; - fseek(f, 0, SEEK_END); - *len = ftell(f); - fseek(f, 0, SEEK_SET); + if (fseek(f, 0, SEEK_END) < 0 || (pos = ftell(f)) < 0) { + fclose(f); + return NULL; + } + *len = pos; + if (fseek(f, 0, SEEK_SET) < 0) { + fclose(f); + return NULL; + } buf = os_malloc(*len); if (buf == NULL) {