In the Linux kernel, the following vulnerability has been resolved: af_unix: Fix data races in unix_release_sock/unix_stream_sendmsg The Linux kernel CVE team has assigned CVE-2024-38596 to this issue. Upstream
在进入到协议栈 inet_sendmsg 以后,内核接着会找到 socket 上的具体协议发送函数。对于 Unix Domain Socket 来说,那就是 unix_stream_sendmsg。我们来看一下这个函数 //file: staticintunix_stream_sendmsg(struct kiocb *kiocb, struct socket *sock, struct msghdr *msg,size_tlen) { // 1.申请一块缓存区 ...
对于 Unix Domain Socket 来说,那就是 unix_stream_sendmsg。 我们来看一下这个函数 //file: static int unix_stream_sendmsg(struct kiocb *kiocb, struct socket *sock, struct msghdr *msg, size_t len) { // 1.申请一块缓存区 skb = sock_alloc_send_skb(sk, size, msg->msg_flags&MSG_DONTWAIT,...
sockdump 通过 hook unix_stream_sendmsg 和 unix_dgram_sendmsg,抓取 Unix Socket 的报文。这两个 hook 的实现非常类似,都是先匹配 --sock 参数,然后抓取报文。 这2 个函数的函数原型如下: // ${KERNEL}/net/unix/af_unix.c staticintunix_stream_sendmsg(struct socket *sock, struct msghdr *msg,size_t...
sendmsg函数用来给一个特性的套接字描述符发送消息。 recvmsg 函数用来从一个特定的套接字中读取消息。 函数原型如下: ssize_t sendmsg(int sockfd, const struct msghdr *msg, int flags); ssize_t recvmsg(int sockfd, struct msghdr *msg, int flags); ...
在前面我们介绍了UNIX域套接字编程,更重要的一点是UNIX域套接字可以在同一台主机上各进程之间传递文件描述符。 下面先来看两个函数:#include #include ssize_t sendmsg(int sockfd, const struct msghdr *ms...
type:套接字类型比如 SOCK_STREAM、 SOCK_DGRAMprotol:只能为0sv: 包含两个元素的数组名函数执行完成之后会得到sv[0]和sv[1]两个套接字描述符。在不同的进程之间进行通信时可以使用如下的方法: 每个进程关闭一个描述符,然后使用一个描述符通信。那么有了管道后,如何传递文件描述符呢?那就得需要使用sendmsg、...
在前面我们介绍了UNIX域套接字编程,更重要的一点是UNIX域套接字可以在同一台主机上各进程之间传递文件描述符。 下面先来看两个函数: #include <sys/types.h> #include <sys/socket.h> ssize_t sendmsg(int sockfd, const struct msghdr *msg, int flags); ...
对于TCP/IP协议这不是问题,因为TCP/IP几乎不需要从内核向进程传回标志,但随着OSI协议被加到4.3 BSD Reno中,提出了随输入操作向进程传回MSG_EOR标志的需求,4.3 BSD Reno决定保持其他常用输入函数(recv、recvfrom函数)的参数不变,而改变recvmsg和sendmsg函数所用的msghdr结构,该结构新增了一个msg_flags成员,由于该...
问Unix域套接字错误,sendmsg:没有可用的缓冲区空间EN我有一个非常简单的代码片段,尝试了解unix域套接...