From 708e27d82deb770b9d91a2ab5cb90d3f681e5b41 Mon Sep 17 00:00:00 2001
From: "Rob Swindell (on Windows 11)" <rob@synchro.net>
Date: Fri, 11 Apr 2025 18:09:05 -0700
Subject: [PATCH] Re-generate random password if it doesn't meet our quality
 standards

Log a message before the regenerate loop, just in case this loops forever. :-)
---
 src/sbbs3/newuser.cpp | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

diff --git a/src/sbbs3/newuser.cpp b/src/sbbs3/newuser.cpp
index 57607765a8..ce5d56cf55 100644
--- a/src/sbbs3/newuser.cpp
+++ b/src/sbbs3/newuser.cpp
@@ -363,13 +363,16 @@ bool sbbs_t::newuser()
 			else
 				lprintf(LOG_NOTICE, "Rejected RLogin password for new user");
 		}
-		c = 0;
-		while (c < MAX(RAND_PASS_LEN, cfg.min_pwlen)) {              /* Create random password */
-			useron.pass[c] = sbbs_random(43) + '0';
-			if (IS_ALPHANUMERIC(useron.pass[c]))
-				c++;
-		}
-		useron.pass[c] = 0;
+		lprintf(LOG_INFO, "Generating a random password for new user");
+		do {
+			c = 0;
+			while (c < MAX(RAND_PASS_LEN, cfg.min_pwlen)) {              /* Create random password */
+				useron.pass[c] = sbbs_random(43) + '0';
+				if (IS_ALPHANUMERIC(useron.pass[c]))
+					c++;
+			}
+			useron.pass[c] = 0;
+		} while (!check_pass(&cfg, useron.pass, &useron, /* unique: */false, /* reason: */NULL));
 
 		bprintf(text[YourPasswordIs], useron.pass);
 
-- 
GitLab