diff options
author | Werner Koch <[email protected]> | 2016-07-13 14:11:45 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2016-07-13 14:11:45 +0000 |
commit | 678f6063b53e4a2cc919f5a8b9d8bde743839c54 (patch) | |
tree | be14506a1a51e4a64470f46c434278c36861d563 | |
parent | Speedup closing fds before an exec. (diff) | |
download | libassuan-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.c | 12 |
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 |