From 620512af09f33236b4ea04372816b761d48586d9 Mon Sep 17 00:00:00 2001 From: Herbert Xu Date: Tue, 7 Dec 2004 20:49:21 -0800 Subject: [NET]: Fix CMSG validation checks wrt. signedness. Noticed by Georgi Guninski. Signed-off-by: Herbert Xu Signed-off-by: David S. Miller --- include/linux/socket.h | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'include/linux/socket.h') diff --git a/include/linux/socket.h b/include/linux/socket.h index b3aef7bf1380..4c7d11301abf 100644 --- a/include/linux/socket.h +++ b/include/linux/socket.h @@ -90,6 +90,10 @@ struct cmsghdr { (struct cmsghdr *)(ctl) : \ (struct cmsghdr *)NULL) #define CMSG_FIRSTHDR(msg) __CMSG_FIRSTHDR((msg)->msg_control, (msg)->msg_controllen) +#define CMSG_OK(mhdr, cmsg) ((cmsg)->cmsg_len >= sizeof(struct cmsghdr) && \ + (cmsg)->cmsg_len <= (unsigned long) \ + ((mhdr)->msg_controllen - \ + ((char *)(cmsg) - (char *)(mhdr)->msg_control))) /* * This mess will go away with glibc -- cgit v1.2.3