diff --git a/src/sbbs3/userdat.c b/src/sbbs3/userdat.c index d032000c44336b5b308564528394a30acedde3ca..258727ea9c2d9c898ddf4ba3b7f329be3ce1c722 100644 --- a/src/sbbs3/userdat.c +++ b/src/sbbs3/userdat.c @@ -150,8 +150,12 @@ uint find_login_id(scfg_t* cfg, const char* user_id) { int usernum; - if((cfg->sys_login & LOGIN_USERNUM) && IS_DIGIT(user_id[0])) - return atoi(user_id); + if((cfg->sys_login & LOGIN_USERNUM) && IS_DIGIT(user_id[0])) { + usernum = atoi(user_id); + if(usernum > lastuser(cfg)) + usernum = 0; + return usernum; + } usernum = matchuser(cfg, user_id, /* sysop_alias: */FALSE); if(usernum < 1 && check_realname(cfg, user_id) && (cfg->sys_login & LOGIN_REALNAME)) @@ -162,9 +166,9 @@ uint find_login_id(scfg_t* cfg, const char* user_id) } /****************************************************************************/ -uint total_users(scfg_t* cfg) +int total_users(scfg_t* cfg) { - uint total_users=0; + int total_users=0; int file; bool success = true; @@ -192,7 +196,7 @@ uint total_users(scfg_t* cfg) /****************************************************************************/ /* Returns the number of the last user in user.tab (deleted ones too) */ /****************************************************************************/ -uint lastuser(scfg_t* cfg) +int lastuser(scfg_t* cfg) { char path[MAX_PATH + 1]; off_t length; @@ -201,7 +205,7 @@ uint lastuser(scfg_t* cfg) return(0); if((length = flength(userdat_filename(cfg, path, sizeof(path)))) > 0) - return (uint)(length / USER_RECORD_LINE_LEN); + return (int)(length / USER_RECORD_LINE_LEN); return 0; } diff --git a/src/sbbs3/userdat.h b/src/sbbs3/userdat.h index d41980ad785de6bb90a1518f6a888ad6812e64c7..64c17a3c9360eb3a237a9c54628dabad3154bd8e 100644 --- a/src/sbbs3/userdat.h +++ b/src/sbbs3/userdat.h @@ -55,8 +55,8 @@ DLLEXPORT uint matchuser(scfg_t*, const char *str, BOOL sysop_alias); // Checks DLLEXPORT BOOL matchusername(scfg_t*, const char* name, const char* compare); DLLEXPORT char* alias(scfg_t*, const char* name, char* buf); DLLEXPORT int putusername(scfg_t*, int number, const char* name); -DLLEXPORT uint total_users(scfg_t*); -DLLEXPORT uint lastuser(scfg_t*); +DLLEXPORT int total_users(scfg_t*); +DLLEXPORT int lastuser(scfg_t*); DLLEXPORT BOOL del_lastuser(scfg_t*); DLLEXPORT int getage(scfg_t*, const char* birthdate); DLLEXPORT int getbirthmonth(scfg_t*, const char* birthdate);