rcolebaugh / rpms / openssh

Forked from rpms/openssh 2 years ago
Clone
b58e57
diff -up openssh-6.6p1/authfile.c.keyperm openssh-6.6p1/authfile.c
b58e57
--- openssh-6.6p1/authfile.c.keyperm	2014-02-04 01:20:15.000000000 +0100
b58e57
+++ openssh-6.6p1/authfile.c	2014-05-05 15:20:43.075246776 +0200
b58e57
@@ -54,6 +54,7 @@
b58e57
 
b58e57
 #include <errno.h>
b58e57
 #include <fcntl.h>
b58e57
+#include <grp.h>
b58e57
 #include <stdio.h>
b58e57
 #include <stdarg.h>
b58e57
 #include <stdlib.h>
b58e57
@@ -979,6 +980,13 @@ key_perm_ok(int fd, const char *filename
b58e57
 #ifdef HAVE_CYGWIN
b58e57
 	if (check_ntsec(filename))
b58e57
 #endif
b58e57
+	if (st.st_mode & 040) {
b58e57
+		struct group *gr;
b58e57
+
b58e57
+		if ((gr = getgrnam("ssh_keys")) && (st.st_gid == gr->gr_gid))
b58e57
+			st.st_mode &= ~040;
b58e57
+	}
b58e57
+
b58e57
 	if ((st.st_uid == getuid()) && (st.st_mode & 077) != 0) {
b58e57
 		error("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
b58e57
 		error("@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @");