From 1100decf3fc95c05456bc7813419aaf50bc6d00a Mon Sep 17 00:00:00 2001 From: Mark Andrews Date: Wed, 30 Mar 2005 05:42:53 +0000 Subject: [PATCH] 1842. [port] cmsg_len() could produce incorrect results on some platform. [RT #13744] --- CHANGES | 3 +++ lib/isc/unix/socket.c | 8 ++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/CHANGES b/CHANGES index eb87860ab8..14f877a167 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,6 @@ +1842. [port] cmsg_len() could produce incorrect results on + some platform. [RT #13744] + 1840. [func] dnssec-signzone can now randomize signature end times (dnssec-signzone -j jitter). [RT #13609] diff --git a/lib/isc/unix/socket.c b/lib/isc/unix/socket.c index 560115abdf..566cd9ebbf 100644 --- a/lib/isc/unix/socket.c +++ b/lib/isc/unix/socket.c @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: socket.c,v 1.237.18.10 2005/03/16 23:51:28 marka Exp $ */ +/* $Id: socket.c,v 1.237.18.11 2005/03/30 05:42:53 marka Exp $ */ #include @@ -465,7 +465,11 @@ cmsg_len(ISC_SOCKADDR_LEN_T len) { #else ISC_SOCKADDR_LEN_T hdrlen; - hdrlen = (ISC_SOCKADDR_LEN_T)CMSG_DATA(NULL); /* XXX */ + /* + * Cast NULL so that any pointer arithmetic performed by CMSG_DATA + * is correct. + */ + hdrlen = (ISC_SOCKADDR_LEN_T)CMSG_DATA(((struct cmsghdr *)NULL)); return (hdrlen + len); #endif }