Explorar el Código

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


svn:r3636

Roger Dingledine hace 21 años
padre
commit
596d65ec3b
Se han modificado 1 ficheros con 3 adiciones y 1 borrados
  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;