mirror of
https://github.com/zeromq/libzmq.git
synced 2025-01-06 00:31:13 +01:00
Merge pull request #3889 from bluca/fuzzers
Problem: testutil build broken with gcc 4.4 on CentOS 6
This commit is contained in:
commit
aa29f7caff
@ -374,7 +374,7 @@ fd_t connect_socket (const char *endpoint_, const int af_, const int protocol_)
|
|||||||
{
|
{
|
||||||
struct sockaddr_storage addr;
|
struct sockaddr_storage addr;
|
||||||
// OSX is very opinionated and wants the size to match the AF family type
|
// OSX is very opinionated and wants the size to match the AF family type
|
||||||
socklen_t addr_len = sizeof (addr);
|
socklen_t addr_len;
|
||||||
const fd_t s_pre = socket (af_, SOCK_STREAM, protocol_);
|
const fd_t s_pre = socket (af_, SOCK_STREAM, protocol_);
|
||||||
TEST_ASSERT_NOT_EQUAL (-1, s_pre);
|
TEST_ASSERT_NOT_EQUAL (-1, s_pre);
|
||||||
|
|
||||||
@ -406,15 +406,16 @@ fd_t connect_socket (const char *endpoint_, const int af_, const int protocol_)
|
|||||||
memcpy (&addr, in->ai_addr, in->ai_addrlen);
|
memcpy (&addr, in->ai_addr, in->ai_addrlen);
|
||||||
addr_len = (socklen_t) in->ai_addrlen;
|
addr_len = (socklen_t) in->ai_addrlen;
|
||||||
freeaddrinfo (in);
|
freeaddrinfo (in);
|
||||||
}
|
} else {
|
||||||
#if defined(ZMQ_HAVE_IPC)
|
#if defined(ZMQ_HAVE_IPC)
|
||||||
else {
|
// Cannot cast addr as gcc 4.4 will fail with strict aliasing errors
|
||||||
struct sockaddr_un *un_addr = (struct sockaddr_un *) &addr;
|
(*(struct sockaddr_un *) &addr).sun_family = AF_UNIX;
|
||||||
|
strcpy ((*(struct sockaddr_un *) &addr).sun_path, endpoint_);
|
||||||
addr_len = sizeof (struct sockaddr_un);
|
addr_len = sizeof (struct sockaddr_un);
|
||||||
un_addr->sun_family = AF_UNIX;
|
#else
|
||||||
strcpy (un_addr->sun_path, endpoint_);
|
return retired_fd;
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
TEST_ASSERT_SUCCESS_RAW_ERRNO (
|
TEST_ASSERT_SUCCESS_RAW_ERRNO (
|
||||||
connect (s_pre, (struct sockaddr *) &addr, addr_len));
|
connect (s_pre, (struct sockaddr *) &addr, addr_len));
|
||||||
@ -430,7 +431,7 @@ fd_t bind_socket_resolve_port (const char *address_,
|
|||||||
{
|
{
|
||||||
struct sockaddr_storage addr;
|
struct sockaddr_storage addr;
|
||||||
// OSX is very opinionated and wants the size to match the AF family type
|
// OSX is very opinionated and wants the size to match the AF family type
|
||||||
socklen_t addr_len = sizeof (addr);
|
socklen_t addr_len;
|
||||||
const fd_t s_pre = socket (af_, SOCK_STREAM, protocol_);
|
const fd_t s_pre = socket (af_, SOCK_STREAM, protocol_);
|
||||||
TEST_ASSERT_NOT_EQUAL (-1, s_pre);
|
TEST_ASSERT_NOT_EQUAL (-1, s_pre);
|
||||||
|
|
||||||
@ -460,12 +461,11 @@ fd_t bind_socket_resolve_port (const char *address_,
|
|||||||
memcpy (&addr, in->ai_addr, in->ai_addrlen);
|
memcpy (&addr, in->ai_addr, in->ai_addrlen);
|
||||||
addr_len = (socklen_t) in->ai_addrlen;
|
addr_len = (socklen_t) in->ai_addrlen;
|
||||||
freeaddrinfo (in);
|
freeaddrinfo (in);
|
||||||
}
|
} else {
|
||||||
#if defined(ZMQ_HAVE_IPC)
|
#if defined(ZMQ_HAVE_IPC)
|
||||||
else {
|
// Cannot cast addr as gcc 4.4 will fail with strict aliasing errors
|
||||||
struct sockaddr_un *un_addr = (struct sockaddr_un *) &addr;
|
(*(struct sockaddr_un *) &addr).sun_family = AF_UNIX;
|
||||||
addr_len = sizeof (struct sockaddr_un);
|
addr_len = sizeof (struct sockaddr_un);
|
||||||
un_addr->sun_family = AF_UNIX;
|
|
||||||
#if defined ZMQ_HAVE_WINDOWS
|
#if defined ZMQ_HAVE_WINDOWS
|
||||||
char buffer[MAX_PATH] = "";
|
char buffer[MAX_PATH] = "";
|
||||||
|
|
||||||
@ -484,14 +484,16 @@ fd_t bind_socket_resolve_port (const char *address_,
|
|||||||
close (fd);
|
close (fd);
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
strcpy (un_addr->sun_path, buffer);
|
strcpy ((*(struct sockaddr_un *) &addr).sun_path, buffer);
|
||||||
memcpy (my_endpoint_, "ipc://", 7);
|
memcpy (my_endpoint_, "ipc://", 7);
|
||||||
strcat (my_endpoint_, buffer);
|
strcat (my_endpoint_, buffer);
|
||||||
|
|
||||||
// TODO check return value of unlink
|
// TODO check return value of unlink
|
||||||
unlink (buffer);
|
unlink (buffer);
|
||||||
}
|
#else
|
||||||
|
return retired_fd;
|
||||||
#endif
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
TEST_ASSERT_SUCCESS_RAW_ERRNO (
|
TEST_ASSERT_SUCCESS_RAW_ERRNO (
|
||||||
bind (s_pre, (struct sockaddr *) &addr, addr_len));
|
bind (s_pre, (struct sockaddr *) &addr, addr_len));
|
||||||
@ -504,8 +506,8 @@ fd_t bind_socket_resolve_port (const char *address_,
|
|||||||
sprintf (my_endpoint_, "%s://%s:%u",
|
sprintf (my_endpoint_, "%s://%s:%u",
|
||||||
protocol_ == IPPROTO_TCP ? "tcp" : "udp", address_,
|
protocol_ == IPPROTO_TCP ? "tcp" : "udp", address_,
|
||||||
af_ == AF_INET
|
af_ == AF_INET
|
||||||
? ntohs (((struct sockaddr_in *) &addr)->sin_port)
|
? ntohs ((*(struct sockaddr_in *) &addr).sin_port)
|
||||||
: ntohs (((struct sockaddr_in6 *) &addr)->sin6_port));
|
: ntohs ((*(struct sockaddr_in6 *) &addr).sin6_port));
|
||||||
}
|
}
|
||||||
|
|
||||||
return s_pre;
|
return s_pre;
|
||||||
|
Loading…
Reference in New Issue
Block a user