瀏覽代碼

* Port [3383] to 1.2.14
* Fix segfault resulting from flood-exempt



svn: 3384

Bryan Drewery 19 年之前
父節點
當前提交
2b4e582faa
共有 1 個文件被更改,包括 4 次插入3 次删除
  1. 4 3
      src/mod/irc.mod/chan.c

+ 4 - 3
src/mod/irc.mod/chan.c

@@ -424,8 +424,8 @@ static bool detect_chan_flood(char *floodnick, char *floodhost, char *from,
        (glob_master(fr) || chan_master(fr))) ||
        (glob_master(fr) || chan_master(fr))) ||
       ((which != FLOOD_DEOP) && (which != FLOOD_KICK) && 
       ((which != FLOOD_DEOP) && (which != FLOOD_KICK) && 
        ( (chk_noflood(fr) || 
        ( (chk_noflood(fr) || 
-         (chan->flood_exempt_mode == FLOOD_EXEMPT_OP && chan_hasop(m)) || 
-         (chan->flood_exempt_mode == FLOOD_EXEMPT_VOICE && chan_hasvoice(m)) )
+         (m && chan->flood_exempt_mode == FLOOD_EXEMPT_OP && chan_hasop(m)) || 
+         (m && chan->flood_exempt_mode == FLOOD_EXEMPT_VOICE && chan_hasvoice(m)) )
       )))
       )))
     return 0;
     return 0;
 
 
@@ -2435,10 +2435,11 @@ static int gotjoin(char *from, char *chname)
       /* ok, the op-on-join,etc, tests...first only both if Im opped */
       /* ok, the op-on-join,etc, tests...first only both if Im opped */
       if (me_op(chan)) {
       if (me_op(chan)) {
         struct flag_record fr = {FR_GLOBAL | FR_CHAN, 0, 0, 0 };
         struct flag_record fr = {FR_GLOBAL | FR_CHAN, 0, 0, 0 };
-        bool is_op = chk_op(fr, chan);
 
 
         get_user_flagrec(m->user, &fr, chan->dname);
         get_user_flagrec(m->user, &fr, chan->dname);
 
 
+        bool is_op = chk_op(fr, chan);
+
         /* Check for a mass join */
         /* Check for a mass join */
         if (!splitjoin && channel_nomassjoin(chan) && !is_op) {
         if (!splitjoin && channel_nomassjoin(chan) && !is_op) {
           if (chan->channel.drone_jointime < now - chan->flood_mjoin_time) {      //expired, reset counter
           if (chan->channel.drone_jointime < now - chan->flood_mjoin_time) {      //expired, reset counter