aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/ChangeLog5
-rw-r--r--src/assuan-socket-connect.c6
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)
{