[Ircservices-coding] akill sanity checking
Andy Smith
andy at strugglers.net
Sat Jan 27 04:18:06 PST 2001
Hi,
There's a FIXME in the ADD section of do_akill from akill.c regarding
wanting a better way to check for an insane akill mask. I've found the
following idea useful:
for (i = strlen(mask) - 1;
i > 0 && mask[i] != '@'; i--) {
if (! strchr("*?.", mask[i])) {
nonwild++;
}
}
if (AkillWildThresh && nonwild < AkillWildThresh) {
notice_lang(s_OperServ, u,
OPER_AKILL_MASK_TOO_GENERAL);
return;
}
i.e. it counts from right to left in the mask checking how many characters
there are which don't match '?', '*' or '.'. AkillWildThresh would be a
config option, an example setting of 4 would prevent the following akills:
*@*
*@?*
*@*?com
*@*.com
but would allow akills such as:
*@*a.com
*@foobar*
Works for me, and is nicely configurable.
--
Andy Smith <andy at strugglers.net>