From fb3b3e1e7a4219f61a834fd07809898918611c2f Mon Sep 17 00:00:00 2001 From: NIIBE Yutaka Date: Fri, 7 Oct 2016 19:00:10 +0900 Subject: [PATCH] agent: Fix get_socket_name. * agent/gpg-agent.c (get_socket_name): Fix the size of copying. -- Signed-off-by: NIIBE Yutaka --- agent/gpg-agent.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/agent/gpg-agent.c b/agent/gpg-agent.c index 70d977539..32e072b1e 100644 --- a/agent/gpg-agent.c +++ b/agent/gpg-agent.c @@ -599,19 +599,21 @@ get_socket_name (int fd) log_error ("socket name not present for file descriptor %d\n", fd); else if (len > sizeof(un)) log_error ("socket name for file descriptor %d was truncated " - "(passed %lu bytes, wanted %u)\n", fd, sizeof(un), len); + "(passed %zu bytes, wanted %u)\n", fd, sizeof(un), len); else { - log_debug ("file descriptor %d has path %s (%lu octets)\n", fd, - un.sun_path, len - offsetof (struct sockaddr_un, sun_path)); - name = xtrymalloc (len - offsetof (struct sockaddr_un, sun_path) + 1); + size_t namelen = len - offsetof (struct sockaddr_un, sun_path); + + log_debug ("file descriptor %d has path %s (%zu octets)\n", fd, + un.sun_path, namelen); + name = xtrymalloc (namelen + 1); if (!name) log_error ("failed to allocate memory for name of fd %d: %s\n", fd, gpg_strerror (gpg_error_from_syserror ())); else { - memcpy (name, un.sun_path, len); - name[len] = 0; + memcpy (name, un.sun_path, namelen); + name[namelen] = 0; } }