From bdebdf31d76e65ee7a45ffaea219510fc7b9a3a7 Mon Sep 17 00:00:00 2001 From: Karl Ramm Date: Fri, 18 Dec 2009 15:33:18 +0000 Subject: roleplay accordingly with sin_len and sin6_len values on BSD systems --- lib/ZParseNot.c | 9 +++++++++ lib/Zinternal.c | 9 +++++++++ 2 files changed, 18 insertions(+) (limited to 'lib') diff --git a/lib/ZParseNot.c b/lib/ZParseNot.c index e98bad6..d610049 100644 --- a/lib/ZParseNot.c +++ b/lib/ZParseNot.c @@ -262,9 +262,15 @@ ZParseNotice(char *buffer, if (len == sizeof(notice->z_sender_sockaddr.ip6.sin6_addr)) { notice->z_sender_sockaddr.ip6.sin6_family = AF_INET6; memcpy(¬ice->z_sender_sockaddr.ip6.sin6_addr, addrbuf, len); +#ifdef HAVE_SOCKADDR_IN6_SIN6_LEN + notice->z_sender_sockaddr.ip6.sin6_len = sizeof(notice->z_sender_sockaddr.ip6); +#endif } else if (len == sizeof(notice->z_sender_sockaddr.ip4.sin_addr)) { notice->z_sender_sockaddr.ip4.sin_family = AF_INET; memcpy(¬ice->z_sender_sockaddr.ip4.sin_addr, addrbuf, len); +#ifdef HAVE_SOCKADDR_IN_SIN_LEN + notice->z_sender_sockaddr.ip4.sin_len = sizeof(notice->z_sender_sockaddr.ip4); +#endif } else BAD_PACKET("address claims to be neither IPv4 or IPv6"); @@ -275,6 +281,9 @@ ZParseNotice(char *buffer, sizeof notice->z_sender_sockaddr); notice->z_sender_sockaddr.ip4.sin_family = AF_INET; notice->z_sender_sockaddr.ip4.sin_addr = notice->z_uid.zuid_addr; +#ifdef HAVE_SOCKADDR_IN_SIN_LEN + notice->z_sender_sockaddr.ip4.sin_len = sizeof(notice->z_sender_sockaddr.ip4); +#endif } if (numfields && ptr < end) { diff --git a/lib/Zinternal.c b/lib/Zinternal.c index d121026..7c9bb4a 100644 --- a/lib/Zinternal.c +++ b/lib/Zinternal.c @@ -688,6 +688,9 @@ Z_FormatHeader(ZNotice_t *notice, notice->z_sender_sockaddr.ip4.sin_family = AF_INET; /*XXX*/ notice->z_sender_sockaddr.ip4.sin_port = notice->z_port; (void) memcpy(¬ice->z_sender_sockaddr.ip4.sin_addr, &__My_addr, sizeof(__My_addr)); +#ifdef HAVE_SOCKADDR_IN_SIN_LEN + notice->z_sender_sockaddr.ip4.sin_len = sizeof(notice->z_sender_sockaddr.ip4); +#endif } notice->z_multiuid = notice->z_uid; @@ -740,6 +743,9 @@ Z_NewFormatHeader(ZNotice_t *notice, notice->z_sender_sockaddr.ip4.sin_family = AF_INET; /*XXX*/ notice->z_sender_sockaddr.ip4.sin_port = notice->z_port; (void) memcpy(¬ice->z_sender_sockaddr.ip4.sin_addr, &__My_addr, sizeof(__My_addr)); +#ifdef HAVE_SOCKADDR_IN_SIN_LEN + notice->z_sender_sockaddr.ip4.sin_len = sizeof(notice->z_sender_sockaddr.ip4); +#endif notice->z_multiuid = notice->z_uid; @@ -1251,6 +1257,9 @@ Z_SendFragmentedNotice(ZNotice_t *notice, notice->z_sender_sockaddr.ip4.sin_family = AF_INET; /*XXX*/ notice->z_sender_sockaddr.ip4.sin_port = notice->z_port; (void) memcpy(¬ice->z_sender_sockaddr.ip4.sin_addr, &__My_addr, sizeof(__My_addr)); +#ifdef HAVE_SOCKADDR_IN_SIN_LEN + notice->z_sender_sockaddr.ip4.sin_len = sizeof(notice->z_sender_sockaddr.ip4); +#endif } message_len = min(notice->z_message_len-offset, fragsize); partnotice.z_message = notice->z_message+offset; -- cgit v1.2.3