1
0
Fork 0
mirror of https://github.com/warmcat/libwebsockets.git synced 2025-03-30 00:00:16 +01:00

client: confirm sin_zero actual size for platform

in some platform, the size of sa46.sa4.sin_zero is not 8, but 6, so use 8 will cause coredump.
This commit is contained in:
fanc 2019-02-15 16:42:17 +08:00 committed by Andy Green
parent 2d086db6e8
commit 32cb5e1466

View file

@ -279,7 +279,7 @@ create_new_conn:
lwsl_info("%s: %p: address %s:%u\n", __func__, wsi, ads, port); lwsl_info("%s: %p: address %s:%u\n", __func__, wsi, ads, port);
n = lws_getaddrinfo46(wsi, ads, &result); n = lws_getaddrinfo46(wsi, ads, &result);
memset(&sa46, 0, sizeof(sa46));
#ifdef LWS_WITH_IPV6 #ifdef LWS_WITH_IPV6
if (wsi->ipv6) { if (wsi->ipv6) {
struct sockaddr_in6 *sa6; struct sockaddr_in6 *sa6;
@ -293,9 +293,6 @@ create_new_conn:
} }
sa6 = ((struct sockaddr_in6 *)result->ai_addr); sa6 = ((struct sockaddr_in6 *)result->ai_addr);
memset(&sa46, 0, sizeof(sa46));
sa46.sa6.sin6_family = AF_INET6; sa46.sa6.sin6_family = AF_INET6;
switch (result->ai_family) { switch (result->ai_family) {
case AF_INET: case AF_INET:
@ -375,7 +372,7 @@ create_new_conn:
sa46.sa4.sin_family = AF_INET; sa46.sa4.sin_family = AF_INET;
sa46.sa4.sin_addr = *((struct in_addr *)p); sa46.sa4.sin_addr = *((struct in_addr *)p);
bzero(&sa46.sa4.sin_zero, 8); bzero(&sa46.sa4.sin_zero, sizeof(sa46.sa4.sin_zero));
} }
if (result) if (result)