Could we rewrite the voting system, or just borrow the voting code from somewhere like Tremulous? Because the current method of sending raw vote command lines to the command interpreter is insecure and highly abusable.
An example: the command interpreter accepts semicolons and newlines as command separators. There's a hack to work around (refuse) command lines with semicolons, but newlines aren't checked for. Due to this I have been able to execute arbitrary commands on the server by sending newlines in the callvote (map, kick, etc.) command's parameters (minimum source code modification was required). Such a command was "quit", which successfully shut down the server, without any administrative rights whatsoever.
I will defer talking about possibilities of votekick-proof names, there are many.
Fortunately, any decent mod (honestly, all that I've seen/tested on the master server list), have a proper voting system.
Created attachment 1723 [details] refuse newlines in callvotes, along with semicolons A quick hack to prevent the described attack, at least for now.