]> andersk Git - openssh.git/commitdiff
- markus@cvs.openbsd.org 2002/09/10 20:24:47
authordjm <djm>
Wed, 11 Sep 2002 23:51:10 +0000 (23:51 +0000)
committerdjm <djm>
Wed, 11 Sep 2002 23:51:10 +0000 (23:51 +0000)
     [ssh-agent.c]
     check the euid of the connecting process with getpeereid(2);
     ok provos deraadt stevesk

ChangeLog
ssh-agent.c

index 6c579b7a394251614849f717343388ed5e4cf5d3..bfeb14191f4495febc05b5164b519bf3c5ee4845 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
    - markus@cvs.openbsd.org 2002/09/09 14:54:15
      [channels.c kex.h key.c monitor.c monitor_wrap.c radix.c uuencode.c]
      signed vs unsigned from -pedantic; ok henning@
+   - markus@cvs.openbsd.org 2002/09/10 20:24:47
+     [ssh-agent.c]
+     check the euid of the connecting process with getpeereid(2); 
+     ok provos deraadt stevesk
 
 20020911
  - (djm) Sync openbsd-compat with OpenBSD -current
index 0bfef4dce1cf8272ad1ac19476ea426b61ec47b6..312f2269d409fccba7efebcf03b6a84ae68a607e 100644 (file)
@@ -35,7 +35,7 @@
 
 #include "includes.h"
 #include "openbsd-compat/fake-queue.h"
-RCSID("$OpenBSD: ssh-agent.c,v 1.102 2002/08/22 20:57:19 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>
@@ -810,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) {
@@ -825,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.212629 seconds and 5 git commands to generate.