Module Name: src Committed By: maxv Date: Mon Feb 12 12:52:13 UTC 2018
Modified Files: src/sys/netinet6: icmp6.c ip6_input.c ip6_output.c Log Message: Replace bcopy -> memcpy when it is obvious that the areas don't overlap. Rearrange ip6_splithdr() for clarity. To generate a diff of this commit: cvs rdiff -u -r1.219 -r1.220 src/sys/netinet6/icmp6.c cvs rdiff -u -r1.190 -r1.191 src/sys/netinet6/ip6_input.c cvs rdiff -u -r1.200 -r1.201 src/sys/netinet6/ip6_output.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/netinet6/icmp6.c diff -u src/sys/netinet6/icmp6.c:1.219 src/sys/netinet6/icmp6.c:1.220 --- src/sys/netinet6/icmp6.c:1.219 Tue Jan 23 10:55:38 2018 +++ src/sys/netinet6/icmp6.c Mon Feb 12 12:52:12 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: icmp6.c,v 1.219 2018/01/23 10:55:38 maxv Exp $ */ +/* $NetBSD: icmp6.c,v 1.220 2018/02/12 12:52:12 maxv Exp $ */ /* $KAME: icmp6.c,v 1.217 2001/06/20 15:03:29 jinmei Exp $ */ /* @@ -62,7 +62,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: icmp6.c,v 1.219 2018/01/23 10:55:38 maxv Exp $"); +__KERNEL_RCSID(0, "$NetBSD: icmp6.c,v 1.220 2018/02/12 12:52:12 maxv Exp $"); #ifdef _KERNEL_OPT #include "opt_inet.h" @@ -1486,7 +1486,7 @@ ni6_input(struct mbuf *m, int off) nni6->ni_flags = htons(0x0000); /* raw bitmap */ /* supports NOOP, SUPTYPES, FQDN, and NODEADDR */ v = (u_int32_t)htonl(0x0000000f); - bcopy(&v, nni6 + 1, sizeof(u_int32_t)); + memcpy(nni6 + 1, &v, sizeof(u_int32_t)); break; } case NI_QTYPE_FQDN: @@ -1580,7 +1580,7 @@ ni6_nametodns(const char *name, int name if (old) { m->m_len = len; *mtod(m, char *) = namelen; - bcopy(name, mtod(m, char *) + 1, namelen); + memcpy(mtod(m, char *) + 1, name, namelen); return m; } else { m->m_len = 0; @@ -1927,7 +1927,7 @@ again: ltime = 0x7fffffff; ltime = htonl(ltime); - bcopy(<ime, cp, sizeof(u_int32_t)); + memcpy(cp, <ime, sizeof(u_int32_t)); cp += sizeof(u_int32_t); /* copy the address itself */ @@ -2109,7 +2109,7 @@ icmp6_reflect(struct mbuf *m, size_t off if ((m = m_pullup(m, l)) == NULL) return; } - bcopy((void *)&nip6, mtod(m, void *), sizeof(nip6)); + memcpy(mtod(m, void *), (void *)&nip6, sizeof(nip6)); } else { size_t l = sizeof(struct ip6_hdr) + sizeof(struct icmp6_hdr); if (m->m_len < l) { Index: src/sys/netinet6/ip6_input.c diff -u src/sys/netinet6/ip6_input.c:1.190 src/sys/netinet6/ip6_input.c:1.191 --- src/sys/netinet6/ip6_input.c:1.190 Fri Feb 9 18:31:52 2018 +++ src/sys/netinet6/ip6_input.c Mon Feb 12 12:52:12 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: ip6_input.c,v 1.190 2018/02/09 18:31:52 maxv Exp $ */ +/* $NetBSD: ip6_input.c,v 1.191 2018/02/12 12:52:12 maxv Exp $ */ /* $KAME: ip6_input.c,v 1.188 2001/03/29 05:34:31 itojun Exp $ */ /* @@ -62,7 +62,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ip6_input.c,v 1.190 2018/02/09 18:31:52 maxv Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ip6_input.c,v 1.191 2018/02/12 12:52:12 maxv Exp $"); #ifdef _KERNEL_OPT #include "opt_gateway.h" @@ -960,7 +960,7 @@ ip6_process_hopopts(struct mbuf *m, u_in /* * We may see jumbolen in unaligned location, so - * we'd need to perform bcopy(). + * we'd need to perform memcpy(). */ memcpy(&jumboplen, opt + 2, sizeof(jumboplen)); jumboplen = (u_int32_t)htonl(jumboplen); Index: src/sys/netinet6/ip6_output.c diff -u src/sys/netinet6/ip6_output.c:1.200 src/sys/netinet6/ip6_output.c:1.201 --- src/sys/netinet6/ip6_output.c:1.200 Wed Jan 31 15:23:08 2018 +++ src/sys/netinet6/ip6_output.c Mon Feb 12 12:52:12 2018 @@ -1,4 +1,4 @@ -/* $NetBSD: ip6_output.c,v 1.200 2018/01/31 15:23:08 maxv Exp $ */ +/* $NetBSD: ip6_output.c,v 1.201 2018/02/12 12:52:12 maxv Exp $ */ /* $KAME: ip6_output.c,v 1.172 2001/03/25 09:55:56 itojun Exp $ */ /* @@ -62,7 +62,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ip6_output.c,v 1.200 2018/01/31 15:23:08 maxv Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ip6_output.c,v 1.201 2018/02/12 12:52:12 maxv Exp $"); #ifdef _KERNEL_OPT #include "opt_inet.h" @@ -1115,7 +1115,7 @@ ip6_copyexthdr(struct mbuf **mp, void *h } m->m_len = hlen; if (hdr) - bcopy(hdr, mtod(m, void *), hlen); + memcpy(mtod(m, void *), hdr, hlen); *mp = m; return 0; @@ -1236,7 +1236,7 @@ ip6_insert_jumboopt(struct ip6_exthdrs * optbuf[2] = IP6OPT_JUMBO; optbuf[3] = 4; v = (u_int32_t)htonl(plen + JUMBOOPTLEN); - bcopy(&v, &optbuf[4], sizeof(u_int32_t)); + memcpy(&optbuf[4], &v, sizeof(u_int32_t)); /* finally, adjust the packet header length */ exthdrs->ip6e_ip6->m_pkthdr.len += JUMBOOPTLEN; @@ -3328,7 +3328,7 @@ ip6_mloopback(struct ifnet *ifp, struct * Chop IPv6 header off from the payload. */ static int -ip6_splithdr(struct mbuf *m, struct ip6_exthdrs *exthdrs) +ip6_splithdr(struct mbuf *m, struct ip6_exthdrs *exthdrs) { struct mbuf *mh; struct ip6_hdr *ip6; @@ -3336,7 +3336,7 @@ ip6_splithdr(struct mbuf *m, struct ip6 ip6 = mtod(m, struct ip6_hdr *); if (m->m_len > sizeof(*ip6)) { MGETHDR(mh, M_DONTWAIT, MT_HEADER); - if (mh == 0) { + if (mh == NULL) { m_freem(m); return ENOBUFS; } @@ -3345,9 +3345,9 @@ ip6_splithdr(struct mbuf *m, struct ip6 m->m_len -= sizeof(*ip6); m->m_data += sizeof(*ip6); mh->m_next = m; + mh->m_len = sizeof(*ip6); + memcpy(mtod(mh, void *), (void *)ip6, sizeof(*ip6)); m = mh; - m->m_len = sizeof(*ip6); - bcopy((void *)ip6, mtod(m, void *), sizeof(*ip6)); } exthdrs->ip6e_ip6 = m; return 0;