Просмотр исходного кода

* Few bugs in cookie-op checking

svn: 1208
Bryan Drewery 22 лет назад
Родитель
Сommit
cac505b743
1 измененных файлов с 4 добавлено и 5 удалено
  1. 4 5
      src/mod/irc.mod/mode.c

+ 4 - 5
src/mod/irc.mod/mode.c

@@ -899,7 +899,7 @@ gotmode(char *from, char *msg)
 
       if (!isserver) {
         char **modes = NULL;
-        char tmp[1024] = "", *wptr = NULL, *p = NULL, work[1024] = "";
+        char tmp[1024] = "", *wptr = NULL, *p = NULL, work[1024] = "", sign = '+';
         int modecnt = 0, i = 0, n = 0, ops = 0, deops = 0, bans = 0, unbans = 0, me_opped = 0;
 
         /* Split up the mode: #chan modes param param param param */
@@ -908,8 +908,7 @@ gotmode(char *from, char *msg)
         p = newsplit(&wptr);
         modes = calloc(modesperline + 1, sizeof(char *));
         while (*p) {            /* +MODES PARAM PARAM PARAM ... */
-          char *mp = NULL, sign = '+';
-
+          char *mp = NULL;
           if (*p == '+')
             sign = '+';
           else if (*p == '-')
@@ -982,13 +981,13 @@ gotmode(char *from, char *msg)
               int isbadop = 0;
 
               /* If no unbans or the -b is not the LAST mode, it's bad. */
-              if (unbans != 1 || (strncmp(modes[modecnt], "-b", 2))) {
+              if (unbans != 1 || (strncmp(modes[modecnt - 1], "-b", 2))) {
                 isbadop = 1;
               } else {
                 char enccookie[25] = "", plaincookie[25] = "", key[NICKLEN + 20] = "", goodcookie[25] = "";
 
                 /* -b *!*@[...] */
-                strncpyz(enccookie, (char *) &(modes[modecnt][8]), sizeof(enccookie));
+                strncpyz(enccookie, (char *) &(modes[modecnt - 1][8]), sizeof(enccookie));
                 p = enccookie + strlen(enccookie) - 1;
                 strcpy(key, nick);
                 strcat(key, SALT2);