diff --git a/src/sbbs3/newuser.cpp b/src/sbbs3/newuser.cpp
index 57607765a80391e2faf063f40bd7a9f44ce6f88e..ce5d56cf5555640bcfd5bd8646d62b2042092745 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);