From d9882395e2ceb0274e15a3ba80df900d1e527c0d Mon Sep 17 00:00:00 2001 From: Peter Griess Date: Tue, 4 May 2010 11:26:23 -0500 Subject: [PATCH] Fix SEGV by setting msg_controllen earlier. - Some implementations of CMSG_FIRSTHDR() rely on msg_controllen being set correctly, else it returns NULL: see . --- src/node_net2.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/node_net2.cc b/src/node_net2.cc index 2958e03234..865bf7c506 100644 --- a/src/node_net2.cc +++ b/src/node_net2.cc @@ -671,12 +671,12 @@ static Handle SendFD(const Arguments& args) { msg.msg_namelen = 0; msg.msg_flags = 0; msg.msg_control = (void *) control_msg; + msg.msg_controllen = CMSG_LEN(sizeof(fd_to_send)); cmsg = CMSG_FIRSTHDR(&msg); cmsg->cmsg_level = SOL_SOCKET; cmsg->cmsg_type = SCM_RIGHTS; - cmsg->cmsg_len = CMSG_LEN(sizeof(fd_to_send)); + cmsg->cmsg_len = msg.msg_controllen; *(int*) CMSG_DATA(cmsg) = fd_to_send; - msg.msg_controllen = cmsg->cmsg_len; ssize_t written = sendmsg(fd, &msg, 0);