mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-24 04:13:28 +01:00
Fix integer overflow in the rate-limiter (#19435).
This commit is contained in:
parent
264fb7eb82
commit
77459b97aa
6
changes/bug19435
Normal file
6
changes/bug19435
Normal file
@ -0,0 +1,6 @@
|
||||
o Major bugfixes (user interface):
|
||||
- Fix an integer overflow in the rate-limiter that caused displaying of
|
||||
wrong number of suppressed messages (if there are too many of them).
|
||||
If the number of messages hits the limit of messages per interval the
|
||||
rate-limiter drops a warning and doesn't count any further.
|
||||
Fixes bug 19435.
|
@ -1983,7 +1983,9 @@ update_approx_time(time_t now)
|
||||
|
||||
/** If the rate-limiter <b>lim</b> is ready at <b>now</b>, return the number
|
||||
* of calls to rate_limit_is_ready (including this one!) since the last time
|
||||
* rate_limit_is_ready returned nonzero. Otherwise return 0. */
|
||||
* rate_limit_is_ready returned nonzero. Otherwise return 0.
|
||||
* If the call number hits <b>RATELIM_TOOMANY</b> limit, drop a warning
|
||||
* about this event and stop counting. */
|
||||
static int
|
||||
rate_limit_is_ready(ratelim_t *lim, time_t now)
|
||||
{
|
||||
@ -1993,7 +1995,15 @@ rate_limit_is_ready(ratelim_t *lim, time_t now)
|
||||
lim->n_calls_since_last_time = 0;
|
||||
return res;
|
||||
} else {
|
||||
++lim->n_calls_since_last_time;
|
||||
if (lim->n_calls_since_last_time < RATELIM_TOOMANY) {
|
||||
++lim->n_calls_since_last_time;
|
||||
} else if (lim->n_calls_since_last_time == RATELIM_TOOMANY) {
|
||||
log_warn(LD_GENERAL,
|
||||
"Enormously large number of messages (%d). It's probably a bug.",
|
||||
RATELIM_TOOMANY);
|
||||
++lim->n_calls_since_last_time;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
@ -292,6 +292,7 @@ typedef struct ratelim_t {
|
||||
} ratelim_t;
|
||||
|
||||
#define RATELIM_INIT(r) { (r), 0, 0 }
|
||||
#define RATELIM_TOOMANY (16*1000)
|
||||
|
||||
char *rate_limit_log(ratelim_t *lim, time_t now);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user