Procházet zdrojové kódy

avoid case (not yet triggered) where smartlists could grow out
of control


svn:r3636

Roger Dingledine před 21 roky
rodič
revize
596d65ec3b
1 změnil soubory, kde provedl 3 přidání a 1 odebrání
  1. 3 1
      src/common/container.c

+ 3 - 1
src/common/container.c

@@ -88,7 +88,9 @@ void smartlist_truncate(smartlist_t *sl, int len)
 /** Append element to the end of the list. */
 void smartlist_add(smartlist_t *sl, void *element) {
   if (sl->num_used >= sl->capacity) {
-    sl->capacity *= 2;
+    int higher = sl->capacity * 2;
+    tor_assert(higher > sl->capacity); /* detect overflow */
+    sl->capacity = higher;
     sl->list = tor_realloc(sl->list, sizeof(void*)*sl->capacity);
   }
   sl->list[sl->num_used++] = element;