There is a missing check between kmsg->msg_controllen and cmlen, which can possibly lead to overflow.
This bug is similar to vulnerability that was fixed in commit 6900317f5eff ("net, scm: fix PaX detected msg_controllen overflow in scm_detach_fds"). Signed-off-by: Young Xiao <92siuy...@gmail.com> --- net/compat.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/net/compat.c b/net/compat.c index a031bd3..8e74dfb 100644 --- a/net/compat.c +++ b/net/compat.c @@ -301,6 +301,8 @@ void scm_detach_fds_compat(struct msghdr *kmsg, struct scm_cookie *scm) err = put_user(cmlen, &cm->cmsg_len); if (!err) { cmlen = CMSG_COMPAT_SPACE(i * sizeof(int)); + if (kmsg->msg_controllen < cmlen) + cmlen = kmsg->msg_controllen; kmsg->msg_control += cmlen; kmsg->msg_controllen -= cmlen; } -- 2.7.4