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:
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,