From 3ae6a99ac70753c3bb8943b726e4f4c2a94bf61e Mon Sep 17 00:00:00 2001 From: Logan Aerl Arias Date: Tue, 26 Dec 2023 19:32:40 +0000 Subject: [PATCH] Revert "Merge branch 'allow-multiple-admin-passwords' into 'next'" This reverts merge request !2201 --- src/netcode/d_clisrv.c | 27 +++++++++++---------------- src/netcode/d_clisrv.h | 4 ++-- src/netcode/d_netcmd.c | 35 ++++------------------------------- src/netcode/d_netcmd.h | 1 - 4 files changed, 17 insertions(+), 50 deletions(-) diff --git a/src/netcode/d_clisrv.c b/src/netcode/d_clisrv.c index d222920c3..ac0b42d49 100644 --- a/src/netcode/d_clisrv.c +++ b/src/netcode/d_clisrv.c @@ -90,8 +90,8 @@ INT16 consistancy[BACKUPTICS]; // true when a player is connecting or disconnecting so that the gameplay has stopped in its tracks boolean hu_stopped = false; -UINT8 (*adminpassmd5)[16]; -UINT32 adminpasscount = 0; +UINT8 adminpassmd5[16]; +boolean adminpasswordset = false; tic_t neededtic; SINT8 servernode = 0; // the number of the server node @@ -862,31 +862,26 @@ static void PT_Login(SINT8 node, INT32 netconsole) #ifndef NOMD5 UINT8 finalmd5[16];/* Well, it's the cool thing to do? */ - UINT32 i; if (doomcom->datalength < 16)/* ignore partial sends */ return; - if (adminpasscount == 0) + if (!adminpasswordset) { CONS_Printf(M_GetText("Password from %s failed (no password set).\n"), player_names[netconsole]); return; } - for (i = 0; i < adminpasscount; i++) + // Do the final pass to compare with the sent md5 + D_MD5PasswordPass(adminpassmd5, 16, va("PNUM%02d", netconsole), &finalmd5); + + if (!memcmp(netbuffer->u.md5sum, finalmd5, 16)) { - // Do the final pass to compare with the sent md5 - D_MD5PasswordPass(adminpassmd5[i], 16, va("PNUM%02d", netconsole), &finalmd5); - - if (!memcmp(netbuffer->u.md5sum, finalmd5, 16)) - { - CONS_Printf(M_GetText("%s passed authentication.\n"), player_names[netconsole]); - COM_BufInsertText(va("promote %d\n", netconsole)); // do this immediately - return; - } + CONS_Printf(M_GetText("%s passed authentication.\n"), player_names[netconsole]); + COM_BufInsertText(va("promote %d\n", netconsole)); // do this immediately } - - CONS_Printf(M_GetText("Password from %s failed.\n"), player_names[netconsole]); + else + CONS_Printf(M_GetText("Password from %s failed.\n"), player_names[netconsole]); #else (void)netconsole; #endif diff --git a/src/netcode/d_clisrv.h b/src/netcode/d_clisrv.h index f9cbf8876..092878421 100644 --- a/src/netcode/d_clisrv.h +++ b/src/netcode/d_clisrv.h @@ -128,8 +128,8 @@ tic_t GetLag(INT32 node); void D_MD5PasswordPass(const UINT8 *buffer, size_t len, const char *salt, void *dest); -extern UINT8 (*adminpassmd5)[16]; -extern UINT32 adminpasscount; +extern UINT8 adminpassmd5[16]; +extern boolean adminpasswordset; extern boolean hu_stopped; diff --git a/src/netcode/d_netcmd.c b/src/netcode/d_netcmd.c index ef1ef9aeb..2b445a835 100644 --- a/src/netcode/d_netcmd.c +++ b/src/netcode/d_netcmd.c @@ -150,7 +150,6 @@ static void Command_Clearscores_f(void); // Remote Administration static void Command_Changepassword_f(void); -static void Command_Clearpassword_f(void); static void Command_Login_f(void); static void Got_Verification(UINT8 **cp, INT32 playernum); static void Got_Removal(UINT8 **cp, INT32 playernum); @@ -469,7 +468,6 @@ void D_RegisterServerCommands(void) // Remote Administration COM_AddCommand("password", Command_Changepassword_f, COM_LUA); - COM_AddCommand("clearpassword", Command_Clearpassword_f, COM_LUA); COM_AddCommand("login", Command_Login_f, COM_LUA); // useful in dedicated to kick off remote admin COM_AddCommand("promote", Command_Verify_f, COM_LUA); RegisterNetXCmd(XD_VERIFIED, Got_Verification); @@ -2846,15 +2844,8 @@ static void Got_Teamchange(UINT8 **cp, INT32 playernum) void D_SetPassword(const char *pw) { - adminpassmd5 = Z_Realloc(adminpassmd5, sizeof(*adminpassmd5) * ++adminpasscount, PU_STATIC, NULL); - D_MD5PasswordPass((const UINT8 *)pw, strlen(pw), BASESALT, &adminpassmd5[adminpasscount-1]); -} - -void D_ClearPassword(void) -{ - Z_Free(adminpassmd5); - adminpassmd5 = NULL; - adminpasscount = 0; + D_MD5PasswordPass((const UINT8 *)pw, strlen(pw), BASESALT, &adminpassmd5); + adminpasswordset = true; } // Remote Administration @@ -2872,30 +2863,12 @@ static void Command_Changepassword_f(void) if (COM_Argc() != 2) { - CONS_Printf(M_GetText("password : add remote admin password\n")); + CONS_Printf(M_GetText("password : change remote admin password\n")); return; } D_SetPassword(COM_Argv(1)); - CONS_Printf(M_GetText("Password added.\n")); -#endif -} - -// Remote Administration -static void Command_Clearpassword_f(void) -{ -#ifdef NOMD5 - // If we have no MD5 support then completely disable XD_LOGIN responses for security. - CONS_Alert(CONS_NOTICE, "Remote administration commands are not supported in this build.\n"); -#else - if (client) // cannot change remotely - { - CONS_Printf(M_GetText("Only the server can use this.\n")); - return; - } - - D_ClearPassword(); - CONS_Printf(M_GetText("Passwords cleared.\n")); + CONS_Printf(M_GetText("Password set.\n")); #endif } diff --git a/src/netcode/d_netcmd.h b/src/netcode/d_netcmd.h index 0f2a1f92b..4849079d0 100644 --- a/src/netcode/d_netcmd.h +++ b/src/netcode/d_netcmd.h @@ -209,7 +209,6 @@ void ClearAdminPlayers(void); void RemoveAdminPlayer(INT32 playernum); void ItemFinder_OnChange(void); void D_SetPassword(const char *pw); -void D_ClearPassword(void); // used for the player setup menu UINT8 CanChangeSkin(INT32 playernum);