summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Changes1
-rw-r--r--src/core/hs_setall.c54
-rw-r--r--version.log6
3 files changed, 32 insertions, 29 deletions
diff --git a/Changes b/Changes
index 45a0e5f1d..c5c7fe284 100644
--- a/Changes
+++ b/Changes
@@ -58,6 +58,7 @@ Provided by Johno Crawford <johno.crawford@gmail.com> - 2008
02/08 F x86_64 generating improper SHA1 hash values. [#856]
Provided by Jan Milants <jan_renee@msn.com> - 2008
+07/20 F Fixes weird hs_setall behaviour (memory issues). [#916]
07/20 F DEFCON was akilling ulined servers clients. [#899]
07/20 F Botserv replying with /(null). [#894]
07/20 F Anope will not limit sessions for ulined servers. [#909]
diff --git a/src/core/hs_setall.c b/src/core/hs_setall.c
index c3ec12fe2..9f355b1f7 100644
--- a/src/core/hs_setall.c
+++ b/src/core/hs_setall.c
@@ -72,7 +72,7 @@ int do_setall(User * u)
{
char *nick = strtok(NULL, " ");
- char *rawhostmask = sstrdup(strtok(NULL, " "));
+ char *rawhostmask = strtok(NULL, " ");
char *hostmask = smalloc(HOSTMAX);
NickAlias *na;
@@ -83,46 +83,40 @@ int do_setall(User * u)
if (!nick || !rawhostmask) {
notice_lang(s_HostServ, u, HOST_SETALL_SYNTAX, s_HostServ);
- free(rawhostmask);
free(hostmask);
return MOD_CONT;
}
vIdent = myStrGetOnlyToken(rawhostmask, '@', 0); /* Get the first substring, @ as delimiter */
if (vIdent) {
- free(rawhostmask);
rawhostmask = myStrGetTokenRemainder(rawhostmask, '@', 1); /* get the remaining string */
if (!rawhostmask) {
notice_lang(s_HostServ, u, HOST_SETALL_SYNTAX, s_HostServ);
- if (vIdent)
- free(vIdent);
+ free(vIdent);
free(hostmask);
return MOD_CONT;
}
if (strlen(vIdent) > USERMAX - 1) {
notice_lang(s_HostServ, u, HOST_SET_IDENTTOOLONG, USERMAX);
- if (vIdent)
- free(vIdent);
- free(rawhostmask);
+ 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);
- if (vIdent)
- free(vIdent);
- free(rawhostmask);
- free(hostmask);
+ free(vIdent);
+ free(rawhostmask);
+ free(hostmask);
return MOD_CONT;
}
}
}
if (!ircd->vident) {
notice_lang(s_HostServ, u, HOST_NO_VIDENT);
- if (vIdent)
- free(vIdent);
- free(rawhostmask);
+ free(vIdent);
+ free(rawhostmask);
free(hostmask);
return MOD_CONT;
}
@@ -132,19 +126,21 @@ int do_setall(User * u)
snprintf(hostmask, HOSTMAX - 1, "%s", rawhostmask);
else {
notice_lang(s_HostServ, u, HOST_SET_TOOLONG, HOSTMAX);
- if (vIdent)
- free(vIdent);
- free(rawhostmask);
+ 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);
+ if (vIdent) {
+ free(vIdent);
+ free(rawhostmask);
+ }
+ free(hostmask);
return MOD_CONT;
}
@@ -153,10 +149,11 @@ int do_setall(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);
+ if (vIdent) {
+ free(vIdent);
+ free(rawhostmask);
+ }
+ free(hostmask);
return MOD_CONT;
}
if (vIdent && ircd->vident) {
@@ -174,9 +171,10 @@ int do_setall(User * u)
} else {
notice_lang(s_HostServ, u, HOST_NOREG, nick);
}
- if (vIdent)
+ if (vIdent) {
free(vIdent);
- free(rawhostmask);
+ free(rawhostmask);
+ }
free(hostmask);
return MOD_CONT;
}
diff --git a/version.log b/version.log
index 077808e4c..347fe1a5f 100644
--- a/version.log
+++ b/version.log
@@ -9,10 +9,14 @@ VERSION_MAJOR="1"
VERSION_MINOR="7"
VERSION_PATCH="21"
VERSION_EXTRA="-svn"
-VERSION_BUILD="1402"
+VERSION_BUILD="1403"
# $Log$
#
+# BUILD : 1.7.21 (1403)
+# BUGS : 916
+# NOTES : Fixes weird hs_setall behaviour (memory issues). Thanks Jan again
+#
# BUILD : 1.7.21 (1402)
# BUGS : 899
# NOTES : DEFCON was akilling ulined servers clients. Thanks Jan