X-Git-Url: http://git.pk910.de/?a=blobdiff_plain;f=src%2Fchanserv.c;h=0ebed1b8d33504c411a1c85bb506e934fe751337;hb=2817677c02e88e4c8f02a7ce611dd0b2f060bb9b;hp=d50c9147fbe56909b65f776179f763e99bb2ca8d;hpb=1bf0d430020a45aa7dc3b098234eb9df2c5ba294;p=srvx.git diff --git a/src/chanserv.c b/src/chanserv.c index d50c914..0ebed1b 100644 --- a/src/chanserv.c +++ b/src/chanserv.c @@ -2382,7 +2382,7 @@ static CHANSERV_FUNC(cmd_move) REQUIRE_PARAMS(2); - if(IsProtected(channel->channel_info)) + if(IsProtected(channel->channel_info) && !IsOper(user)) { reply("CSMSG_MOVE_NODELETE", channel->name); return 0; @@ -2690,7 +2690,7 @@ static CHANSERV_FUNC(cmd_merge) return 0; } - if(IsProtected(channel->channel_info)) + if(IsProtected(channel->channel_info) && !IsOper(user)) { reply("CSMSG_MERGE_NODELETE"); return 0; @@ -4421,10 +4421,10 @@ static CHANSERV_FUNC(cmd_topic) if(!isdigit(topic[pos])) break; } - if(advtopic_index < 0 || advtopic_index > MAXADVTOPICENTRIES) + if(advtopic_index < 0 || advtopic_index >= MAXADVTOPICENTRIES) { //invalid id! - reply("CSMSG_ADVTOPIC_INVALID_ID", advtopic_index); + reply("CSMSG_ADVTOPIC_INVALID_ID", advtopic_index+1); return 0; } if(cData->advtopic[advtopic_index]) @@ -4446,7 +4446,6 @@ static CHANSERV_FUNC(cmd_topic) new_topic[dpos++] = *ptr; //is % again break; } - ptr--; advtopic_index--; //no zero base if(!cData->advtopic[advtopic_index]) break; //just leave it empty @@ -4458,11 +4457,12 @@ static CHANSERV_FUNC(cmd_topic) break; case '\\': ptr++; /* and fall through */ + if(!*ptr) break; default: new_topic[dpos++] = *ptr; + ptr++; break; } - ptr++; } } else { while((tchar = topic_mask[pos++]) && (dpos <= TOPICLEN)) @@ -5409,7 +5409,7 @@ static CHANSERV_FUNC(cmd_csuspend) REQUIRE_PARAMS(3); - if(IsProtected(channel->channel_info)) + if(IsProtected(channel->channel_info) && !IsOper(user)) { reply("CSMSG_SUSPEND_NODELETE", channel->name); return 0;