Fixes for various nits found by the Coverity tool.
In particular 2 missed return values and an inappropriate bcopy from a possibly NULL pointer. Reviewed by: jake Approved by: rwatson MFC after: 1 week
This commit is contained in:
parent
1771f872d5
commit
403cbcf59f
@ -2092,13 +2092,16 @@ icmp6_reflect(m, off)
|
|||||||
sa6_src.sin6_len = sizeof(sa6_src);
|
sa6_src.sin6_len = sizeof(sa6_src);
|
||||||
sa6_src.sin6_addr = ip6->ip6_dst;
|
sa6_src.sin6_addr = ip6->ip6_dst;
|
||||||
in6_recoverscope(&sa6_src, &ip6->ip6_dst, m->m_pkthdr.rcvif);
|
in6_recoverscope(&sa6_src, &ip6->ip6_dst, m->m_pkthdr.rcvif);
|
||||||
in6_embedscope(&ip6->ip6_dst, &sa6_src, NULL, NULL);
|
if (in6_embedscope(&ip6->ip6_dst, &sa6_src, NULL, NULL))
|
||||||
|
goto bad;
|
||||||
|
|
||||||
bzero(&sa6_dst, sizeof(sa6_dst));
|
bzero(&sa6_dst, sizeof(sa6_dst));
|
||||||
sa6_dst.sin6_family = AF_INET6;
|
sa6_dst.sin6_family = AF_INET6;
|
||||||
sa6_dst.sin6_len = sizeof(sa6_dst);
|
sa6_dst.sin6_len = sizeof(sa6_dst);
|
||||||
sa6_dst.sin6_addr = t;
|
sa6_dst.sin6_addr = t;
|
||||||
in6_recoverscope(&sa6_dst, &t, m->m_pkthdr.rcvif);
|
in6_recoverscope(&sa6_dst, &t, m->m_pkthdr.rcvif);
|
||||||
in6_embedscope(&t, &sa6_dst, NULL, NULL);
|
if (in6_embedscope(&t, &sa6_dst, NULL, NULL))
|
||||||
|
goto bad;
|
||||||
|
|
||||||
#ifdef COMPAT_RFC1885
|
#ifdef COMPAT_RFC1885
|
||||||
/*
|
/*
|
||||||
|
@ -667,7 +667,7 @@ in6_selectroute(dstsock, opts, mopts, ro, retifp, retrt, clone)
|
|||||||
* (this may happen when we are sending a packet to one of
|
* (this may happen when we are sending a packet to one of
|
||||||
* our own addresses.)
|
* our own addresses.)
|
||||||
*/
|
*/
|
||||||
if (opts && opts->ip6po_pktinfo &&
|
if (ifp && opts && opts->ip6po_pktinfo &&
|
||||||
opts->ip6po_pktinfo->ipi6_ifindex) {
|
opts->ip6po_pktinfo->ipi6_ifindex) {
|
||||||
if (!(ifp->if_flags & IFF_LOOPBACK) &&
|
if (!(ifp->if_flags & IFF_LOOPBACK) &&
|
||||||
ifp->if_index !=
|
ifp->if_index !=
|
||||||
|
@ -769,7 +769,7 @@ ip6_fw_chk(struct ip6_hdr **pip6,
|
|||||||
* - The packet is not an ICMP packet, or is an ICMP query packet
|
* - The packet is not an ICMP packet, or is an ICMP query packet
|
||||||
* - The packet is not a multicast or broadcast packet
|
* - The packet is not a multicast or broadcast packet
|
||||||
*/
|
*/
|
||||||
if ((rule->fw_flg & IPV6_FW_F_COMMAND) == IPV6_FW_F_REJECT
|
if (rule && (rule->fw_flg & IPV6_FW_F_COMMAND) == IPV6_FW_F_REJECT
|
||||||
&& (nxt != IPPROTO_ICMPV6 || is_icmp6_query(ip6, off))
|
&& (nxt != IPPROTO_ICMPV6 || is_icmp6_query(ip6, off))
|
||||||
&& !((*m)->m_flags & (M_BCAST|M_MCAST))
|
&& !((*m)->m_flags & (M_BCAST|M_MCAST))
|
||||||
&& !IN6_IS_ADDR_MULTICAST(&ip6->ip6_dst)) {
|
&& !IN6_IS_ADDR_MULTICAST(&ip6->ip6_dst)) {
|
||||||
|
@ -2603,7 +2603,7 @@ ip6_copypktopts(src, canwait)
|
|||||||
if (src->ip6po_nexthop) {
|
if (src->ip6po_nexthop) {
|
||||||
dst->ip6po_nexthop = malloc(src->ip6po_nexthop->sa_len,
|
dst->ip6po_nexthop = malloc(src->ip6po_nexthop->sa_len,
|
||||||
M_IP6OPT, canwait);
|
M_IP6OPT, canwait);
|
||||||
if (dst->ip6po_nexthop == NULL && canwait == M_NOWAIT)
|
if (dst->ip6po_nexthop == NULL)
|
||||||
goto bad;
|
goto bad;
|
||||||
bcopy(src->ip6po_nexthop, dst->ip6po_nexthop,
|
bcopy(src->ip6po_nexthop, dst->ip6po_nexthop,
|
||||||
src->ip6po_nexthop->sa_len);
|
src->ip6po_nexthop->sa_len);
|
||||||
|
Loading…
Reference in New Issue
Block a user