From c1800348bdb5105576226a3997bfc15c20520e0a Mon Sep 17 00:00:00 2001 From: Konstantin Olchanski Date: Thu, 2 Nov 2017 11:44:55 -0700 Subject: [PATCH] fix memory corruption - mxml_write_line() did not allocate sufficient buffer space for the given string length --- mxml.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/mxml.c b/mxml.c index b5ef635..4f7d6de 100644 --- a/mxml.c +++ b/mxml.c @@ -170,14 +170,15 @@ void mxml_deallocate(void) int mxml_write_line(MXML_WRITER *writer, const char *line) { - int len; + unsigned len; - len = (int)strlen(line); + len = strlen(line); if (writer->buffer) { if (writer->buffer_len + len >= writer->buffer_size) { - writer->buffer_size += 10000; + writer->buffer_size += len + 10000; writer->buffer = (char *)mxml_realloc(writer->buffer, writer->buffer_size); + assert(writer->buffer); } strcpy(writer->buffer + writer->buffer_len, line); writer->buffer_len += len;