From 4458058a914fb7f80c2b9b1c8636d38b20784a04 Mon Sep 17 00:00:00 2001
From: deuce <>
Date: Thu, 30 Apr 2020 18:18:21 +0000
Subject: [PATCH] Ensure cterm->strbuf is always NUL terminated (no functional
 change)

---
 src/conio/cterm.c | 34 ++++++++++++++++++----------------
 1 file changed, 18 insertions(+), 16 deletions(-)

diff --git a/src/conio/cterm.c b/src/conio/cterm.c
index ccda29efda..664f4f52da 100644
--- a/src/conio/cterm.c
+++ b/src/conio/cterm.c
@@ -4752,22 +4752,6 @@ CIOLIBEXPORT char* CIOLIBCALL cterm_write(struct cterminal * cterm, const void *
 							else {
 								if (cterm->strbuf) {
 									cterm->strbuf[cterm->strbuflen++] = ch[0];
-									switch(cterm->sixel) {
-										case SIXEL_STARTED:
-											parse_sixel_string(cterm, false);
-											break;
-										case SIXEL_POSSIBLE:
-											parse_sixel_intro(cterm);
-											break;
-									}
-									switch(cterm->macro) {
-										case MACRO_STARTED:
-											parse_macro_string(cterm, false);
-											break;
-										case MACRO_POSSIBLE:
-											parse_macro_intro(cterm);
-											break;
-									}
 									if (cterm->strbuflen == cterm->strbufsize) {
 										char *p;
 
@@ -4786,6 +4770,23 @@ CIOLIBEXPORT char* CIOLIBCALL cterm_write(struct cterminal * cterm, const void *
 												cterm->strbuf = p;
 										}
 									}
+									cterm->strbuf[cterm->strbuflen] = 0;
+									switch(cterm->sixel) {
+										case SIXEL_STARTED:
+											parse_sixel_string(cterm, false);
+											break;
+										case SIXEL_POSSIBLE:
+											parse_sixel_intro(cterm);
+											break;
+									}
+									switch(cterm->macro) {
+										case MACRO_STARTED:
+											parse_macro_string(cterm, false);
+											break;
+										case MACRO_POSSIBLE:
+											parse_macro_intro(cterm);
+											break;
+									}
 								}
 							}
 							break;
@@ -4830,6 +4831,7 @@ CIOLIBEXPORT char* CIOLIBCALL cterm_write(struct cterminal * cterm, const void *
 												cterm->strbuf = p;
 										}
 									}
+									cterm->strbuf[cterm->strbuflen] = 0;
 								}
 							}
 							break;
-- 
GitLab