summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAdam <Adam@anope.org>2013-02-13 13:14:22 -0500
committerAYANOKOUZI, Ryuunosuke <i38w7i3@yahoo.co.jp>2013-02-17 14:08:34 +0900
commitf7bac0839b21707273d48bb656f66b0d3e25f34e (patch)
tree786c52785050061859209b0784dc2d649b736697 /src
parent862b101935a9573543090699cc7569910ec78feb (diff)
Do not allow invalid nicknames to be forbidden in ns_forbid
Diffstat (limited to 'src')
-rw-r--r--src/core/ns_forbid.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/core/ns_forbid.c b/src/core/ns_forbid.c
index 094c819c4..28bff3f55 100644
--- a/src/core/ns_forbid.c
+++ b/src/core/ns_forbid.c
@@ -73,6 +73,7 @@ static int do_forbid(User * u)
NickAlias *na;
char *nick = strtok(NULL, " ");
char *reason = strtok(NULL, "");
+ char *ch;
/* Assumes that permission checking has already been done. */
if (!nick || (ForceForbidReason && !reason)) {
@@ -88,6 +89,21 @@ static int do_forbid(User * u)
notice_lang(s_NickServ, u, NICK_X_FORBIDDEN, nick);
return MOD_CONT;
}
+
+ if (isdigit(nick[0]) || nick[0] == '-' || strlen(nick) > NICKMAX - 1)
+ {
+ notice_lang(s_NickServ, u, NICK_X_FORBIDDEN, nick);
+ return MOD_CONT;
+ }
+ for (ch = nick; *ch; ch++)
+ {
+ if (!isvalidnick(*ch))
+ {
+ notice_lang(s_NickServ, u, NICK_X_FORBIDDEN, nick);
+ return MOD_CONT;
+ }
+ }
+
if ((na = findnick(nick)) != NULL) {
if (NSSecureAdmins && nick_is_services_admin(na->nc)
&& !is_services_root(u)) {