In article <20110530162059.1a6d217...@cvs.netbsd.org>,
Joerg Sonnenberger <source-changes-d@NetBSD.org> wrote:
>-=-=-=-=-=-
>

>+#ifdef __clang__
>+              char            buf[128];
>+#else
>               char            buf[CMSG_SPACE(sizeof(int))];
>+#endif
>       } cmsgbuf;

Wouldn't it be better insted to re-define CMSG_SPACE for clang like:
#ifdef __clang__
#define CMSG_SPACE(x) ((x) + 128)
#else
...
#endif

This is bad too, what if sizeof(buf) < CMSG_SPACE(sizeof(int)):

>       if (buf != NULL && buf->fd != -1) {
>               msg.msg_control = (caddr_t)&cmsgbuf.buf;
>-              msg.msg_controllen = sizeof(cmsgbuf.buf);
>+              msg.msg_controllen = CMSG_SPACE(sizeof(int));
>               cmsg = CMSG_FIRSTHDR(&msg);
>               cmsg->cmsg_len = CMSG_LEN(sizeof(int));
>               cmsg->cmsg_level = SOL_SOCKET;

Reply via email to