瀏覽代碼

scm: Only support SCM_RIGHTS on unix domain sockets.

We use scm_send and scm_recv on both unix domain and
netlink sockets, but only unix domain sockets support
everything required for file descriptor passing,
so error if someone attempts to pass file descriptors
over netlink sockets.

Cc: stable@kernel.org
Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Eric W. Biederman 15 年之前
父節點
當前提交
76dadd76c2
共有 1 個文件被更改,包括 2 次插入0 次删除
  1. 2 0
      net/core/scm.c

+ 2 - 0
net/core/scm.c

@@ -156,6 +156,8 @@ int __scm_send(struct socket *sock, struct msghdr *msg, struct scm_cookie *p)
 		switch (cmsg->cmsg_type)
 		switch (cmsg->cmsg_type)
 		{
 		{
 		case SCM_RIGHTS:
 		case SCM_RIGHTS:
+			if (!sock->ops || sock->ops->family != PF_UNIX)
+				goto error;
 			err=scm_fp_copy(cmsg, &p->fp);
 			err=scm_fp_copy(cmsg, &p->fp);
 			if (err<0)
 			if (err<0)
 				goto error;
 				goto error;