tipc: Improve handling of invalid link tolerance values
Enhances TIPC link code to ignore an invalid link tolerance value contained in an incoming LINK_PROTOCOL message, rather than processing the value and potentially causing a divide-by-zero error. Also add a compile-time check that catches attempts to redefine TIPC's minimum link tolerance value in a manner that might result in the same divide-by-zero error at run-time. Signed-off-by: Allan Stephens <Allan.Stephens@windriver.com> Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
This commit is contained in:
parent
3f8dd9446e
commit
5413b4c6c0
|
@ -193,6 +193,10 @@
|
|||
#define TIPC_DEF_LINK_TOL 1500
|
||||
#define TIPC_MAX_LINK_TOL 30000
|
||||
|
||||
#if (TIPC_MIN_LINK_TOL < 16)
|
||||
#error "TIPC_MIN_LINK_TOL is too small (abort limit may be NaN)"
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Link window limits (min, default, max), in packets
|
||||
*/
|
||||
|
|
|
@ -2617,6 +2617,9 @@ static void link_check_defragm_bufs(struct link *l_ptr)
|
|||
|
||||
static void link_set_supervision_props(struct link *l_ptr, u32 tolerance)
|
||||
{
|
||||
if ((tolerance < TIPC_MIN_LINK_TOL) || (tolerance > TIPC_MAX_LINK_TOL))
|
||||
return;
|
||||
|
||||
l_ptr->tolerance = tolerance;
|
||||
l_ptr->continuity_interval =
|
||||
((tolerance / 4) > 500) ? 500 : tolerance / 4;
|
||||
|
|
Loading…
Reference in New Issue