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

* Fix a segfault in op cookies during a desync


svn: 3643
Bryan Drewery 18 лет назад
Родитель
Сommit
4fbcebb2a5
3 измененных файлов с 4 добавлено и 2 удалено
  1. 1 0
      doc/UPDATES
  2. 1 1
      src/mod/irc.mod/irc.c
  3. 2 1
      src/mod/irc.mod/mode.c

+ 1 - 0
doc/UPDATES

@@ -1,5 +1,6 @@
 1.2.15 - http://wraith.botpack.net/milestone/1.2.15
 * Fix a possible segfault when binaries compiled wrong
+* Fix a segfault in op cookies during a desync
 
 1.2.14 - http://wraith.botpack.net/milestone/1.2.14
 * Fix another bug in shell functions. (fixes #321)

+ 1 - 1
src/mod/irc.mod/irc.c

@@ -343,7 +343,7 @@ void makecookie(char *out, size_t len, const char *chname, const memberlist* opp
   /* &ts[4] is now last 6 digits of time */
   egg_snprintf(ts, sizeof(ts), "%010li", now + timesync);
   
-  const char *hash1 = cookie_hash(chname, opper, m1, ts, randstring);
+  const char* hash1 = cookie_hash(chname, opper, m1, ts, randstring);
   const char* hash2 = m2 ? cookie_hash(chname, opper, m2, ts, randstring) : NULL;
   const char* hash3 = m3 ? cookie_hash(chname, opper, m3, ts, randstring) : NULL;
 

+ 2 - 1
src/mod/irc.mod/mode.c

@@ -100,6 +100,7 @@ flush_cookies(struct chanset_t *chan, int pri)
 
   chan->cbytes = 0;
 
+  int nick_i = 0;
   for (unsigned int i = 0; i < (modesperline - 1); i++) {
     if (chan->ccmode[i].op && postsize > strlen(chan->ccmode[i].op)) {
       memberlist* mx = ismember(chan, chan->ccmode[i].op);
@@ -113,7 +114,7 @@ flush_cookies(struct chanset_t *chan, int pri)
         /* .. and params */
         postsize -= egg_strcatn(post, chan->ccmode[i].op, sizeof(post));
         postsize -= egg_strcatn(post, " ", sizeof(post));
-        nicks[i] = mx;
+        nicks[nick_i++] = mx;
       }
       free(chan->ccmode[i].op);
       chan->ccmode[i].op = NULL;