rcolebaugh / rpms / openssh

Forked from rpms/openssh 2 years ago
Clone
Jakub Jelen 140ef5
diff --git a/readconf.c b/readconf.c
Jakub Jelen 140ef5
index fa3fab8..e7eb30d 100644
Jakub Jelen 140ef5
--- a/readconf.c
Jakub Jelen 140ef5
+++ b/readconf.c
Jakub Jelen 140ef5
@@ -1499,7 +1499,7 @@ parse_keytypes:
Jakub Jelen 140ef5
 				    oactive ? "" : " (parse only)");
Jakub Jelen 140ef5
 				r = read_config_file_depth(gl.gl_pathv[i],
Jakub Jelen 140ef5
 				    pw, host, original_host, options,
Jakub Jelen 140ef5
-				    flags | SSHCONF_CHECKPERM |
Jakub Jelen 140ef5
+				    flags | SSHCONF_CHECKPERM | SSHCONF_IGNORE_READERR |
Jakub Jelen 140ef5
 				    (oactive ? 0 : SSHCONF_NEVERMATCH),
Jakub Jelen 140ef5
 				    activep, depth + 1);
Jakub Jelen 140ef5
 				/*
Jakub Jelen 140ef5
@@ -1707,8 +1707,13 @@ read_config_file_depth(const char *filename, struct passwd *pw,
Jakub Jelen 140ef5
 	if (depth < 0 || depth > READCONF_MAX_DEPTH)
Jakub Jelen 140ef5
 		fatal("Too many recursive configuration includes");
Jakub Jelen 140ef5
 
Jakub Jelen 140ef5
-	if ((f = fopen(filename, "r")) == NULL)
Jakub Jelen 140ef5
+	if ((f = fopen(filename, "r")) == NULL) {
Jakub Jelen 140ef5
+		if (flags & SSHCONF_IGNORE_READERR) {
Jakub Jelen 140ef5
+			error("Can not open configuration file %s", filename);
Jakub Jelen 140ef5
+			return 1;
Jakub Jelen 140ef5
+		}
Jakub Jelen 140ef5
 		return 0;
Jakub Jelen 140ef5
+	}
Jakub Jelen 140ef5
 
Jakub Jelen 140ef5
 	if (flags & SSHCONF_CHECKPERM) {
Jakub Jelen 140ef5
 		struct stat sb;
Jakub Jelen 140ef5
diff --git a/readconf.h b/readconf.h
Jakub Jelen 140ef5
index cef55f7..4f7d3b4 100644
Jakub Jelen 140ef5
--- a/readconf.h
Jakub Jelen 140ef5
+++ b/readconf.h
Jakub Jelen 140ef5
@@ -190,6 +190,7 @@ typedef struct {
Jakub Jelen 140ef5
 #define SSHCONF_USERCONF	2  /* user provided config file not system */
Jakub Jelen 140ef5
 #define SSHCONF_POSTCANON	4  /* After hostname canonicalisation */
Jakub Jelen 140ef5
 #define SSHCONF_NEVERMATCH	8  /* Match/Host never matches; internal only */
Jakub Jelen 140ef5
+#define SSHCONF_IGNORE_READERR	16 /* Treat unreadable files as errors; internal only */
Jakub Jelen 140ef5
 
Jakub Jelen 140ef5
 #define SSH_UPDATE_HOSTKEYS_NO	0
Jakub Jelen 140ef5
 #define SSH_UPDATE_HOSTKEYS_YES	1