diff --git a/tools/quake3/common/vfs.c b/tools/quake3/common/vfs.c index 5f7433bc..2092b77f 100644 --- a/tools/quake3/common/vfs.c +++ b/tools/quake3/common/vfs.c @@ -303,7 +303,10 @@ int vfsLoadFile( const char *filename, void **bufferptr, int index ){ return -1; } - fread( *bufferptr, 1, len, f ); + if ( fread( *bufferptr, 1, len, f ) != (size_t) len ) { + fclose( f ); + return -1; + } fclose( f ); // we need to end the buffer with a 0 @@ -337,10 +340,14 @@ int vfsLoadFile( const char *filename, void **bufferptr, int index ){ *bufferptr = safe_malloc( len + 1 ); if ( *bufferptr == NULL ) { + fclose( f ); return -1; } - fread( *bufferptr, 1, len, f ); + if ( fread( *bufferptr, 1, len, f ) != (size_t) len ) { + fclose( f ); + return -1; + } fclose( f ); // we need to end the buffer with a 0