Only kill unknown prefix UIDs that start with a valid SID
(existing and behind the link that sent the prefix). Also require them to be exactly 9 characters long.
This commit is contained in:
parent
cd300c1b82
commit
d45f5ea2d9
1 changed files with 17 additions and 3 deletions
20
src/parse.c
20
src/parse.c
|
@ -532,6 +532,8 @@ static void
|
|||
remove_unknown(struct Client *client_p, char *lsender, char *lbuffer)
|
||||
{
|
||||
int slen = strlen(lsender);
|
||||
char sid[4];
|
||||
struct Client *server;
|
||||
|
||||
/* meepfoo is a nickname (ignore)
|
||||
* #XXXXXXXX is a UID (KILL)
|
||||
|
@ -550,9 +552,21 @@ remove_unknown(struct Client *client_p, char *lsender, char *lbuffer)
|
|||
get_id(&me, client_p), lsender,
|
||||
lbuffer, client_p->name);
|
||||
}
|
||||
else if(IsDigit(lsender[0]))
|
||||
sendto_one(client_p, ":%s KILL %s :%s (Unknown Client)",
|
||||
get_id(&me, client_p), lsender, me.name);
|
||||
else if(!IsDigit(lsender[0]))
|
||||
;
|
||||
else if(slen != 9)
|
||||
sendto_realops_snomask(SNO_DEBUG, L_ALL,
|
||||
"Invalid prefix (%s) from %s",
|
||||
lbuffer, client_p->name);
|
||||
else
|
||||
{
|
||||
memcpy(sid, lsender, 3);
|
||||
sid[3] = '\0';
|
||||
server = find_server(NULL, sid);
|
||||
if (server != NULL && server->from == client_p)
|
||||
sendto_one(client_p, ":%s KILL %s :%s (Unknown Client)",
|
||||
get_id(&me, client_p), lsender, me.name);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue