agent: Fix get_socket_name.
authorNIIBE Yutaka <gniibe@fsij.org>
Fri, 7 Oct 2016 10:00:10 +0000 (19:00 +0900)
committerNIIBE Yutaka <gniibe@fsij.org>
Fri, 7 Oct 2016 10:00:10 +0000 (19:00 +0900)
* agent/gpg-agent.c (get_socket_name): Fix the size of copying.

--

Signed-off-by: NIIBE Yutaka <gniibe@fsij.org>
agent/gpg-agent.c

index 70d9775..32e072b 100644 (file)
@@ -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;
         }
     }