rcolebaugh / rpms / openssh

Forked from rpms/openssh 2 years ago
Clone
f09e2e
diff -up openssh-5.8p1/authfile.c.keyperm openssh-5.8p1/authfile.c
f09e2e
--- openssh-5.8p1/authfile.c.keyperm	2010-12-01 02:03:39.000000000 +0100
f09e2e
+++ openssh-5.8p1/authfile.c	2011-04-21 16:43:36.859648916 +0200
f09e2e
@@ -57,6 +57,7 @@
f09e2e
 #include <stdlib.h>
f09e2e
 #include <string.h>
f09e2e
 #include <unistd.h>
f09e2e
+#include <grp.h>
f09e2e
 
f09e2e
 #include "xmalloc.h"
f09e2e
 #include "cipher.h"
f09e2e
@@ -600,6 +612,13 @@ key_perm_ok(int fd, const char *filename
f09e2e
 #ifdef HAVE_CYGWIN
f09e2e
 	if (check_ntsec(filename))
f09e2e
 #endif
f09e2e
+	if (st.st_mode & 040) {
f09e2e
+		struct group *gr;
f09e2e
+
f09e2e
+		if ((gr = getgrnam("ssh_keys")) && (st.st_gid == gr->gr_gid))
f09e2e
+			st.st_mode &= ~040;
f09e2e
+	}
f09e2e
+
f09e2e
 	if ((st.st_uid == getuid()) && (st.st_mode & 077) != 0) {
f09e2e
 		error("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
f09e2e
 		error("@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @");