* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA
*
- * $Id: chmode.c 3530 2007-07-14 12:20:48Z jilles $
+ * $Id: chmode.c 3580 2007-11-07 23:45:14Z jilles $
*/
#include "stdinc.h"
dlink_list * list, long mode_type)
{
struct Ban *actualBan;
- static char who[BANLEN];
+ static char who[USERHOST_REPLYLEN];
char *realban = LOCAL_COPY(banid);
dlink_node *ptr;
DLINK_FOREACH(ptr, list->head)
{
actualBan = ptr->data;
- if(match(actualBan->banstr, realban))
+ if(mask_match(actualBan->banstr, realban))
return 0;
}
}
*errors |= SM_ERR_NOPRIVS;
return;
}
+ if(MyClient(source_p) && !IsOperResv(source_p))
+ {
+ if(!(*errors & SM_ERR_NOPRIVS))
+ sendto_one(source_p, form_str(ERR_NOPRIVS), me.name,
+ source_p->name, "resv");
+ *errors |= SM_ERR_NOPRIVS;
+ return;
+ }
/* setting + */
if((dir == MODE_ADD) && !(chptr->mode.mode & mode_type))
else
mask = pretty_mask(raw_mask);
- /* we'd have problems parsing this, hyb6 does it too */
- if(strlen(mask) > (MODEBUFLEN - 2))
+ /* we'd have problems parsing this, hyb6 does it too
+ * also make sure it will always fit on a line with channel
+ * name etc.
+ */
+ if(strlen(mask) > IRCD_MIN(BANLEN, MODEBUFLEN - 5))
return;
/* if we're adding a NEW id */