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