Merge pull request #11182 from miri64/gnrc_ipv6_nib/fix/pkt-null-on-error

gnrc_ipv6_nib: check if pkt is NULL on error
This commit is contained in:
Martine Lenders 2019-03-27 18:38:32 +01:00 committed by GitHub
commit aa8e760e46
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -203,7 +203,7 @@ int gnrc_ipv6_nib_get_next_hop_l2addr(const ipv6_addr_t *dst,
/* _resolve_addr releases pkt only if not queued (in which case /* _resolve_addr releases pkt only if not queued (in which case
* we also shouldn't release), but if netif is not defined we * we also shouldn't release), but if netif is not defined we
* should release in any case. */ * should release in any case. */
if (netif == NULL) { if ((netif == NULL) && (pkt != NULL)) {
gnrc_icmpv6_error_dst_unr_send(ICMPV6_ERROR_DST_UNR_ADDR, gnrc_icmpv6_error_dst_unr_send(ICMPV6_ERROR_DST_UNR_ADDR,
pkt); pkt);
gnrc_pktbuf_release_error(pkt, EHOSTUNREACH); gnrc_pktbuf_release_error(pkt, EHOSTUNREACH);
@ -228,10 +228,14 @@ int gnrc_ipv6_nib_get_next_hop_l2addr(const ipv6_addr_t *dst,
memcpy(&route.next_hop, dst, sizeof(route.next_hop)); memcpy(&route.next_hop, dst, sizeof(route.next_hop));
} }
else { else {
gnrc_icmpv6_error_dst_unr_send(ICMPV6_ERROR_DST_UNR_NO_ROUTE,
pkt);
res = -ENETUNREACH; res = -ENETUNREACH;
if (pkt != NULL) {
gnrc_icmpv6_error_dst_unr_send(
ICMPV6_ERROR_DST_UNR_NO_ROUTE,
pkt
);
gnrc_pktbuf_release_error(pkt, ENETUNREACH); gnrc_pktbuf_release_error(pkt, ENETUNREACH);
}
break; break;
} }
} }
@ -1201,6 +1205,7 @@ static bool _resolve_addr(const ipv6_addr_t *dst, gnrc_netif_t *netif,
return false; return false;
} }
} }
/* pkt != NULL already checked above */
else { else {
gnrc_icmpv6_error_dst_unr_send(ICMPV6_ERROR_DST_UNR_ADDR, gnrc_icmpv6_error_dst_unr_send(ICMPV6_ERROR_DST_UNR_ADDR,
pkt); pkt);