Sophie

Sophie

distrib > Mageia > 6 > armv7hl > media > core-updates-src > by-pkgid > e292cda8ad33284786d7f1384ee2e82d > files > 30

ming-0.4.5-14.1.mga6.src.rpm

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