From 62f781488600b0da5ab2673b82ea8b15171483be Mon Sep 17 00:00:00 2001 From: "Rob Swindell (on Windows 11)" <rob@synchro.net> Date: Wed, 22 Nov 2023 15:08:13 -0800 Subject: [PATCH] Fix CID 32913 getkeys() could return -1 if user disconnects (and SS_ABORT not set), so this appears to be a valid bug. --- src/sbbs3/useredit.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/sbbs3/useredit.cpp b/src/sbbs3/useredit.cpp index ace72ef03c..89ab11c6be 100644 --- a/src/sbbs3/useredit.cpp +++ b/src/sbbs3/useredit.cpp @@ -243,6 +243,8 @@ void sbbs_t::useredit(int usernumber) while(online) { bprintf(text[FlagEditing], u32toaf(user.exempt,tmp)); c=(char)getkeys("ABCDEFGHIJKLMNOPQRSTUVWXYZ?\r",0); + if(c < 0) + break; if(sys_status&SS_ABORT) break; if(c==CR) break; @@ -273,6 +275,8 @@ void sbbs_t::useredit(int usernumber) break; } c=(char)getkeys("ABCDEFGHIJKLMNOPQRSTUVWXYZ?1234\r",0); + if(c < 0) + break; if(sys_status&SS_ABORT) break; if(c==CR) break; @@ -522,6 +526,8 @@ void sbbs_t::useredit(int usernumber) while(online) { bprintf(text[FlagEditing], u32toaf(user.rest, tmp)); c=(char)getkeys("ABCDEFGHIJKLMNOPQRSTUVWXYZ?\r",0); + if(c < 0) + break; if(sys_status&SS_ABORT) break; if(c==CR) break; @@ -1134,6 +1140,8 @@ void sbbs_t::maindflts(user_t* user) strcat(str,tmp); } ch=(char)getkeys(str,0); + if(ch < 0) + break; if(sys_status & SS_ABORT) break; if(ch==quit_key()) -- GitLab