Merge branch 'maint-0.2.2' into release-0.2.2
This commit is contained in:
commit
57db578b81
|
@ -0,0 +1,5 @@
|
|||
o Minor bugfixes:
|
||||
- Resolve an integer overflow bug in smartlist_ensure_capacity.
|
||||
Fixes bug 4230; bugfix on Tor 0.1.0.1-rc. Based on a patch by
|
||||
Mansour Moufid.
|
||||
|
|
@ -62,13 +62,22 @@ smartlist_clear(smartlist_t *sl)
|
|||
static INLINE void
|
||||
smartlist_ensure_capacity(smartlist_t *sl, int size)
|
||||
{
|
||||
#if SIZEOF_SIZE_T > SIZEOF_INT
|
||||
#define MAX_CAPACITY (INT_MAX)
|
||||
#else
|
||||
#define MAX_CAPACITY (int)((SIZE_MAX / (sizeof(void*))))
|
||||
#endif
|
||||
if (size > sl->capacity) {
|
||||
int higher = sl->capacity * 2;
|
||||
while (size > higher)
|
||||
higher *= 2;
|
||||
tor_assert(higher > 0); /* detect overflow */
|
||||
int higher = sl->capacity;
|
||||
if (PREDICT_UNLIKELY(size > MAX_CAPACITY/2)) {
|
||||
tor_assert(size <= MAX_CAPACITY);
|
||||
higher = MAX_CAPACITY;
|
||||
} else {
|
||||
while (size > higher)
|
||||
higher *= 2;
|
||||
}
|
||||
sl->capacity = higher;
|
||||
sl->list = tor_realloc(sl->list, sizeof(void*)*sl->capacity);
|
||||
sl->list = tor_realloc(sl->list, sizeof(void*)*((size_t)sl->capacity));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1909,7 +1909,7 @@ dirserv_compute_performance_thresholds(routerlist_t *rl)
|
|||
* of Fast nodes. */
|
||||
if (options->AuthDirFastGuarantee &&
|
||||
fast_bandwidth > options->AuthDirFastGuarantee)
|
||||
fast_bandwidth = options->AuthDirFastGuarantee;
|
||||
fast_bandwidth = (uint32_t)options->AuthDirFastGuarantee;
|
||||
|
||||
/* Now that we have a time-known that 7/8 routers are known longer than,
|
||||
* fill wfus with the wfu of every such "familiar" router. */
|
||||
|
|
Loading…
Reference in New Issue