repo: ngircd action: commit revision: path_from: revision_from: 02cf31c0e267a4c9a7656d43ad3ad4eeb37fc9c5: path_to: revision_to:
commit 02cf31c0e267a4c9a7656d43ad3ad4eeb37fc9c5 Author: Alexander BartonDate: Mon May 25 23:43:29 2020 +0200 IRC_SERVER: Make sure that the client sent a prefix The SERVER command is only valid with a prefix when received from other servers, so make sure that there is one and disconnect the peer if not (instead of crashing ...). This obsoletes PR #275. Thanks Hilko Bengen (hillu) for finding & reporting this as well for the patch & pull request! But I think this is the "more correct" fix. diff --git a/src/ngircd/irc-server.c b/src/ngircd/irc-server.c
--- a/src/ngircd/irc-server.c
+++ b/src/ngircd/irc-server.c
@@ -186,6 +186,15 @@ IRC_SERVER( CLIENT *Client, REQUEST *Req )
if (!Client_CheckID(Client, Req->argv[0]))
return DISCONNECTED;
+ if (!Req->prefix) {
+ /* We definitely need a prefix here! */
+ Log(LOG_ALERT, "Got SERVER command without prefix! (on connection %d)",
+ Client_Conn(Client));
+ Conn_Close(Client_Conn(Client), NULL,
+ "SERVER command without prefix", true);
+ return DISCONNECTED;
+ }
+
from = Client_Search( Req->prefix );
if (! from) {
/* Uh, Server, that introduced the new server is unknown?! */
-----END OF PAGE-----