Merge pull request #14464 from yashykt/socklent

Change size_t to socklen_t in resolve_address
pull/14750/head
Yash Tibrewal 7 years ago committed by GitHub
commit bce37d2785
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 4
      src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc
  2. 2
      src/core/ext/filters/client_channel/lb_policy_factory.cc
  3. 6
      src/core/ext/filters/client_channel/parse_address.cc
  4. 17
      src/core/lib/iomgr/resolve_address.h
  5. 9
      src/core/lib/iomgr/sockaddr_utils.cc
  6. 2
      src/core/lib/iomgr/socket_utils_linux.cc
  7. 2
      src/core/lib/iomgr/tcp_client_posix.cc
  8. 7
      src/core/lib/iomgr/tcp_server_posix.cc
  9. 6
      src/core/lib/iomgr/tcp_server_utils_posix_common.cc
  10. 12
      src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc
  11. 11
      src/core/lib/iomgr/udp_server.cc
  12. 3
      src/core/lib/iomgr/unix_sockets_posix.cc
  13. 2
      test/core/end2end/goaway_server_test.cc
  14. 4
      test/core/iomgr/sockaddr_utils_test.cc
  15. 6
      test/core/iomgr/tcp_client_posix_test.cc
  16. 14
      test/core/iomgr/tcp_server_posix_test.cc
  17. 8
      test/core/iomgr/udp_server_test.cc

