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 }