diff options
-rw-r--r-- | Changes | 1 | ||||
-rw-r--r-- | src/core/hs_setall.c | 54 | ||||
-rw-r--r-- | version.log | 6 |
3 files changed, 32 insertions, 29 deletions
@@ -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 |