From 21d196cf155e9c2ceb1f2d25cbbc3e8140bb313c Mon Sep 17 00:00:00 2001 From: Balint Reczey <balint@balintreczey.hu> Date: Wed, 4 Jan 2017 11:29:34 +0100 Subject: [PATCH 5/8] Make readString() stop reading string past buffer's end --- src/actioncompiler/listaction.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/actioncompiler/listaction.c b/src/actioncompiler/listaction.c index a24fccf..dfac8bc 100644 --- a/src/actioncompiler/listaction.c +++ b/src/actioncompiler/listaction.c @@ -89,13 +89,14 @@ double readDouble(Buffer f) char *readString(Buffer f) { - int len = 0, buflen = 256; - char c, *buf, *p; + int len = 0, buflen = 256, tmp_char; + char *buf, *p; buf = (char *)malloc(sizeof(char)*256); p = buf; - while((c=(char)readUInt8(f)) != '\0') + tmp_char = readUInt8(f); + while(tmp_char != EOF && tmp_char != '\0') { if(len==buflen) { @@ -104,8 +105,9 @@ char *readString(Buffer f) p = buf+len; } - *(p++) = c; + *(p++) = (char)tmp_char; ++len; + tmp_char = readUInt8(f); } *p = 0; -- 2.1.4