about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAlexander Barton <alex@barton.de>2012-12-31 18:13:18 +0100
committerAlexander Barton <alex@barton.de>2012-12-31 18:13:18 +0100
commit20ddffca0d5ae5393adc57b67ba90e15d33e2ee3 (patch)
treed8b1a41aa52924f2cb6df126fc8528c9dd8e1c0c
parent25e56a5e837173a567a0873bd5a9ccc126cff333 (diff)
downloadngircd-20ddffca0d5ae5393adc57b67ba90e15d33e2ee3.tar.gz
ngircd-20ddffca0d5ae5393adc57b67ba90e15d33e2ee3.zip
Mode setting: only check channel user modes when on channel
Only check the channel user modes of the initiator if he is joined to
this channel and not an IRC operator enforcing modes (which requires
the configuration option "OperCanUseMode" to be enabled), because trying
to check channel user modes of a non-member results in this assertion:

 Assertion failed: (cl2chan != NULL), function Channel_UserModes,
  file channel.c, line 742.

This closes bug #147, thanks to James Kirwill <james.kirwill@bk.ru>
for tracking this down!
-rw-r--r--src/ngircd/irc-mode.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/ngircd/irc-mode.c b/src/ngircd/irc-mode.c
index 32219975..a63a0f41 100644
--- a/src/ngircd/irc-mode.c
+++ b/src/ngircd/irc-mode.c
@@ -550,7 +550,7 @@ Channel_Mode(CLIENT *Client, REQUEST *Req, CLIENT *Origin, CHANNEL *Channel)
 		if (arg_arg >= Req->argc)
 			arg_arg = -1;
 
-		if(!is_machine) {
+		if(!is_machine && !is_oper) {
 			o_mode_ptr = Channel_UserModes(Channel, Client);
 			while( *o_mode_ptr ) {
 				if ( *o_mode_ptr == 'q')