]> asedeno.scripts.mit.edu Git - PuTTY.git/blobdiff - unix/uxagentc.c
Properly check the lengths of Unix-socket pathnames.
[PuTTY.git] / unix / uxagentc.c
index 7732a9a1744842e69fd05d23dcf10d7fdee64260..ffc5879cfbc0f5dba078f56ab72f2690908963cc 100644 (file)
@@ -134,7 +134,7 @@ agent_pending_query *agent_query(
     agent_pending_query *conn;
 
     name = getenv("SSH_AUTH_SOCK");
-    if (!name)
+    if (!name || strlen(name) >= sizeof(addr.sun_path))
        goto failure;
 
     sock = socket(PF_UNIX, SOCK_STREAM, 0);
@@ -146,7 +146,7 @@ agent_pending_query *agent_query(
     cloexec(sock);
 
     addr.sun_family = AF_UNIX;
-    strncpy(addr.sun_path, name, sizeof(addr.sun_path));
+    strcpy(addr.sun_path, name);
     if (connect(sock, (struct sockaddr *)&addr, sizeof(addr)) < 0) {
        close(sock);
        goto failure;