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_DEF_LINK_TOL 1500
|
||||||
#define TIPC_MAX_LINK_TOL 30000
|
#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
|
* 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)
|
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->tolerance = tolerance;
|
||||||
l_ptr->continuity_interval =
|
l_ptr->continuity_interval =
|
||||||
((tolerance / 4) > 500) ? 500 : tolerance / 4;
|
((tolerance / 4) > 500) ? 500 : tolerance / 4;
|
||||||
|
|
Loading…
Reference in New Issue