summaryrefslogtreecommitdiff
path: root/src/core/hs_set.c
diff options
context:
space:
mode:
authorcertus certus@31f1291d-b8d6-0310-a050-a5561fc1590b <certus certus@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864>2006-03-01 18:55:30 +0000
committercertus certus@31f1291d-b8d6-0310-a050-a5561fc1590b <certus certus@31f1291d-b8d6-0310-a050-a5561fc1590b@5417fbe8-f217-4b02-8779-1006273d7864>2006-03-01 18:55:30 +0000
commitcb7dc8881afc814edb90bd506f6d58b53115c7ec (patch)
tree5c04e5786556e7d254d50cbc3f782451ba8f88a6 /src/core/hs_set.c
parent035e196c0f038d8d394c2f46bf90d549f678cc73 (diff)
git-svn-id: svn://svn.anope.org/anope/trunk@993 31f1291d-b8d6-0310-a050-a5561fc1590b
git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@718 5417fbe8-f217-4b02-8779-1006273d7864
Diffstat (limited to 'src/core/hs_set.c')
-rw-r--r--src/core/hs_set.c31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/core/hs_set.c b/src/core/hs_set.c
index f62491414..b93acccc9 100644
--- a/src/core/hs_set.c
+++ b/src/core/hs_set.c
@@ -81,6 +81,7 @@ int myDoSet(User * u)
if (!nick || !rawhostmask) {
notice_lang(s_HostServ, u, HOST_SET_SYNTAX, s_HostServ);
+ free(hostmask);
return MOD_CONT;
}
@@ -89,21 +90,32 @@ int myDoSet(User * u)
rawhostmask = myStrGetTokenRemainder(rawhostmask, '@', 1); /* get the remaining string */
if (!rawhostmask) {
notice_lang(s_HostServ, u, HOST_SET_SYNTAX, s_HostServ);
+ free(vIdent);
+ free(hostmask);
return MOD_CONT;
}
if (strlen(vIdent) > USERMAX - 1) {
notice_lang(s_HostServ, u, HOST_SET_IDENTTOOLONG, USERMAX);
+ free(vIdent);
+ free(rawhostmask);
+ free(hostmask);
return MOD_CONT;
} else {
for (s = vIdent; *s; s++) {
if (!isvalidchar(*s)) {
notice_lang(s_HostServ, u, HOST_SET_IDENT_ERROR);
+ free(vIdent);
+ free(rawhostmask);
+ free(hostmask);
return MOD_CONT;
}
}
}
if (!ircd->vident) {
notice_lang(s_HostServ, u, HOST_NO_VIDENT);
+ free(vIdent);
+ free(rawhostmask);
+ free(hostmask);
return MOD_CONT;
}
}
@@ -111,11 +123,21 @@ int myDoSet(User * u)
snprintf(hostmask, HOSTMAX - 1, "%s", rawhostmask);
else {
notice_lang(s_HostServ, u, HOST_SET_TOOLONG, HOSTMAX);
+ if (vIdent) {
+ free(vIdent);
+ free(rawhostmask);
+ }
+ free(hostmask);
return MOD_CONT;
}
if (!isValidHost(hostmask, 3)) {
notice_lang(s_HostServ, u, HOST_SET_ERROR);
+ if (vIdent) {
+ free(vIdent);
+ free(rawhostmask);
+ }
+ free(hostmask);
return MOD_CONT;
}
@@ -125,6 +147,11 @@ int myDoSet(User * u)
if ((na = findnick(nick))) {
if (na->status & NS_VERBOTEN) {
notice_lang(s_HostServ, u, NICK_X_FORBIDDEN, nick);
+ if (vIdent) {
+ free(vIdent);
+ free(rawhostmask);
+ }
+ free(hostmask);
return MOD_CONT;
}
if (vIdent && ircd->vident) {
@@ -143,5 +170,9 @@ int myDoSet(User * u)
notice_lang(s_HostServ, u, HOST_NOREG, nick);
}
free(hostmask);
+ if (vIdent) {
+ free(vIdent);
+ free(rawhostmask);
+ }
return MOD_CONT;
}