From b943b993c7d76d26bf5dc361410368de96427847 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= Date: Mon, 30 Nov 2020 19:36:12 +0100 Subject: [PATCH] freebsd_network: Use user_memcpy() for ETHER_ADDMULTI/ETHER_REMMULTI Change-Id: Id0a7e50f9ae38bff42faf1d6c4a62f702347bda3 Reviewed-on: https://review.haiku-os.org/c/haiku/+/3446 Reviewed-by: waddlesplash --- src/libs/compat/freebsd_network/device_hooks.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/libs/compat/freebsd_network/device_hooks.c b/src/libs/compat/freebsd_network/device_hooks.c index 565f2db2b1..7a5331d5a3 100644 --- a/src/libs/compat/freebsd_network/device_hooks.c +++ b/src/libs/compat/freebsd_network/device_hooks.c @@ -244,10 +244,13 @@ compat_control(void *cookie, uint32 op, void *arg, size_t length) if ((ifp->if_flags & IFF_MULTICAST) == 0) return B_NOT_SUPPORTED; + if (length != ETHER_ADDR_LEN) + return B_BAD_VALUE; memset(&address, 0, sizeof(address)); address.sdl_family = AF_LINK; - memcpy(LLADDR(&address), arg, ETHER_ADDR_LEN); + if (user_memcpy(LLADDR(&address), arg, ETHER_ADDR_LEN) < B_OK) + return B_BAD_ADDRESS; if (op == ETHER_ADDMULTI) return if_addmulti(ifp, (struct sockaddr *)&address, NULL);