diff --git a/source/src/client.cpp b/source/src/client.cpp index 7b1b9d11..1d7d65f1 100644 --- a/source/src/client.cpp +++ b/source/src/client.cpp @@ -399,7 +399,11 @@ void addmsg(int type, const char *fmt, ...) numi += n; break; } - case 's': sendstring(va_arg(args, const char *), p); nums++; break; + case 's': + { + const char *t = va_arg(args, const char *); + if(t) sendstring(t, p); nums++; break; + } } va_end(args); } diff --git a/source/src/clientgame.cpp b/source/src/clientgame.cpp index dcb0855b..3d491d76 100644 --- a/source/src/clientgame.cpp +++ b/source/src/clientgame.cpp @@ -1634,7 +1634,7 @@ void setadmin(char *claim, char *password) if((y != 1) && (player1->clientrole)) { conoutf(_("you released admin status")); - addmsg(SV_SETADMIN, "ris", 0); + addmsg(SV_SETADMIN, "ri", 0); } else addmsg(SV_SETADMIN, "ris", y, genpwdhash(player1->name, password, sessionid)); diff --git a/source/src/server.cpp b/source/src/server.cpp index 8a48f84d..97f78f06 100644 --- a/source/src/server.cpp +++ b/source/src/server.cpp @@ -3353,8 +3353,11 @@ void process(ENetPacket *packet, int sender, int chan) case SV_SETADMIN: { bool claim = getint(p) != 0; - getstring(text, p); - changeclientrole(sender, claim ? CR_ADMIN : CR_DEFAULT, text); + if(claim) + { + getstring(text, p); + changeclientrole(sender, CR_ADMIN, text); + } else changeclientrole(sender, CR_DEFAULT); break; }