diff options
-rw-r--r-- | src/ChangeLog | 5 | ||||
-rw-r--r-- | src/assuan-socket-connect.c | 6 |
2 files changed, 8 insertions, 3 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 3d2faf9..08bb2bd 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2003-11-11 Moritz Schulte <[email protected]> + + * assuan-socket-connect.c (assuan_socket_connect): Fix computation + of socket address length. + 2003-08-13 Werner Koch <[email protected]> * assuan-inquire.c (assuan_inquire): Increase length of cmdbuf to diff --git a/src/assuan-socket-connect.c b/src/assuan-socket-connect.c index a7246cc..020ca1c 100644 --- a/src/assuan-socket-connect.c +++ b/src/assuan-socket-connect.c @@ -95,9 +95,9 @@ assuan_socket_connect (ASSUAN_CONTEXT *r_ctx, memset (&srvr_addr, 0, sizeof srvr_addr); srvr_addr.sun_family = AF_LOCAL; - len = strlen (srvr_addr.sun_path) + 1; - memcpy (srvr_addr.sun_path, name, len); - len += (offsetof (struct sockaddr_un, sun_path)); + strncpy (srvr_addr.sun_path, name, sizeof (srvr_addr.sun_path) - 1); + srvr_addr.sun_path[sizeof (srvr_addr.sun_path) - 1] = 0; + len = SUN_LEN (&srvr_addr); if (connect (fd, (struct sockaddr *) &srvr_addr, len) == -1) { |