From 8ad5e191568032ec2d91c79f13c742f0993a308c Mon Sep 17 00:00:00 2001
From: Rob Swindell <rob@synchro.net>
Date: Thu, 11 Aug 2022 12:20:08 -0700
Subject: [PATCH] matchuser() now always returns 0 when passed an empty 'name'

Also, don't match against deleted (blank) usernames in name.dat
(e.g. when 'name' value consists of a single ETX character).
---
 src/sbbs3/userdat.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/sbbs3/userdat.c b/src/sbbs3/userdat.c
index b800fe26c3..ffa619be31 100644
--- a/src/sbbs3/userdat.c
+++ b/src/sbbs3/userdat.c
@@ -58,7 +58,7 @@ uint matchuser(scfg_t* cfg, const char *name, BOOL sysop_alias)
 	off_t	l,length;
 	FILE*	stream;
 
-	if(!VALID_CFG(cfg) || name==NULL)
+	if(!VALID_CFG(cfg) || name==NULL || *name == '\0')
 		return(0);
 
 	if(sysop_alias &&
@@ -78,6 +78,8 @@ uint matchuser(scfg_t* cfg, const char *name, BOOL sysop_alias)
 		for(c=0;c<LEN_ALIAS;c++)
 			if(dat[c]==ETX) break;
 		dat[c]=0;
+		if(c < 1) // Deleted user
+			continue;
 		if(matchusername(cfg, dat, name))
 			break;
 	}
-- 
GitLab