]> andersk Git - openssh.git/blobdiff - ssh-agent.c
- djm@cvs.openbsd.org 2002/09/12 00:13:06
[openssh.git] / ssh-agent.c
index cdc236d99cbb30e2d5f4a1b09d281a8222b2d74c..312f2269d409fccba7efebcf03b6a84ae68a607e 100644 (file)
@@ -35,7 +35,7 @@
 
 #include "includes.h"
 #include "openbsd-compat/fake-queue.h"
-RCSID("$OpenBSD: ssh-agent.c,v 1.101 2002/08/22 19:27:53 stevesk Exp $");
+RCSID("$OpenBSD: ssh-agent.c,v 1.103 2002/09/10 20:24:47 markus Exp $");
 
 #include <openssl/evp.h>
 #include <openssl/md5.h>
@@ -109,7 +109,6 @@ char *__progname;
 static void
 close_socket(SocketEntry *e)
 {
-       shutdown(e->fd, SHUT_RDWR);
        close(e->fd);
        e->fd = -1;
        e->type = AUTH_UNUSED;
@@ -811,6 +810,8 @@ after_select(fd_set *readset, fd_set *writeset)
        char buf[1024];
        int len, sock;
        u_int i;
+       uid_t euid;
+       gid_t egid;
 
        for (i = 0; i < sockets_alloc; i++)
                switch (sockets[i].type) {
@@ -826,6 +827,19 @@ after_select(fd_set *readset, fd_set *writeset)
                                            strerror(errno));
                                        break;
                                }
+                               if (getpeereid(sock, &euid, &egid) < 0) {
+                                       error("getpeereid %d failed: %s",
+                                           sock, strerror(errno));
+                                       close(sock);
+                                       break;
+                               }
+                               if (getuid() != euid) {
+                                       error("uid mismatch: "
+                                           "peer euid %d != uid %d",
+                                           (int) euid, (int) getuid());
+                                       close(sock);
+                                       break;
+                               }
                                new_socket(AUTH_CONNECTION, sock);
                        }
                        break;
This page took 0.047658 seconds and 4 git commands to generate.