Browse Source

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


svn:r3636

Roger Dingledine 20 years ago
parent
commit
596d65ec3b
1 changed files with 3 additions and 1 deletions
  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;