Blame SOURCES/bz2144530-fence_virtd-warn-files-not-mode-600.patch

ed9a6b
diff --color -uNr a/config/Makefile.am b/config/Makefile.am
ed9a6b
--- a/config/Makefile.am	2019-11-20 14:13:42.000000000 +0100
ed9a6b
+++ b/config/Makefile.am	2022-11-22 10:12:51.764545658 +0100
ed9a6b
@@ -37,5 +37,8 @@
ed9a6b
 config.c: y.tab.c config.l
ed9a6b
 	$(LEX) -oconfig.c $(srcdir)/config.l
ed9a6b
 
ed9a6b
+install-exec-hook:
ed9a6b
+	chmod 600 $(DESTDIR)$(sysconfdir)/fence_virt.conf
ed9a6b
+
ed9a6b
 clean-local:
ed9a6b
 	rm -f config.tab.c config.tab.h config.c y.tab.c y.tab.h
ed9a6b
diff --color -uNr a/include/simpleconfig.h b/include/simpleconfig.h
ed9a6b
--- a/include/simpleconfig.h	2018-01-15 15:02:31.000000000 +0100
ed9a6b
+++ b/include/simpleconfig.h	2022-11-22 10:15:06.440335062 +0100
ed9a6b
@@ -49,4 +49,8 @@
ed9a6b
 /* Frees a previously-allocated copy of our simple config object */
ed9a6b
 void sc_release(config_object_t *c);
ed9a6b
 
ed9a6b
+int check_file_permissions(const char *fname);
ed9a6b
+
ed9a6b
+int do_configure(config_object_t *config, const char *filename);
ed9a6b
+
ed9a6b
 #endif
ed9a6b
diff --color -uNr a/include/simpleconfig.h.rej b/include/simpleconfig.h.rej
ed9a6b
--- a/include/simpleconfig.h.rej	1970-01-01 01:00:00.000000000 +0100
ed9a6b
+++ b/include/simpleconfig.h.rej	2022-11-22 10:12:51.764545658 +0100
ed9a6b
@@ -0,0 +1,11 @@
ed9a6b
+--- include/simpleconfig.h
ed9a6b
++++ include/simpleconfig.h
ed9a6b
+@@ -49,6 +49,8 @@ config_object_t *sc_init(void);
ed9a6b
+ /* Frees a previously-allocated copy of our simple config object */
ed9a6b
+ void sc_release(config_object_t *c);
ed9a6b
+ 
ed9a6b
++int check_file_permissions(const char *fname);
ed9a6b
++
ed9a6b
+ int do_configure(config_object_t *config, const char *filename);
ed9a6b
+ 
ed9a6b
+ #endif
ed9a6b
diff --color -uNr a/server/config.c b/server/config.c
ed9a6b
--- a/server/config.c	2019-11-20 14:13:42.000000000 +0100
ed9a6b
+++ b/server/config.c	2022-11-22 10:17:25.539150364 +0100
ed9a6b
@@ -11,6 +11,7 @@
ed9a6b
 #include <fcntl.h>
ed9a6b
 #include <net/if.h>
ed9a6b
 #include <arpa/inet.h>
ed9a6b
+#include <errno.h>
ed9a6b
 
ed9a6b
 #include "simpleconfig.h"
ed9a6b
 #include "static_map.h"
ed9a6b
@@ -590,6 +591,31 @@
ed9a6b
 
ed9a6b
 
ed9a6b
 int
ed9a6b
+check_file_permissions(const char *fname)
ed9a6b
+{
ed9a6b
+	struct stat st;
ed9a6b
+	mode_t file_perms = 0600;
ed9a6b
+	int ret;
ed9a6b
+
ed9a6b
+	ret = stat(fname, &st);
ed9a6b
+	if (ret != 0) {
ed9a6b
+		printf("stat failed on file '%s': %s\n",
ed9a6b
+			 fname, strerror(errno));
ed9a6b
+		return 1;
ed9a6b
+	}
ed9a6b
+
ed9a6b
+	if ((st.st_mode & 0777) != file_perms) {
ed9a6b
+		printf("WARNING: invalid permissions on file "
ed9a6b
+			 "'%s': has 0%o should be 0%o\n", fname,
ed9a6b
+			 (unsigned int)(st.st_mode & 0777),
ed9a6b
+			 (unsigned int)file_perms);
ed9a6b
+		return 1;
ed9a6b
+	}
ed9a6b
+
ed9a6b
+	return 0;
ed9a6b
+}
ed9a6b
+
ed9a6b
+int
ed9a6b
 do_configure(config_object_t *config, const char *config_file)
ed9a6b
 {
ed9a6b
 	FILE *fp = NULL;
ed9a6b
diff --color -uNr a/server/main.c b/server/main.c
ed9a6b
--- a/server/main.c	2019-11-27 09:19:52.000000000 +0100
ed9a6b
+++ b/server/main.c	2022-11-22 10:19:06.647742990 +0100
ed9a6b
@@ -14,11 +14,12 @@
ed9a6b
 /* Local includes */
ed9a6b
 #include "simpleconfig.h"
ed9a6b
 #include "static_map.h"
ed9a6b
+#include "xvm.h"
ed9a6b
 #include "server_plugin.h"
ed9a6b
+#include "simple_auth.h"
ed9a6b
 #include "debug.h"
ed9a6b
 
ed9a6b
 /* configure.c */
ed9a6b
-int do_configure(config_object_t *config, const char *filename);
ed9a6b
 int daemon_init(const char *prog, const char *pid_file, int nofork);
ed9a6b
 int daemon_cleanup(void);
ed9a6b
 
ed9a6b
@@ -206,6 +207,18 @@
ed9a6b
 		snprintf(pid_file, PATH_MAX, "/var/run/%s.pid", basename(argv[0]));
ed9a6b
 	}
ed9a6b
 
ed9a6b
+	check_file_permissions(config_file);
ed9a6b
+
ed9a6b
+	sprintf(val, "listeners/%s/@key_file", listener_name);
ed9a6b
+	if (sc_get(config, val,
ed9a6b
+		   val, sizeof(val)-1) == 0) {
ed9a6b
+		dbg_printf(1, "Got %s for key_file\n", val);
ed9a6b
+	} else {
ed9a6b
+		snprintf(val, sizeof(val), "%s", DEFAULT_KEY_FILE);
ed9a6b
+	}
ed9a6b
+
ed9a6b
+	check_file_permissions(val);
ed9a6b
+
ed9a6b
 	openlog(basename(argv[0]), LOG_NDELAY | LOG_PID, LOG_DAEMON);
ed9a6b
 
ed9a6b
 	daemon_init(basename(argv[0]), pid_file, foreground);