From 2be86e1958ca8de8aaad54f75a8d6afec59d49af Mon Sep 17 00:00:00 2001 From: special Date: Wed, 26 Sep 2007 23:49:15 +0000 Subject: Fixed bug #404; this was caused by recieving multiple OPERTYPEs from a remote server, which eventually resulted in bad pointers inside the all_opers list git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@8084 e03df62e-2008-0410-955e-edbf42e46eb7 --- src/users.cpp | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) (limited to 'src/users.cpp') diff --git a/src/users.cpp b/src/users.cpp index b357fd149..4f5c567d2 100644 --- a/src/users.cpp +++ b/src/users.cpp @@ -830,16 +830,9 @@ void userrec::UnOper() // unset their oper type (what IS_OPER checks), and remove +o *this->oper = 0; this->modes[UM_OPERATOR] = 0; - - // remove them from the opers list. - for (std::vector::iterator a = ServerInstance->all_opers.begin(); a < ServerInstance->all_opers.end(); a++) - { - if (*a == this) - { - ServerInstance->all_opers.erase(a); - return; - } - } + + // remove the user from the oper list. Will remove multiple entries as a safeguard against bug #404 + ServerInstance->all_opers.remove(this); } } -- cgit v1.2.3