aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2016-07-13 14:11:45 +0000
committerWerner Koch <[email protected]>2016-07-13 14:11:45 +0000
commit678f6063b53e4a2cc919f5a8b9d8bde743839c54 (patch)
treebe14506a1a51e4a64470f46c434278c36861d563
parentSpeedup closing fds before an exec. (diff)
downloadlibassuan-678f6063b53e4a2cc919f5a8b9d8bde743839c54.tar.gz
libassuan-678f6063b53e4a2cc919f5a8b9d8bde743839c54.zip
Allow socket redirection with assuan_socket_connect.
* src/assuan-socket-connect.c (assuan_socket_connect): Use set_socketaddr function. -- GnuPG-bug-id: 2253 Signed-off-by: Werner Koch <[email protected]>
-rw-r--r--src/assuan-socket-connect.c12
1 files changed, 5 insertions, 7 deletions
diff --git a/src/assuan-socket-connect.c b/src/assuan-socket-connect.c
index 73fbbc3..3d3176e 100644
--- a/src/assuan-socket-connect.c
+++ b/src/assuan-socket-connect.c
@@ -233,15 +233,13 @@ assuan_socket_connect (assuan_context_t ctx, const char *name,
if (af == AF_LOCAL)
{
- if (strlen (name)+1 >= sizeof srvr_addr_un.sun_path)
- return _assuan_error (ctx, GPG_ERR_ASS_INV_VALUE);
+ int redirected;
- memset (&srvr_addr_un, 0, sizeof srvr_addr_un);
- srvr_addr_un.sun_family = AF_LOCAL;
- strncpy (srvr_addr_un.sun_path, name, sizeof (srvr_addr_un.sun_path) - 1);
- srvr_addr_un.sun_path[sizeof (srvr_addr_un.sun_path) - 1] = 0;
- len = SUN_LEN (&srvr_addr_un);
+ if (_assuan_sock_set_sockaddr_un (name, (struct sockaddr *)&srvr_addr_un,
+ &redirected))
+ return _assuan_error (ctx, gpg_err_code_from_syserror ());
+ len = SUN_LEN (&srvr_addr_un);
srvr_addr = (struct sockaddr *)&srvr_addr_un;
}
else