libmicrohttpd

HTTP/1.x server C library (MHD 1.x, stable)
Log | Files | Refs | Submodules | README | LICENSE

commit 03953a6960165607def5415bd4cfc72f76239fff
parent 0e4fc12c5aa299ba89a917c2f6962d2a7e580255
Author: Evgeny Grin (Karlson2k) <k2k@narod.ru>
Date:   Mon, 31 Jan 2022 15:48:30 +0300

MHD_ip_addr_to_key(): identify type of address by 'sa_family' instead of size

Potentially size of some address family may match size of know address family.

Diffstat:
Msrc/microhttpd/daemon.c | 6++++--
1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/microhttpd/daemon.c b/src/microhttpd/daemon.c @@ -330,9 +330,10 @@ MHD_ip_addr_to_key (const struct sockaddr *addr, sizeof(*key)); /* IPv4 addresses */ - if (sizeof (struct sockaddr_in) == addrlen) + if (AF_INET == addr->sa_family) { const struct sockaddr_in *addr4 = (const struct sockaddr_in *) addr; + mhd_assert (sizeof (struct sockaddr_in) <= addrlen); key->family = AF_INET; memcpy (&key->addr.ipv4, @@ -343,9 +344,10 @@ MHD_ip_addr_to_key (const struct sockaddr *addr, #if HAVE_INET6 /* IPv6 addresses */ - if (sizeof (struct sockaddr_in6) == addrlen) + if (AF_INET6 == addr->sa_family) { const struct sockaddr_in6 *addr6 = (const struct sockaddr_in6 *) addr; + mhd_assert (sizeof (struct sockaddr_in6) <= addrlen); key->family = AF_INET6; memcpy (&key->addr.ipv6,