]> asedeno.scripts.mit.edu Git - PuTTY.git/blobdiff - unix/uxagentc.c
Fix another error-reporting bug, in which sk_newlistener would fail to
[PuTTY.git] / unix / uxagentc.c
index b612f52f1411cab00c06e94dd3a759d8c7f49814..9f579cd9488bda6efc085b30b4d6dcc65c413e12 100644 (file)
@@ -8,21 +8,17 @@
 #include <unistd.h>
 #include <sys/socket.h>
 #include <sys/un.h>
+#include <fcntl.h>
 
 #include "putty.h"
 #include "misc.h"
 #include "tree234.h"
 #include "puttymem.h"
 
-#define GET_32BIT(cp) \
-    (((unsigned long)(unsigned char)(cp)[0] << 24) | \
-    ((unsigned long)(unsigned char)(cp)[1] << 16) | \
-    ((unsigned long)(unsigned char)(cp)[2] << 8) | \
-    ((unsigned long)(unsigned char)(cp)[3]))
-
 int agent_exists(void)
 {
-    if (getenv("SSH_AUTH_SOCK") != NULL)
+    const char *p = getenv("SSH_AUTH_SOCK");
+    if (p && *p)
        return TRUE;
     return FALSE;
 }
@@ -127,6 +123,8 @@ int agent_query(void *in, int inlen, void **out, int *outlen,
        exit(1);
     }
 
+    cloexec(sock);
+
     addr.sun_family = AF_UNIX;
     strncpy(addr.sun_path, name, sizeof(addr.sun_path));
     if (connect(sock, (struct sockaddr *)&addr, sizeof(addr)) < 0) {