void SV_ExecuteBroadcastedCmd(int uid, const char *msg){ int i = 0; int j = 0; int powercmd; int power; while ( msg[i] != ' ' && msg[i] != '\0' && msg[i] != '\n' && i < 32 ){ i++; } char cmd[30]; char buffer[256]; if(i > 29 || i < 3) return; Q_strncpyz(cmd,msg,i+1); //Prevent buffer overflow as well as prevent the execution of priveleged commands by using seperator characters Q_strncpyz(buffer,msg,256); Q_strchrrepl(buffer,';','\0'); Q_strchrrepl(buffer,'\n','\0'); Q_strchrrepl(buffer,'\r','\0'); if(!uid){ power = 100; }else{ power = SV_RemoteCmdGetClPowerByUID(uid); } powercmd = Cmd_GetPower(cmd); if(powercmd == -1){ return; } if(powercmd > power){ Com_Printf( "Broadcasted command execution: %s InvokerUID: %i Power: %i Insufficient Power\n", buffer, uid, power); return; } Com_Printf( "Broadcasted command execution: %s Invoked by: BroadcastMessage InvokerUID: %i Power: %i\n", buffer, uid, power); i = cmdInvoker.currentCmdPower; j = cmdInvoker.currentCmdInvoker; cmdInvoker.currentCmdPower = power; cmdInvoker.currentCmdInvoker = uid; cmdInvoker.clientnum = -1; cmdInvoker.authserver = qtrue; Cmd_ExecuteSingleCommand( 0, 0, buffer ); cmdInvoker.authserver = qfalse; cmdInvoker.currentCmdPower = i; cmdInvoker.currentCmdInvoker = j; cmdInvoker.clientnum = -1; }
void Auth_ListAdmins_f( void ){ int i; authData_admin_t* user; Com_Printf("------- Admins: -------\n"); for(i = 0, user = auth_admins.admins; i < MAX_AUTH_ADMINS; i++, user++){ if(*user->username) Com_Printf(" %2d: Name: %s, Power: %d, UID: @%d\n", i+1, user->username, SV_RemoteCmdGetClPowerByUID( user->uid ), user->uid); } Com_Printf("---------------------------------\n"); }