From 98aa8b195acb204587189c67f4e9eb306ee1ebc1 Mon Sep 17 00:00:00 2001 From: Martin Kiewitz Date: Mon, 3 May 2010 13:55:49 +0000 Subject: SCI: fix possible heap error svn-id: r48908 --- engines/sci/engine/kfile.cpp | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/engines/sci/engine/kfile.cpp b/engines/sci/engine/kfile.cpp index 22abc4b193..e6b9a5388c 100644 --- a/engines/sci/engine/kfile.cpp +++ b/engines/sci/engine/kfile.cpp @@ -229,16 +229,17 @@ static void fgets_wrapper(EngineState *s, char *dest, int maxsize, int handle) { error("fgets_wrapper: Trying to read from file '%s' opened for writing", f->_name.c_str()); return; } - if (maxsize > 1) + if (maxsize > 1) { + memset(dest, 0, maxsize); f->_in->readLine(dest, maxsize); - else + // The returned string must not have an ending LF + int strSize = strlen(dest); + if (strSize > 0) { + if (dest[strSize - 1] == 0x0A) + dest[strSize - 1] = 0; + } + } else { *dest = f->_in->readByte(); - - // The returned string must not have an ending LF - int strSize = strlen(dest); - if (strSize > 0) { - if (dest[strSize - 1] == 0x0A) - dest[strSize - 1] = 0; } debugC(2, kDebugLevelFile, "FGets'ed \"%s\"", dest); -- cgit v1.2.3