diff options
author | Ian Moffett <ian@osmora.org> | 2025-07-29 03:56:04 -0400 |
---|---|---|
committer | Ian Moffett <ian@osmora.org> | 2025-07-29 03:56:04 -0400 |
commit | d2bbcbfc4b01777b9aada434d42c341eddf29a2d (patch) | |
tree | 8c8d0154ef05c3b73c16232b8bd4e5af176729ad /sys/kern/kern_socket.c | |
parent | 81e14b45173bbb0dae73a4dbaaec2d6a300abd8e (diff) |
Ensure that the file descriptor represented by 'socket' is of type
AF_UNIX before performing the rest of recvmsg()
Signed-off-by: Ian Moffett <ian@osmora.org>
Diffstat (limited to 'sys/kern/kern_socket.c')
-rw-r--r-- | sys/kern/kern_socket.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/sys/kern/kern_socket.c b/sys/kern/kern_socket.c index 9b98ccc..8be5031 100644 --- a/sys/kern/kern_socket.c +++ b/sys/kern/kern_socket.c @@ -403,6 +403,7 @@ ssize_t recvmsg(int socket, struct msghdr *msg, int flags) { struct ksocket *ksock; + struct sockaddr_un *un; struct cmsg *cmsg, *tmp; struct cmsghdr *cmsghdr; struct cmsg_list *clp; @@ -418,6 +419,12 @@ recvmsg(int socket, struct msghdr *msg, int flags) return error; } + /* Must be a unix domain socket */ + un = &ksock->un; + if (un->sun_family != AF_UNIX) { + return -EBADF; + } + /* Grab the control message list */ clp = &ksock->cmsg_list; cmsg = TAILQ_FIRST(&clp->list); |