From ff26c6393e3da796ab14a53462e423909752f68d Mon Sep 17 00:00:00 2001 From: peter1138 Date: Mon, 13 Mar 2017 22:16:44 +0000 Subject: (svn r27793) -Fix [FS#6450]: Use of uninitialised variable cause lzo to fail. Add check for error status. --- src/saveload/saveload.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'src/saveload') diff --git a/src/saveload/saveload.cpp b/src/saveload/saveload.cpp index 5a09906bd..dfa3be721 100644 --- a/src/saveload/saveload.cpp +++ b/src/saveload/saveload.cpp @@ -1994,7 +1994,7 @@ struct LZOLoadFilter : LoadFilter { byte out[LZO_BUFFER_SIZE + LZO_BUFFER_SIZE / 16 + 64 + 3 + sizeof(uint32) * 2]; uint32 tmp[2]; uint32 size; - lzo_uint len; + lzo_uint len = ssize; /* Read header*/ if (this->chain->Read((byte*)tmp, sizeof(tmp)) != sizeof(tmp)) SlError(STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE, "File read failed"); @@ -2016,7 +2016,8 @@ struct LZOLoadFilter : LoadFilter { if (tmp[0] != lzo_adler32(0, out, size + sizeof(uint32))) SlErrorCorrupt("Bad checksum"); /* Decompress */ - lzo1x_decompress_safe(out + sizeof(uint32) * 1, size, buf, &len, NULL); + int ret = lzo1x_decompress_safe(out + sizeof(uint32) * 1, size, buf, &len, NULL); + if (ret != LZO_E_OK) SlError(STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE); return len; } }; -- cgit v1.2.3-70-g09d2