aboutsummaryrefslogtreecommitdiff
path: root/sys/netinet/in.c
diff options
context:
space:
mode:
authorShivank Garg <shivank@freebsd.org>2023-07-25 20:27:06 +0000
committerBjoern A. Zeeb <bz@FreeBSD.org>2023-07-26 00:07:57 +0000
commit215bab7924f6c8e133a96431b3e2176d5fae1eff (patch)
tree78c32ee058e2181259105895e111211a534bd038 /sys/netinet/in.c
parenta1b67573130114257fdd443c4ec9b54fbe2e5843 (diff)
Diffstat (limited to 'sys/netinet/in.c')
-rw-r--r--sys/netinet/in.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/sys/netinet/in.c b/sys/netinet/in.c
index fa0d311bb563..76fd0c7a8281 100644
--- a/sys/netinet/in.c
+++ b/sys/netinet/in.c
@@ -77,6 +77,10 @@ __FBSDID("$FreeBSD$");
#include <netinet/udp.h>
#include <netinet/udp_var.h>
+#ifdef MAC
+#include <security/mac/mac_framework.h>
+#endif
+
static int in_aifaddr_ioctl(u_long, caddr_t, struct ifnet *, struct ucred *);
static int in_difaddr_ioctl(u_long, caddr_t, struct ifnet *, struct ucred *);
static int in_gifaddr_ioctl(u_long, caddr_t, struct ifnet *, struct ucred *);
@@ -487,6 +491,13 @@ in_aifaddr_ioctl(u_long cmd, caddr_t data, struct ifnet *ifp, struct ucred *cred
if (vhid != 0 && carp_attach_p == NULL)
return (EPROTONOSUPPORT);
+#ifdef MAC
+ /* Check if a MAC policy disallows setting the IPv4 address. */
+ error = mac_inet_check_add_addr(cred, &addr->sin_addr, ifp);
+ if (error != 0)
+ return (error);
+#endif
+
/*
* See whether address already exist.
*/