From 647d88d649c267220feb8b5f53ec3e96359a72fc Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Tue, 21 Feb 2017 20:20:33 +0100 Subject: fix sun_len issue (#4816) by adding test and fixing typo --- configure.ac | 10 ++++++++++ src/arm/gnunet-service-arm.c | 2 +- src/transport/plugin_transport_tcp.c | 2 +- src/transport/plugin_transport_unix.c | 6 +++--- src/util/client.c | 4 ++-- src/util/connection.c | 4 ++-- src/util/service.c | 2 +- src/util/service_new.c | 2 +- src/util/test_server_with_client_unix.c | 2 +- 9 files changed, 22 insertions(+), 12 deletions(-) diff --git a/configure.ac b/configure.ac index b31d0a6c7..7f9cc2197 100644 --- a/configure.ac +++ b/configure.ac @@ -1032,6 +1032,16 @@ AC_CHECK_MEMBER([struct sockaddr_in.sin_len], #include ]) +AC_CHECK_MEMBER([struct sockaddr_un.sun_len], + [ AC_DEFINE(HAVE_SOCKADDR_UN_SUN_LEN, 1, [Do we have sockaddr_un.sun_len?]) + ], + [], + [ + #include + #include + #include + ]) + # Checks for library functions. diff --git a/src/arm/gnunet-service-arm.c b/src/arm/gnunet-service-arm.c index 7af3659a4..4f3e964e3 100644 --- a/src/arm/gnunet-service-arm.c +++ b/src/arm/gnunet-service-arm.c @@ -290,7 +290,7 @@ add_unixpath (struct sockaddr **saddrs, if (GNUNET_YES == abstract) un->sun_path[0] = '\0'; #endif -#if HAVE_SOCKADDR_IN_SIN_LEN +#if HAVE_SOCKADDR_UN_SUN_LEN un->sun_len = (u_char) sizeof (struct sockaddr_un); #endif *saddrs = (struct sockaddr *) un; diff --git a/src/transport/plugin_transport_tcp.c b/src/transport/plugin_transport_tcp.c index 4ed5b38f7..34bbd00e0 100644 --- a/src/transport/plugin_transport_tcp.c +++ b/src/transport/plugin_transport_tcp.c @@ -549,7 +549,7 @@ add_unixpath (struct sockaddr **saddrs, if (GNUNET_YES == abstract) un->sun_path[0] = '\0'; #endif -#if HAVE_SOCKADDR_IN_SIN_LEN +#if HAVE_SOCKADDR_UN_SUN_LEN un->sun_len = (u_char) sizeof (struct sockaddr_un); #endif *saddrs = (struct sockaddr *) un; diff --git a/src/transport/plugin_transport_unix.c b/src/transport/plugin_transport_unix.c index 49a5e89ed..6bcb7290f 100644 --- a/src/transport/plugin_transport_unix.c +++ b/src/transport/plugin_transport_unix.c @@ -566,7 +566,7 @@ unix_address_to_sockaddr (const char *unixpath, GNUNET_memcpy (un->sun_path, unixpath, slen); un->sun_path[slen] = '\0'; slen = sizeof (struct sockaddr_un); -#if HAVE_SOCKADDR_IN_SIN_LEN +#if HAVE_SOCKADDR_UN_SUN_LEN un->sun_len = (u_char) slen; #endif (*sock_len) = slen; @@ -1229,7 +1229,7 @@ unix_plugin_select_read (void *cls) { struct Plugin *plugin = cls; const struct GNUNET_SCHEDULER_TaskContext *tc; - + plugin->read_task = NULL; tc = GNUNET_SCHEDULER_get_task_context (); if (0 != (tc->reason & GNUNET_SCHEDULER_REASON_READ_READY)) @@ -1252,7 +1252,7 @@ unix_plugin_select_write (void *cls) { struct Plugin *plugin = cls; const struct GNUNET_SCHEDULER_TaskContext *tc; - + plugin->write_task = NULL; tc = GNUNET_SCHEDULER_get_task_context (); if (0 != (tc->reason & GNUNET_SCHEDULER_REASON_WRITE_READY)) diff --git a/src/util/client.c b/src/util/client.c index 06f6ebc32..a5e04d7b2 100644 --- a/src/util/client.c +++ b/src/util/client.c @@ -491,8 +491,8 @@ try_unixpath (const char *service_name, s_un.sun_path[0] = '\0'; } #endif -#if HAVE_SOCKADDR_IN_SIN_LEN - un.sun_len = (u_char) sizeof (struct sockaddr_un); +#if HAVE_SOCKADDR_UN_SUN_LEN + s_un.sun_len = (u_char) sizeof (struct sockaddr_un); #endif sock = GNUNET_NETWORK_socket_create (AF_UNIX, SOCK_STREAM, diff --git a/src/util/connection.c b/src/util/connection.c index 6d3070415..02dd9f991 100644 --- a/src/util/connection.c +++ b/src/util/connection.c @@ -902,7 +902,7 @@ GNUNET_CONNECTION_create_from_connect_to_unixpath (const struct GNUNET_CONFIGURA un->sun_path[0] = '\0'; } #endif -#if HAVE_SOCKADDR_IN_SIN_LEN +#if HAVE_SOCKADDR_UN_SUN_LEN un->sun_len = (u_char) sizeof (struct sockaddr_un); #endif connection = GNUNET_new (struct GNUNET_CONNECTION_Handle); @@ -1012,7 +1012,7 @@ GNUNET_CONNECTION_create_from_sockaddr (int af_family, return NULL; } return GNUNET_CONNECTION_connect_socket (s, - serv_addr, + serv_addr, addrlen); } diff --git a/src/util/service.c b/src/util/service.c index 3beb4a085..11128425d 100644 --- a/src/util/service.c +++ b/src/util/service.c @@ -481,7 +481,7 @@ add_unixpath (struct sockaddr **saddrs, if (GNUNET_YES == abstract) un->sun_path[0] = '\0'; #endif -#if HAVE_SOCKADDR_IN_SIN_LEN +#if HAVE_SOCKADDR_UN_SUN_LEN un->sun_len = (u_char) sizeof (struct sockaddr_un); #endif *saddrs = (struct sockaddr *) un; diff --git a/src/util/service_new.c b/src/util/service_new.c index 00d05dacc..90829c08c 100644 --- a/src/util/service_new.c +++ b/src/util/service_new.c @@ -519,7 +519,7 @@ add_unixpath (struct sockaddr **saddrs, if (GNUNET_YES == abstract) un->sun_path[0] = '\0'; #endif -#if HAVE_SOCKADDR_IN_SIN_LEN +#if HAVE_SOCKADDR_UN_SUN_LEN un->sun_len = (u_char) sizeof (struct sockaddr_un); #endif *saddrs = (struct sockaddr *) un; diff --git a/src/util/test_server_with_client_unix.c b/src/util/test_server_with_client_unix.c index d240f1a88..8fabbe210 100644 --- a/src/util/test_server_with_client_unix.c +++ b/src/util/test_server_with_client_unix.c @@ -123,7 +123,7 @@ task (void *cls) memset (&un, 0, sizeof (un)); un.sun_family = AF_UNIX; strncpy(un.sun_path, unixpath, sizeof (un.sun_path) - 1); -#if HAVE_SOCKADDR_IN_SIN_LEN +#if HAVE_SOCKADDR_UN_SUN_LEN un.sun_len = (u_char) sizeof (un); #endif -- cgit v1.2.3