commit - eccbd97e1f2599bfb76818fe6bc32967ed07e0c7
commit + cccd8fc957e893e250324b65146df8fca4680f11
blob - bc01e093c015ad7340205b879f0b834d8fa5c756
blob + 5006d2ff2b73e58e521c8cdfc409b1a59c8ec036
--- src/ngircd/parse.c
+++ src/ngircd/parse.c
}
/* check if client in prefix is known */
- c = Client_Search( Req->prefix );
+ c = Client_Search(Req->prefix);
if (!c) {
- Log(LOG_ERR,
- "Invalid prefix \"%s\", client not known (connection %d, command \"%s\")!?",
- Req->prefix, Idx, Req->command);
- if (!Conn_WriteStr(Idx,
- "ERROR :Invalid prefix \"%s\", client not known",
- Req->prefix))
- *Closed = true;
+ if (Client_Type(client) != CLIENT_SERVER) {
+ Log(LOG_ERR,
+ "Ignoring command with invalid prefix \"%s\" from \"%s\" (connection %d, command \"%s\")!",
+ Req->prefix, Client_ID(client), Idx, Req->command);
+ if (!Conn_WriteStr(Idx,
+ "ERROR :Invalid prefix \"%s\"",
+ Req->prefix))
+ *Closed = true;
+ IRC_SetPenalty(client, 2);
+ } else
+ LogDebug("Ignoring command with invalid prefix \"%s\" from \"%s\" (connection %d, command \"%s\")!",
+ Req->prefix, Client_ID(client), Idx, Req->command);
return false;
}
if (Client_NextHop(c) != client) {
if (Client_Type(c) != CLIENT_SERVER) {
Log(LOG_ERR,
- "Spoofed prefix \"%s\" from \"%s\" (connection %d, command \"%s\")!",
- Req->prefix, Client_Mask(Conn_GetClient(Idx)), Idx,
- Req->command);
+ "Spoofed prefix \"%s\" from \"%s\" (connection %d, command \"%s\"), closing connection!",
+ Req->prefix, Client_ID(client), Idx, Req->command);
Conn_Close(Idx, NULL, "Spoofed prefix", true);
*Closed = true;
} else {
- Log(LOG_INFO,
- "Ignoring spoofed prefix \"%s\" from \"%s\" (connection %d, command \"%s\").",
- Req->prefix, Client_Mask(Conn_GetClient(Idx)), Idx,
- Req->command);
+ Log(LOG_WARNING,
+ "Ignoring command with spoofed prefix \"%s\" from \"%s\" (connection %d, command \"%s\")!",
+ Req->prefix, Client_ID(client), Idx, Req->command);
}
return false;
-
}
return true;