From 0b7f8f9773d34baa638e0107e5c4c14988a22b80 Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Fri, 6 May 2016 19:45:21 +0800 Subject: [PATCH] Fix crash in igmp_start_timer (#1826) --- tools/sdk/lwip/src/core/ipv4/igmp.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/tools/sdk/lwip/src/core/ipv4/igmp.c b/tools/sdk/lwip/src/core/ipv4/igmp.c index 2bb69e4d9..90c82a631 100644 --- a/tools/sdk/lwip/src/core/ipv4/igmp.c +++ b/tools/sdk/lwip/src/core/ipv4/igmp.c @@ -703,11 +703,22 @@ static void igmp_start_timer(struct igmp_group *group, u8_t max_time) { /* ensure the input value is > 0 */ +#ifdef LWIP_RAND if (max_time == 0) { max_time = 1; } /* ensure the random value is > 0 */ - group->timer = (LWIP_RAND() % (max_time - 1)) + 1; + group->timer = (LWIP_RAND() % max_time); + if (group->timer == 0) { + group->timer = 1; + } +#else /* LWIP_RAND */ + /* ATTENTION: use this only if absolutely necessary! */ + group->timer = max_time / 2; + if (group->timer == 0) { + group->timer = 1; + } +#endif /* LWIP_RAND */ } /**