From: Aram Sargsyan Date: Wed, 22 Jul 2026 12:18:59 +0000 (+0000) Subject: Use memmove in isc_sockaddr_fromin/isc_sockaddr_fromin6 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=e75dc290a14a072f5038ccefe3a459127a3cc6af;p=thirdparty%2Fbind9.git Use memmove in isc_sockaddr_fromin/isc_sockaddr_fromin6 Use memmove instead of direct assignment from the source pointer because the source pointer is not guaranteed to be correctly aligned. --- diff --git a/lib/isc/sockaddr.c b/lib/isc/sockaddr.c index cd1d7eb74fb..03a0d89054d 100644 --- a/lib/isc/sockaddr.c +++ b/lib/isc/sockaddr.c @@ -260,7 +260,8 @@ isc_sockaddr_fromin(isc_sockaddr_t *sockaddr, const struct in_addr *ina, in_port_t port) { memset(sockaddr, 0, sizeof(*sockaddr)); sockaddr->type.sin.sin_family = AF_INET; - sockaddr->type.sin.sin_addr = *ina; + /* Use memmove to avoid possible misaligned access. */ + memmove(&sockaddr->type.sin.sin_addr, ina, sizeof(*ina)); sockaddr->type.sin.sin_port = htons(port); sockaddr->length = sizeof(sockaddr->type.sin); ISC_LINK_INIT(sockaddr, link); @@ -285,7 +286,8 @@ isc_sockaddr_fromin6(isc_sockaddr_t *sockaddr, const struct in6_addr *ina6, in_port_t port) { memset(sockaddr, 0, sizeof(*sockaddr)); sockaddr->type.sin6.sin6_family = AF_INET6; - sockaddr->type.sin6.sin6_addr = *ina6; + /* Use memmove to avoid possible misaligned access. */ + memmove(&sockaddr->type.sin6.sin6_addr, ina6, sizeof(*ina6)); sockaddr->type.sin6.sin6_port = htons(port); sockaddr->length = sizeof(sockaddr->type.sin6); ISC_LINK_INIT(sockaddr, link);