Multiple fixes found by coverity scan

This commit is contained in:
goldsimon 2014-04-30 12:22:31 +02:00
parent 88a57dc98d
commit e4ddd6cb6d
4 changed files with 15 additions and 13 deletions

View File

@ -314,7 +314,7 @@ lwip_getaddrinfo(const char *nodename, const char *servname,
total_size <= NETDB_ELEM_SIZE); total_size <= NETDB_ELEM_SIZE);
ai = (struct addrinfo *)memp_malloc(MEMP_NETDB); ai = (struct addrinfo *)memp_malloc(MEMP_NETDB);
if (ai == NULL) { if (ai == NULL) {
goto memerr; return EAI_MEMORY;
} }
memset(ai, 0, total_size); memset(ai, 0, total_size);
sa = (struct sockaddr_in*)((u8_t*)ai + sizeof(struct addrinfo)); sa = (struct sockaddr_in*)((u8_t*)ai + sizeof(struct addrinfo));
@ -343,11 +343,6 @@ lwip_getaddrinfo(const char *nodename, const char *servname,
*res = ai; *res = ai;
return 0; return 0;
memerr:
if (ai != NULL) {
memp_free(MEMP_NETDB, ai);
}
return EAI_MEMORY;
} }
#endif /* LWIP_DNS && LWIP_SOCKET */ #endif /* LWIP_DNS && LWIP_SOCKET */

View File

@ -704,6 +704,9 @@ igmp_start_timer(struct igmp_group *group, u8_t max_time)
} }
/* ensure the random value is > 0 */ /* ensure the random value is > 0 */
group->timer = (LWIP_RAND() % max_time); group->timer = (LWIP_RAND() % max_time);
if (group->timer == 0) {
group->timer = 1;
}
#else /* LWIP_RAND */ #else /* LWIP_RAND */
/* ATTENTION: use this only if absolutely necessary! */ /* ATTENTION: use this only if absolutely necessary! */
group->timer = max_time / 2; group->timer = max_time / 2;

View File

@ -496,7 +496,10 @@ mld6_delayed_report(struct mld_group *group, u16_t maxresp)
#ifdef LWIP_RAND #ifdef LWIP_RAND
/* Randomize maxresp. (if LWIP_RAND is supported) */ /* Randomize maxresp. (if LWIP_RAND is supported) */
maxresp = (LWIP_RAND() % (maxresp - 1)) + 1; maxresp = LWIP_RAND() % maxresp;
if (maxresp == 0) {
maxresp = 1;
}
#endif /* LWIP_RAND */ #endif /* LWIP_RAND */
/* Apply timer value if no report has been scheduled already. */ /* Apply timer value if no report has been scheduled already. */

View File

@ -455,24 +455,25 @@ nd6_input(struct pbuf *p, struct netif *inp)
if (prefix_opt->flags & ND6_PREFIX_FLAG_ON_LINK) { if (prefix_opt->flags & ND6_PREFIX_FLAG_ON_LINK) {
/* Add to on-link prefix list. */ /* Add to on-link prefix list. */
s8_t prefix;
/* Get a memory-aligned copy of the prefix. */ /* Get a memory-aligned copy of the prefix. */
ip6_addr_set(ip6_current_dest_addr(), &(prefix_opt->prefix)); ip6_addr_set(ip6_current_dest_addr(), &(prefix_opt->prefix));
/* find cache entry for this prefix. */ /* find cache entry for this prefix. */
i = nd6_get_onlink_prefix(ip6_current_dest_addr(), inp); prefix = nd6_get_onlink_prefix(ip6_current_dest_addr(), inp);
if (i < 0) { if (prefix < 0) {
/* Create a new cache entry. */ /* Create a new cache entry. */
i = nd6_new_onlink_prefix(ip6_current_dest_addr(), inp); prefix = nd6_new_onlink_prefix(ip6_current_dest_addr(), inp);
} }
if (i >= 0) { if (prefix >= 0) {
prefix_list[i].invalidation_timer = prefix_opt->valid_lifetime; prefix_list[prefix].invalidation_timer = prefix_opt->valid_lifetime;
#if LWIP_IPV6_AUTOCONFIG #if LWIP_IPV6_AUTOCONFIG
if (prefix_opt->flags & ND6_PREFIX_FLAG_AUTONOMOUS) { if (prefix_opt->flags & ND6_PREFIX_FLAG_AUTONOMOUS) {
/* Mark prefix as autonomous, so that address autoconfiguration can take place. /* Mark prefix as autonomous, so that address autoconfiguration can take place.
* Only OR flag, so that we don't over-write other flags (such as ADDRESS_DUPLICATE)*/ * Only OR flag, so that we don't over-write other flags (such as ADDRESS_DUPLICATE)*/
prefix_list[i].flags |= ND6_PREFIX_AUTOCONFIG_AUTONOMOUS; prefix_list[prefix].flags |= ND6_PREFIX_AUTOCONFIG_AUTONOMOUS;
} }
#endif /* LWIP_IPV6_AUTOCONFIG */ #endif /* LWIP_IPV6_AUTOCONFIG */
} }