From 928eab87d21c00548202343a2bb9106d17037b74 Mon Sep 17 00:00:00 2001
From: Rob Swindell <rob@synchro.net>
Date: Sun, 13 Sep 2020 00:14:50 -0700
Subject: [PATCH] Strip control characters (and Ctrl-A sequences) from node
 status

Extended node status can (and often does) contain Ctrl-A sequences.
Strip those characters/sequences before putting into the NodeForm->ListView
lines here.
---
 src/sbbs3/ctrl/NodeFormUnit.cpp | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/src/sbbs3/ctrl/NodeFormUnit.cpp b/src/sbbs3/ctrl/NodeFormUnit.cpp
index 1181b8d80c..e78d86f7ce 100644
--- a/src/sbbs3/ctrl/NodeFormUnit.cpp
+++ b/src/sbbs3/ctrl/NodeFormUnit.cpp
@@ -34,6 +34,7 @@
  ****************************************************************************/
 
 //---------------------------------------------------------------------------
+#include "sbbs.h"
 #include <vcl.h>
 #pragma hdrstop
 #include <io.h>
@@ -129,6 +130,7 @@ void __fastcall TNodeForm::TimerTick(TObject *Sender)
 {
 	static int nodedab;
     char	str[256];
+	char	tmp[128];
 	char	status[128];
     int		i,n,rd,digits=1;
     node_t	node;
@@ -169,11 +171,11 @@ void __fastcall TNodeForm::TimerTick(TObject *Sender)
 
         if(rd!=sizeof(node_t))
         	continue;
-            
-		sprintf(str,"%*d %s"
+
+		safe_snprintf(str, sizeof(str), "%*d %s"
 			,digits
 			,n+1
-			,nodestatus(&MainForm->cfg,&node,status,sizeof(status),n+1));
+			,strip_ctrl(nodestatus(&MainForm->cfg, &node, status, sizeof(status), n+1), tmp));
         AnsiString Str=AnsiString(str);
         if(ListBox->Items->Count<n+1)
         	ListBox->Items->Add(Str);
-- 
GitLab