From f78fe8421657218d7b6f14b41a9ddf8e909e93b7 Mon Sep 17 00:00:00 2001 From: Enno Rehling Date: Tue, 3 Nov 2015 23:03:40 +0100 Subject: [PATCH] CID 22443 Ignoring number of bytes read --- src/bind_storage.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/bind_storage.c b/src/bind_storage.c index b531b4c0f..ba96791af 100644 --- a/src/bind_storage.c +++ b/src/bind_storage.c @@ -35,6 +35,7 @@ static int tolua_storage_create(lua_State * L) const char *type = tolua_tostring(L, 2, "rb"); FILE * F; int err = 0; + size_t sz; F = fopen(filename, type); if (F) { @@ -42,8 +43,13 @@ static int tolua_storage_create(lua_State * L) storage *store = (storage *)calloc(1, sizeof(storage)); data->store = store; if (strchr(type, 'r')) { - fread(&data->version, sizeof(int), 1, F); - err = fseek(F, sizeof(int), SEEK_CUR); + sz = fread(&data->version, sizeof(int), 1, F); + if (sz != sizeof(int)) { + err = ferror(F); + } + else { + err = fseek(F, sizeof(int), SEEK_CUR); + } } else if (strchr(type, 'w')) { int n = STREAM_VERSION;