aboutsummaryrefslogtreecommitdiff
path: root/sys/netinet/ip_carp.c
diff options
context:
space:
mode:
authorBjoern A. Zeeb <bz@FreeBSD.org>2019-11-15 21:44:17 +0000
committerBjoern A. Zeeb <bz@FreeBSD.org>2019-11-15 21:44:17 +0000
commit63abacc204f75d91d2a15b07a6d803a69a772697 (patch)
tree24cd0e67c14d1dfffbc2bd4b620685c030032cc5 /sys/netinet/ip_carp.c
parenta61b5cfbbfd54c51c9ba6cc9aa19907911fb3aa9 (diff)
Notes
Diffstat (limited to 'sys/netinet/ip_carp.c')
-rw-r--r--sys/netinet/ip_carp.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/sys/netinet/ip_carp.c b/sys/netinet/ip_carp.c
index ceccd5a02f3a..d783c93a2abf 100644
--- a/sys/netinet/ip_carp.c
+++ b/sys/netinet/ip_carp.c
@@ -567,12 +567,13 @@ carp6_input(struct mbuf **mp, int *offp, int proto)
/* verify that we have a complete carp packet */
len = m->m_len;
- IP6_EXTHDR_GET(ch, struct carp_header *, m, *offp, sizeof(*ch));
- if (ch == NULL) {
+ m = m_pullup(m, *offp + sizeof(*ch));
+ if (m == NULL) {
CARPSTATS_INC(carps_badlen);
CARP_DEBUG("%s: packet size %u too small\n", __func__, len);
return (IPPROTO_DONE);
}
+ ch = (struct carp_header *)(mtod(m, caddr_t) + *offp);
/* verify the CARP checksum */