diff options
| author | Alexander Barton <alex@barton.de> | 2020-05-25 23:43:29 +0200 |
|---|---|---|
| committer | Alexander Barton <alex@barton.de> | 2020-05-25 23:51:00 +0200 |
| commit | 02cf31c0e267a4c9a7656d43ad3ad4eeb37fc9c5 (patch) | |
| tree | 956df4b2e5d9f6e83766d0f7daf1f16851637fdc /src | |
| parent | 430bb223765281487e5c6d415a8efb91e2bf3320 (diff) | |
| download | ngircd-02cf31c0e267a4c9a7656d43ad3ad4eeb37fc9c5.tar.gz ngircd-02cf31c0e267a4c9a7656d43ad3ad4eeb37fc9c5.zip | |
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.
Diffstat (limited to 'src')
| -rw-r--r-- | src/ngircd/irc-server.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/ngircd/irc-server.c b/src/ngircd/irc-server.c index 317a3e1a..10f1ef69 100644 --- 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?! */ |