]> git.proxmox.com Git - mirror_corosync.git/commitdiff
cpg: Set umask in memory_map function
authorJan Friesse <jfriesse@redhat.com>
Thu, 13 Jun 2013 14:21:09 +0000 (16:21 +0200)
committerJan Friesse <jfriesse@redhat.com>
Tue, 18 Jun 2013 12:36:12 +0000 (14:36 +0200)
Signed-off-by: Jan Friesse <jfriesse@redhat.com>
Reviewed-by: Christine Caulfield <ccaulfie@redhat.com>
lib/cpg.c

index 8f8c145f13c8a8884607f4325d0354d0685e883c..4b92f44b42a3bf3366ba30f23758c82feaaa2dc4 100644 (file)
--- a/lib/cpg.c
+++ b/lib/cpg.c
@@ -48,6 +48,7 @@
 #include <sys/socket.h>
 #include <sys/mman.h>
 #include <sys/uio.h>
+#include <sys/stat.h>
 #include <errno.h>
 #include <limits.h>
 
 #define MAP_ANONYMOUS MAP_ANON
 #endif
 
+/*
+ * ZCB files have following umask (umask is same as used in libqb)
+ */
+#define CPG_MEMORY_MAP_UMASK           077
+
 struct cpg_inst {
        qb_ipcc_connection_t *c;
        int finalize;
@@ -737,13 +743,18 @@ memory_map (char *path, const char *file, void **buf, size_t bytes)
        size_t written;
        size_t page_size; 
        long int sysconf_page_size;
+       mode_t old_umask;
 
        snprintf (path, PATH_MAX, "/dev/shm/%s", file);
 
+       old_umask = umask(CPG_MEMORY_MAP_UMASK);
        fd = mkstemp (path);
+       (void)umask(old_umask);
        if (fd == -1) {
                snprintf (path, PATH_MAX, LOCALSTATEDIR "/run/%s", file);
+               old_umask = umask(CPG_MEMORY_MAP_UMASK);
                fd = mkstemp (path);
+               (void)umask(old_umask);
                if (fd == -1) {
                        return (-1);
                }