@ -423,13 +423,13 @@ void ParseServer(const grpc_grpclb_server* server,
* server->ip_address.bytes. */
const grpc_grpclb_ip_address* ip = &server->ip_address;
if (ip->size == 4) {
addr->len = sizeof(grpc_sockaddr_in);
addr->len = static_cast<socklen_t>(sizeof(grpc_sockaddr_in));
grpc_sockaddr_in* addr4 = reinterpret_cast<grpc_sockaddr_in*>(&addr->addr);
addr4->sin_family = GRPC_AF_INET;
memcpy(&addr4->sin_addr, ip->bytes, ip->size);
addr4->sin_port = netorder_port;
} else if (ip->size == 16) {
addr->len = sizeof(grpc_sockaddr_in6);
addr->len = static_cast<socklen_t>(sizeof(grpc_sockaddr_in6));
grpc_sockaddr_in6* addr6 = (grpc_sockaddr_in6*)&addr->addr;
addr6->sin6_family = GRPC_AF_INET6;
memcpy(&addr6->sin6_addr, ip->bytes, ip->size);

@ -66,7 +66,7 @@ void grpc_lb_addresses_set_address(grpc_lb_addresses* addresses, size_t index,
if (user_data != nullptr) GPR_ASSERT(addresses->user_data_vtable != nullptr);
grpc_lb_address* target = &addresses->addresses[index];
memcpy(target->address.addr, address, address_len);
target->address.len = address_len;
target->address.len = static_cast<socklen_t>(address_len);
target->is_balancer = is_balancer;
target->balancer_name = gpr_strdup(balancer_name);
target->user_data = user_data;

@ -50,7 +50,7 @@ bool grpc_parse_unix(const grpc_uri* uri,
if (path_len == maxlen) return false;
un->sun_family = AF_UNIX;
strcpy(un->sun_path, uri->path);
resolved_addr->len = sizeof(*un);
resolved_addr->len = static_cast<socklen_t>(sizeof(*un));
return true;
}
@ -72,7 +72,7 @@ bool grpc_parse_ipv4_hostport(const char* hostport, grpc_resolved_address* addr,
if (!gpr_split_host_port(hostport, &host, &port)) return false;
// Parse IP address.
memset(addr, 0, sizeof(*addr));
addr->len = sizeof(grpc_sockaddr_in);
addr->len = static_cast<socklen_t>(sizeof(grpc_sockaddr_in));
grpc_sockaddr_in* in = reinterpret_cast<grpc_sockaddr_in*>(addr->addr);
in->sin_family = GRPC_AF_INET;
if (grpc_inet_pton(GRPC_AF_INET, host, &in->sin_addr) == 0) {
@ -118,7 +118,7 @@ bool grpc_parse_ipv6_hostport(const char* hostport, grpc_resolved_address* addr,
if (!gpr_split_host_port(hostport, &host, &port)) return false;
// Parse IP address.
memset(addr, 0, sizeof(*addr));
addr->len = sizeof(grpc_sockaddr_in6);
addr->len = static_cast<socklen_t>(sizeof(grpc_sockaddr_in6));
grpc_sockaddr_in6* in6 = reinterpret_cast<grpc_sockaddr_in6*>(addr->addr);
in6->sin6_family = GRPC_AF_INET6;
// Handle the RFC6874 syntax for IPv6 zone identifiers.

@ -22,13 +22,28 @@
#include <grpc/support/port_platform.h>
#include <stddef.h>
#include "src/core/lib/iomgr/port.h"
#ifdef GRPC_UV
#include <uv.h>
#endif
#ifdef GRPC_WINSOCK_SOCKET
#include <ws2tcpip.h>
#endif
#ifdef GRPC_POSIX_SOCKET
#include <sys/socket.h>
#endif
#include "src/core/lib/iomgr/pollset_set.h"
#define GRPC_MAX_SOCKADDR_SIZE 128
typedef struct {
char addr[GRPC_MAX_SOCKADDR_SIZE];
size_t len;
socklen_t len;
} grpc_resolved_address;
typedef struct {

@ -58,7 +58,8 @@ int grpc_sockaddr_is_v4mapped(const grpc_resolved_address* resolved_addr,
/* s6_addr32 would be nice, but it's non-standard. */
memcpy(&addr4_out->sin_addr, &addr6->sin6_addr.s6_addr[12], 4);
addr4_out->sin_port = addr6->sin6_port;
resolved_addr4_out->len = sizeof(grpc_sockaddr_in);
resolved_addr4_out->len =
static_cast<socklen_t>(sizeof(grpc_sockaddr_in));
}
return 1;
}
@ -81,7 +82,7 @@ int grpc_sockaddr_to_v4mapped(const grpc_resolved_address* resolved_addr,
memcpy(&addr6_out->sin6_addr.s6_addr[0], kV4MappedPrefix, 12);
memcpy(&addr6_out->sin6_addr.s6_addr[12], &addr4->sin_addr, 4);
addr6_out->sin6_port = addr4->sin_port;
resolved_addr6_out->len = sizeof(grpc_sockaddr_in6);
resolved_addr6_out->len = static_cast<socklen_t>(sizeof(grpc_sockaddr_in6));
return 1;
}
return 0;
@ -135,7 +136,7 @@ void grpc_sockaddr_make_wildcard4(int port,
memset(resolved_wild_out, 0, sizeof(*resolved_wild_out));
wild_out->sin_family = GRPC_AF_INET;
wild_out->sin_port = grpc_htons(static_cast<uint16_t>(port));
resolved_wild_out->len = sizeof(grpc_sockaddr_in);
resolved_wild_out->len = static_cast<socklen_t>(sizeof(grpc_sockaddr_in));
}
void grpc_sockaddr_make_wildcard6(int port,
@ -146,7 +147,7 @@ void grpc_sockaddr_make_wildcard6(int port,
memset(resolved_wild_out, 0, sizeof(*resolved_wild_out));
wild_out->sin6_family = GRPC_AF_INET6;
wild_out->sin6_port = grpc_htons(static_cast<uint16_t>(port));
resolved_wild_out->len = sizeof(grpc_sockaddr_in6);
resolved_wild_out->len = static_cast<socklen_t>(sizeof(grpc_sockaddr_in6));
}
int grpc_sockaddr_to_string(char** out,

@ -38,7 +38,7 @@ int grpc_accept4(int sockfd, grpc_resolved_address* resolved_addr, int nonblock,
flags |= nonblock ? SOCK_NONBLOCK : 0;
flags |= cloexec ? SOCK_CLOEXEC : 0;
return accept4(sockfd, reinterpret_cast<grpc_sockaddr*>(resolved_addr->addr),
reinterpret_cast<socklen_t*>(&resolved_addr->len), flags);
&resolved_addr->len, flags);
}
#endif

@ -295,7 +295,7 @@ void grpc_tcp_client_create_from_prepared_fd(
do {
GPR_ASSERT(addr->len < ~(socklen_t)0);
err = connect(fd, reinterpret_cast<const grpc_sockaddr*>(addr->addr),
static_cast<socklen_t>(addr->len));
addr->len);
} while (err < 0 && errno == EINTR);
if (err >= 0) {
char* addr_str = grpc_sockaddr_to_uri(addr);

@ -214,7 +214,7 @@ static void on_read(void* arg, grpc_error* err) {
char* addr_str;
char* name;
memset(&addr, 0, sizeof(addr));
addr.len = sizeof(struct sockaddr_storage);
addr.len = static_cast<socklen_t>(sizeof(struct sockaddr_storage));
/* Note: If we ever decide to return this address to the user, remember to
strip off the ::ffff:0.0.0.0/96 prefix first. */
int fd = grpc_accept4(sp->fd, &addr, 1, 1);
@ -413,11 +413,12 @@ static grpc_error* tcp_server_add_port(grpc_tcp_server* s,
as some previously created listener. */
if (requested_port == 0) {
for (sp = s->head; sp; sp = sp->next) {
sockname_temp.len = sizeof(struct sockaddr_storage);
sockname_temp.len =
static_cast<socklen_t>(sizeof(struct sockaddr_storage));
if (0 ==
getsockname(sp->fd,
reinterpret_cast<grpc_sockaddr*>(&sockname_temp.addr),
reinterpret_cast<socklen_t*>(&sockname_temp.len))) {
&sockname_temp.len)) {
int used_port = grpc_sockaddr_get_port(&sockname_temp);
if (used_port > 0) {
memcpy(&sockname_temp, addr, sizeof(grpc_resolved_address));

@ -172,7 +172,7 @@ grpc_error* grpc_tcp_server_prepare_socket(int fd,
GPR_ASSERT(addr->len < ~(socklen_t)0);
if (bind(fd, reinterpret_cast<grpc_sockaddr*>(const_cast<char*>(addr->addr)),
static_cast<socklen_t>(addr->len)) < 0) {
addr->len) < 0) {
err = GRPC_OS_ERROR(errno, "bind");
goto error;
}
@ -182,10 +182,10 @@ grpc_error* grpc_tcp_server_prepare_socket(int fd,
goto error;
}
sockname_temp.len = sizeof(struct sockaddr_storage);
sockname_temp.len = static_cast<socklen_t>(sizeof(struct sockaddr_storage));
if (getsockname(fd, reinterpret_cast<grpc_sockaddr*>(sockname_temp.addr),
reinterpret_cast<socklen_t*>(&sockname_temp.len)) < 0) {
&sockname_temp.len) < 0) {
err = GRPC_OS_ERROR(errno, "getsockname");
goto error;
}

@ -68,14 +68,14 @@ static grpc_error* get_unused_port(int* port) {
if (dsmode == GRPC_DSMODE_IPV4) {
grpc_sockaddr_make_wildcard4(0, &wild);
}
if (bind(fd, reinterpret_cast<const grpc_sockaddr*>(wild.addr),
static_cast<socklen_t>(wild.len)) != 0) {
if (bind(fd, reinterpret_cast<const grpc_sockaddr*>(wild.addr), wild.len) !=
0) {
err = GRPC_OS_ERROR(errno, "bind");
close(fd);
return err;
}
if (getsockname(fd, reinterpret_cast<grpc_sockaddr*>(wild.addr),
reinterpret_cast<socklen_t*>(&wild.len)) != 0) {
if (getsockname(fd, reinterpret_cast<grpc_sockaddr*>(wild.addr), &wild.len) !=
0) {
err = GRPC_OS_ERROR(errno, "getsockname");
close(fd);
return err;
@ -119,9 +119,9 @@ grpc_error* grpc_tcp_server_add_all_local_addrs(grpc_tcp_server* s,
if (ifa_it->ifa_addr == nullptr) {
continue;
} else if (ifa_it->ifa_addr->sa_family == AF_INET) {
addr.len = sizeof(grpc_sockaddr_in);
addr.len = static_cast<socklen_t>(sizeof(grpc_sockaddr_in));
} else if (ifa_it->ifa_addr->sa_family == AF_INET6) {
addr.len = sizeof(grpc_sockaddr_in6);
addr.len = static_cast<socklen_t>(sizeof(grpc_sockaddr_in6));
} else {
continue;
}

@ -347,7 +347,7 @@ static int bind_socket(grpc_socket_factory* socket_factory, int sockfd,
: bind(sockfd,
reinterpret_cast<grpc_sockaddr*>(
const_cast<char*>(addr->addr)),
static_cast<socklen_t>(addr->len));
addr->len);
}
/* Prepare a recently-created socket for listening. */
@ -390,10 +390,10 @@ static int prepare_socket(grpc_socket_factory* socket_factory, int fd,
goto error;
}
sockname_temp.len = sizeof(struct sockaddr_storage);
sockname_temp.len = static_cast<socklen_t>(sizeof(struct sockaddr_storage));
if (getsockname(fd, reinterpret_cast<grpc_sockaddr*>(sockname_temp.addr),
reinterpret_cast<socklen_t*>(&sockname_temp.len)) < 0) {
&sockname_temp.len) < 0) {
goto error;
}
@ -575,10 +575,11 @@ int grpc_udp_server_add_port(grpc_udp_server* s,
as some previously created listener. */
if (grpc_sockaddr_get_port(addr) == 0) {
for (size_t i = 0; i < s->listeners.size(); ++i) {
sockname_temp.len = sizeof(struct sockaddr_storage);
sockname_temp.len =
static_cast<socklen_t>(sizeof(struct sockaddr_storage));
if (0 == getsockname(s->listeners[i].fd(),
reinterpret_cast<grpc_sockaddr*>(sockname_temp.addr),
reinterpret_cast<socklen_t*>(&sockname_temp.len))) {
&sockname_temp.len)) {
port = grpc_sockaddr_get_port(&sockname_temp);
if (port > 0) {
allocated_addr = static_cast<grpc_resolved_address*>(

@ -61,7 +61,8 @@ grpc_error* grpc_resolve_unix_domain_address(const char* name,
un = reinterpret_cast<struct sockaddr_un*>((*addrs)->addrs->addr);
un->sun_family = AF_UNIX;
strncpy(un->sun_path, name, sizeof(un->sun_path));
(*addrs)->addrs->len = strlen(un->sun_path) + sizeof(un->sun_family) + 1;
(*addrs)->addrs->len =
static_cast<socklen_t>(strlen(un->sun_path) + sizeof(un->sun_family) + 1);
return GRPC_ERROR_NONE;
}

@ -82,7 +82,7 @@ static void my_resolve_address(const char* addr, const char* default_port,
sa->sin_family = GRPC_AF_INET;
sa->sin_addr.s_addr = 0x100007f;
sa->sin_port = grpc_htons(static_cast<uint16_t>(g_resolve_port));
(*addrs)->addrs[0].len = sizeof(*sa);
(*addrs)->addrs[0].len = static_cast<socklen_t>(sizeof(*sa));
gpr_mu_unlock(&g_mu);
}
GRPC_CLOSURE_SCHED(on_done, error);

@ -41,7 +41,7 @@ static grpc_resolved_address make_addr4(const uint8_t* data, size_t data_len) {
GPR_ASSERT(data_len == sizeof(addr4->sin_addr.s_addr));
memcpy(&addr4->sin_addr.s_addr, data, data_len);
addr4->sin_port = grpc_htons(12345);
resolved_addr4.len = sizeof(grpc_sockaddr_in);
resolved_addr4.len = static_cast<socklen_t>(sizeof(grpc_sockaddr_in));
return resolved_addr4;
}
@ -54,7 +54,7 @@ static grpc_resolved_address make_addr6(const uint8_t* data, size_t data_len) {
GPR_ASSERT(data_len == sizeof(addr6->sin6_addr.s6_addr));
memcpy(&addr6->sin6_addr.s6_addr, data, data_len);
addr6->sin6_port = grpc_htons(12345);
resolved_addr6.len = sizeof(grpc_sockaddr_in6);
resolved_addr6.len = static_cast<socklen_t>(sizeof(grpc_sockaddr_in6));
return resolved_addr6;
}

@ -89,7 +89,7 @@ void test_succeeds(void) {
gpr_log(GPR_DEBUG, "test_succeeds");
memset(&resolved_addr, 0, sizeof(resolved_addr));
resolved_addr.len = sizeof(struct sockaddr_in);
resolved_addr.len = static_cast<socklen_t>(sizeof(struct sockaddr_in));
addr->sin_family = AF_INET;
/* create a dummy server */
@ -112,7 +112,7 @@ void test_succeeds(void) {
/* await the connection */
do {
resolved_addr.len = sizeof(addr);
resolved_addr.len = static_cast<socklen_t>(sizeof(addr));
r = accept(svr_fd, reinterpret_cast<struct sockaddr*>(addr),
reinterpret_cast<socklen_t*>(&resolved_addr.len));
} while (r == -1 && errno == EINTR);
@ -147,7 +147,7 @@ void test_fails(void) {
gpr_log(GPR_DEBUG, "test_fails");
memset(&resolved_addr, 0, sizeof(resolved_addr));
resolved_addr.len = sizeof(struct sockaddr_in);
resolved_addr.len = static_cast<socklen_t>(sizeof(struct sockaddr_in));
addr->sin_family = AF_INET;
gpr_mu_lock(g_mu);

@ -188,7 +188,7 @@ static void test_no_op_with_port(void) {
LOG_TEST("test_no_op_with_port");
memset(&resolved_addr, 0, sizeof(resolved_addr));
resolved_addr.len = sizeof(struct sockaddr_in);
resolved_addr.len = static_cast<socklen_t>(sizeof(struct sockaddr_in));
addr->sin_family = AF_INET;
int port = -1;
GPR_ASSERT(grpc_tcp_server_add_port(s, &resolved_addr, &port) ==
@ -209,7 +209,7 @@ static void test_no_op_with_port_and_start(void) {
int port = -1;
memset(&resolved_addr, 0, sizeof(resolved_addr));
resolved_addr.len = sizeof(struct sockaddr_in);
resolved_addr.len = static_cast<socklen_t>(sizeof(struct sockaddr_in));
addr->sin_family = AF_INET;
GPR_ASSERT(grpc_tcp_server_add_port(s, &resolved_addr, &port) ==
GRPC_ERROR_NONE &&
@ -314,8 +314,8 @@ static void test_connect(size_t num_connects,
dst_addrs != nullptr ? "<specific>" : "::", test_dst_addrs);
memset(&resolved_addr, 0, sizeof(resolved_addr));
memset(&resolved_addr1, 0, sizeof(resolved_addr1));
resolved_addr.len = sizeof(struct sockaddr_storage);
resolved_addr1.len = sizeof(struct sockaddr_storage);
resolved_addr.len = static_cast<socklen_t>(sizeof(struct sockaddr_storage));
resolved_addr1.len = static_cast<socklen_t>(sizeof(struct sockaddr_storage));
addr->ss_family = addr1->ss_family = AF_INET;
GPR_ASSERT(GRPC_LOG_IF_ERROR(
"grpc_tcp_server_add_port",
@ -387,7 +387,7 @@ static void test_connect(size_t num_connects,
size_t connect_num;
test_addr dst;
GPR_ASSERT(fd >= 0);
dst.addr.len = sizeof(dst.addr.addr);
dst.addr.len = static_cast<socklen_t>(sizeof(dst.addr.addr));
GPR_ASSERT(getsockname(fd, (struct sockaddr*)dst.addr.addr,
(socklen_t*)&dst.addr.len) == 0);
GPR_ASSERT(dst.addr.len <= sizeof(dst.addr.addr));
@ -460,10 +460,10 @@ int main(int argc, char** argv) {
continue;
} else if (ifa_it->ifa_addr->sa_family == AF_INET) {
dst_addrs->addrs[dst_addrs->naddrs].addr.len =
sizeof(struct sockaddr_in);
static_cast<socklen_t>(sizeof(struct sockaddr_in));
} else if (ifa_it->ifa_addr->sa_family == AF_INET6) {
dst_addrs->addrs[dst_addrs->naddrs].addr.len =
sizeof(struct sockaddr_in6);
static_cast<socklen_t>(sizeof(struct sockaddr_in6));
} else {
continue;
}

@ -210,7 +210,7 @@ static void test_no_op_with_port(void) {
LOG_TEST("test_no_op_with_port");
memset(&resolved_addr, 0, sizeof(resolved_addr));
resolved_addr.len = sizeof(struct sockaddr_in);
resolved_addr.len = static_cast<socklen_t>(sizeof(struct sockaddr_in));
addr->sin_family = AF_INET;
GPR_ASSERT(grpc_udp_server_add_port(s, &resolved_addr, rcv_buf_size,
snd_buf_size, &handler_factory));
@ -241,7 +241,7 @@ static void test_no_op_with_port_and_socket_factory(void) {
LOG_TEST("test_no_op_with_port_and_socket_factory");
memset(&resolved_addr, 0, sizeof(resolved_addr));
resolved_addr.len = sizeof(struct sockaddr_in);
resolved_addr.len = static_cast<socklen_t>(sizeof(struct sockaddr_in));
addr->sin_family = AF_INET;
GPR_ASSERT(grpc_udp_server_add_port(s, &resolved_addr, rcv_buf_size,
snd_buf_size, &handler_factory));
@ -268,7 +268,7 @@ static void test_no_op_with_port_and_start(void) {
LOG_TEST("test_no_op_with_port_and_start");
memset(&resolved_addr, 0, sizeof(resolved_addr));
resolved_addr.len = sizeof(struct sockaddr_in);
resolved_addr.len = static_cast<socklen_t>(sizeof(struct sockaddr_in));
addr->sin_family = AF_INET;
GPR_ASSERT(grpc_udp_server_add_port(s, &resolved_addr, rcv_buf_size,
snd_buf_size, &handler_factory));
@ -301,7 +301,7 @@ static void test_receive(int number_of_clients) {
g_number_of_orphan_calls = 0;
memset(&resolved_addr, 0, sizeof(resolved_addr));
resolved_addr.len = sizeof(struct sockaddr_storage);
resolved_addr.len = static_cast<socklen_t>(sizeof(struct sockaddr_storage));
addr->ss_family = AF_INET;
GPR_ASSERT(grpc_udp_server_add_port(s, &resolved_addr, rcv_buf_size,
snd_buf_size, &handler_factory));

Loading…
Cancel
Save