Hello -
Two bcopy->memmove conversions where src and dst are in the same memory
space. Perhaps not overlapping, but just being safe.
Convert the bcopy's in tcp_respond to memcpy since the destination is a
new mbuf header.
OK?
Index: netinet/ip_ah.c
===================================================================
RCS file: /cvs/src/sys/netinet/ip_ah.c,v
retrieving revision 1.138
diff -u -p -r1.138 ip_ah.c
--- netinet/ip_ah.c 14 Mar 2018 22:38:46 -0000 1.138
+++ netinet/ip_ah.c 9 Apr 2018 17:48:20 -0000
@@ -899,8 +899,8 @@ ah_input_cb(struct cryptop *crp)
* mbuf...do an overlapping copy of the
* remainder of the mbuf over the ESP header.
*/
- bcopy(mtod(m1, u_char *) + roff + rplen +
- ahx->authsize, mtod(m1, u_char *) + roff,
+ memmove(mtod(m1, u_char *) + roff,
+ mtod(m1, u_char *) + roff + rplen + ahx->authsize,
m1->m_len - (roff + rplen + ahx->authsize));
m1->m_len -= rplen + ahx->authsize;
m->m_pkthdr.len -= rplen + ahx->authsize;
Index: netinet/tcp_subr.c
===================================================================
RCS file: /cvs/src/sys/netinet/tcp_subr.c,v
retrieving revision 1.170
diff -u -p -r1.170 tcp_subr.c
--- netinet/tcp_subr.c 2 Apr 2018 14:19:17 -0000 1.170
+++ netinet/tcp_subr.c 9 Apr 2018 17:48:20 -0000
@@ -328,11 +328,11 @@ tcp_respond(struct tcpcb *tp, caddr_t te
th = (struct tcphdr *)(ip6 + 1);
tlen = sizeof(*ip6) + sizeof(*th);
if (th0) {
- bcopy(template, ip6, sizeof(*ip6));
- bcopy(th0, th, sizeof(*th));
+ memcpy(ip6, template, sizeof(*ip6));
+ memcpy(th, th0, sizeof(*th));
xchg(ip6->ip6_dst, ip6->ip6_src, struct in6_addr);
} else {
- bcopy(template, ip6, tlen);
+ memcpy(ip6, template, tlen);
}
break;
#endif /* INET6 */
@@ -341,11 +341,11 @@ tcp_respond(struct tcpcb *tp, caddr_t te
th = (struct tcphdr *)(ip + 1);
tlen = sizeof(*ip) + sizeof(*th);
if (th0) {
- bcopy(template, ip, sizeof(*ip));
- bcopy(th0, th, sizeof(*th));
+ memcpy(ip, template, sizeof(*ip));
+ memcpy(th, th0, sizeof(*th));
xchg(ip->ip_dst.s_addr, ip->ip_src.s_addr, u_int32_t);
} else {
- bcopy(template, ip, tlen);
+ memcpy(ip, template, tlen);
}
break;
}
Index: netinet/udp_usrreq.c
===================================================================
RCS file: /cvs/src/sys/netinet/udp_usrreq.c,v
retrieving revision 1.246
diff -u -p -r1.246 udp_usrreq.c
--- netinet/udp_usrreq.c 6 Apr 2018 10:59:11 -0000 1.246
+++ netinet/udp_usrreq.c 9 Apr 2018 17:48:20 -0000
@@ -295,8 +295,8 @@ udp_input(struct mbuf **mp, int *offp, i
}
/* remove the UDP header */
- bcopy(mtod(m, u_char *),
- mtod(m, u_char *) + sizeof(struct udphdr), iphlen);
+ memmove(mtod(m, u_char *) + sizeof(struct udphdr),
+ mtod(m, u_char *), iphlen);
m_adj(m, sizeof(struct udphdr));
skip -= sizeof(struct udphdr);