mirror of
https://github.com/osmarks/ngircd.git
synced 2024-12-12 18:00:28 +00:00
Commands received from other servers must have prefixes
Make sure that all commands received from other servers do have valid prefixes. Only exceptions are PING and ERROR commands that can occure without prefixes when generated by the remote peer itself.
This commit is contained in:
parent
62f705f97e
commit
15775e6790
@ -276,11 +276,24 @@ Validate_Prefix( CONN_ID Idx, REQUEST *Req, bool *Closed )
|
|||||||
|
|
||||||
*Closed = false;
|
*Closed = false;
|
||||||
|
|
||||||
if( ! Req->prefix ) return true;
|
|
||||||
|
|
||||||
client = Conn_GetClient( Idx );
|
client = Conn_GetClient( Idx );
|
||||||
assert( client != NULL );
|
assert( client != NULL );
|
||||||
|
|
||||||
|
if (!Req->prefix && Client_Type(client) == CLIENT_SERVER
|
||||||
|
&& strcasecmp(Req->command, "ERROR") != 0
|
||||||
|
&& strcasecmp(Req->command, "PING") != 0)
|
||||||
|
{
|
||||||
|
Log(LOG_ERR,
|
||||||
|
"Received command without prefix (connection %d, command \"%s\")!?",
|
||||||
|
Idx, Req->command);
|
||||||
|
if (!Conn_WriteStr(Idx, "ERROR :Prefix missing"))
|
||||||
|
*Closed = true;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!Req->prefix)
|
||||||
|
return true;
|
||||||
|
|
||||||
/* only validate if this connection is already registered */
|
/* only validate if this connection is already registered */
|
||||||
if (Client_Type(client) != CLIENT_USER
|
if (Client_Type(client) != CLIENT_USER
|
||||||
&& Client_Type(client) != CLIENT_SERVER
|
&& Client_Type(client) != CLIENT_SERVER
|
||||||
|
Loading…
Reference in New Issue
Block a user