[tor-commits] [tor/master] Avoid performing an assert on an always-true value

nickm at torproject.org nickm at torproject.org
Thu Aug 21 16:14:09 UTC 2014


commit 7bc25b5a78bfaa0b04eb55470a2b36cf9a466d72
Author: Nick Mathewson <nickm at torproject.org>
Date:   Thu Aug 21 10:56:36 2014 -0400

    Avoid performing an assert on an always-true value
    
    This was freaking out coverity.
    
    [CID 743379]
---
 src/common/container.c |    8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/src/common/container.c b/src/common/container.c
index 54f041b..7f02dec 100644
--- a/src/common/container.c
+++ b/src/common/container.c
@@ -66,11 +66,17 @@ smartlist_ensure_capacity(smartlist_t *sl, int size)
 #define MAX_CAPACITY (INT_MAX)
 #else
 #define MAX_CAPACITY (int)((SIZE_MAX / (sizeof(void*))))
+#define ASSERT_CAPACITY
 #endif
   if (size > sl->capacity) {
     int higher = sl->capacity;
     if (PREDICT_UNLIKELY(size > MAX_CAPACITY/2)) {
+#ifdef ASSERT_CAPACITY
+      /* We don't include this assertion when MAX_CAPACITY == INT_MAX,
+       * since int size; (size <= INT_MAX) makes analysis tools think we're
+       * doing something stupid. */
       tor_assert(size <= MAX_CAPACITY);
+#endif
       higher = MAX_CAPACITY;
     } else {
       while (size > higher)
@@ -80,6 +86,8 @@ smartlist_ensure_capacity(smartlist_t *sl, int size)
     sl->list = tor_reallocarray(sl->list, sizeof(void *),
                                 ((size_t)sl->capacity));
   }
+#undef ASSERT_CAPACITY
+#undef MAX_CAPACITY
 }
 
 /** Append element to the end of the list. */





More information about the tor-commits mailing list