Lines 2483-2488
Link Here
|
2483 |
(struct cmsghdr32 *)(ctl) : \ |
2483 |
(struct cmsghdr32 *)(ctl) : \ |
2484 |
(struct cmsghdr32 *)NULL) |
2484 |
(struct cmsghdr32 *)NULL) |
2485 |
#define CMSG32_FIRSTHDR(msg) __CMSG32_FIRSTHDR((msg)->msg_control, (msg)->msg_controllen) |
2485 |
#define CMSG32_FIRSTHDR(msg) __CMSG32_FIRSTHDR((msg)->msg_control, (msg)->msg_controllen) |
|
|
2486 |
#define CMSG32_OK(ucmlen, ucmsg, mhdr) \ |
2487 |
((ucmlen) >= sizeof(struct cmsghdr) && \ |
2488 |
(ucmlen) <= (unsigned long) \ |
2489 |
((mhdr)->msg_controllen - \ |
2490 |
((char *)(ucmsg) - (char *)(mhdr)->msg_control))) |
2491 |
|
2486 |
|
2492 |
|
2487 |
__inline__ struct cmsghdr32 *__cmsg32_nxthdr(void *__ctl, __kernel_size_t __size, |
2493 |
__inline__ struct cmsghdr32 *__cmsg32_nxthdr(void *__ctl, __kernel_size_t __size, |
2488 |
struct cmsghdr32 *__cmsg, int __cmsg_len) |
2494 |
struct cmsghdr32 *__cmsg, int __cmsg_len) |
Lines 2623-2633
Link Here
|
2623 |
return -EFAULT; |
2629 |
return -EFAULT; |
2624 |
|
2630 |
|
2625 |
/* Catch bogons. */ |
2631 |
/* Catch bogons. */ |
2626 |
if(CMSG32_ALIGN(ucmlen) < |
2632 |
if (!CMSG32_OK(ucmlen, ucmsg, kmsg)) |
2627 |
CMSG32_ALIGN(sizeof(struct cmsghdr32))) |
|
|
2628 |
return -ENOBUFS; |
2629 |
if((unsigned long)(((char *)ucmsg - (char *)kmsg->msg_control) |
2630 |
+ ucmlen) > kmsg->msg_controllen) |
2631 |
return -EINVAL; |
2633 |
return -EINVAL; |
2632 |
|
2634 |
|
2633 |
tmp = ((ucmlen - CMSG32_ALIGN(sizeof(*ucmsg))) + |
2635 |
tmp = ((ucmlen - CMSG32_ALIGN(sizeof(*ucmsg))) + |