diff options
-rw-r--r-- | Changes | 1 | ||||
-rw-r--r-- | nickserv.c | 33 | ||||
-rw-r--r-- | version.log | 6 |
3 files changed, 29 insertions, 11 deletions
@@ -1,6 +1,7 @@ Anope Version 1.7.x (will be renamed when next release is produced) ------------------- Provided by Anope Dev. <dev@anope.org> +2004/04/22 Fixed ALIST bug when being invoked by systems admins (Bug #20) 2004/04/19 Added /bin/anoperc anope console control script Anope Version 1.7.2 diff --git a/nickserv.c b/nickserv.c index 1eb64fc62..e0a10b692 100644 --- a/nickserv.c +++ b/nickserv.c @@ -3581,23 +3581,36 @@ static int do_glist(User * u) */ static int do_alist(User * u) { - char *lev = strtok(NULL, " "); + char *nick = NULL; + char *lev = NULL; NickAlias *na; int min_level = 0; int is_servadmin = is_services_admin(u); - /* Services admins can request ALIST on nicks. - * Check if 'lev' (first token) is actually a nick - * and, if so, reassign pointers. - */ - if (is_servadmin && lev && (na = findnick(lev))) { - lev = strtok(NULL, " "); - } else { + if (!is_servadmin) { + /* Non service admins can only see their own levels */ na = u->na; + } else { + /* Services admins can request ALIST on nicks. + * The first argument for service admins must + * always be a nickname. + */ + nick = strtok(NULL, " "); + + /* If an argument was passed, use it as the nick to see levels + * for, else check levels for the user calling the command */ + if (nick) { + na = findnick(nick); + } else { + na = u->na; + } } + /* If available, get level from arguments */ + lev = strtok(NULL, " "); + /* if a level was given, make sure it's an int for later */ if (lev) { if (stricmp(lev, "FOUNDER") == 0) { @@ -3619,8 +3632,8 @@ static int do_alist(User * u) if (!nick_identified(u)) { notice_lang(s_NickServ, u, ACCESS_DENIED); - } else if (lev && !na) { - notice_lang(s_NickServ, u, NICK_X_NOT_REGISTERED, na->nick); + } else if (is_servadmin && nick && !na) { + notice_lang(s_NickServ, u, NICK_X_NOT_REGISTERED, nick); } else if (na->status & NS_VERBOTEN) { notice_lang(s_NickServ, u, NICK_X_FORBIDDEN, na->nick); } else { diff --git a/version.log b/version.log index 8230b0be5..5a0a377ba 100644 --- a/version.log +++ b/version.log @@ -8,11 +8,15 @@ VERSION_MAJOR="1" VERSION_MINOR="7" VERSION_PATCH="2" -VERSION_BUILD="67" +VERSION_BUILD="68" VERSION_EXTRA="" # $Log$ # +# BUILD : 1.7.2 (68) +# BUGS : 20 +# NOTES : Fixed ALIST bug when being invoked by systems admins +# # BUILD : 1.7.2 (67) # BUGS : N/A # NOTES : Bumped Changes file verisons ready for new updates |