diff options
author | certus 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 |
---|---|---|
committer | certus 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 |
commit | cb7dc8881afc814edb90bd506f6d58b53115c7ec (patch) | |
tree | 5c04e5786556e7d254d50cbc3f782451ba8f88a6 /src/core/hs_set.c | |
parent | 035e196c0f038d8d394c2f46bf90d549f678cc73 (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.c | 31 |
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; } |