--- a/sysdeps/unix/sysv/linux/convert_scm_timestamps.c +++ b/sysdeps/unix/sysv/linux/convert_scm_timestamps.c @@ -49,6 +49,7 @@ struct cmsghdr *cmsg, *last = NULL; int type = 0; + char *end = 0; for (cmsg = CMSG_FIRSTHDR (msg); cmsg != NULL; @@ -96,5 +97,9 @@ cmsg->cmsg_type = type; cmsg->cmsg_len = CMSG_LEN (sizeof tvts); memcpy (CMSG_DATA (cmsg), tvts, sizeof tvts); + cmsg = CMSG_NXTHDR(msg, cmsg); + if (cmsg == NULL) + return; + msg->msg_controllen = (((char*)cmsg) - ((char*)(msg->msg_control)); } #endif