From a92a55f2489820f030f461ebc09d621b001a01df Mon Sep 17 00:00:00 2001 From: dimitri staessens Date: Wed, 7 Sep 2016 14:53:19 +0200 Subject: lib: Set umask for file creation permissions Permissions are now set correctly upon creation, removing the need to call fchmod. --- src/lib/shm_ap_rbuff.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 'src/lib/shm_ap_rbuff.c') diff --git a/src/lib/shm_ap_rbuff.c b/src/lib/shm_ap_rbuff.c index e6665362..473894d5 100644 --- a/src/lib/shm_ap_rbuff.c +++ b/src/lib/shm_ap_rbuff.c @@ -75,6 +75,7 @@ static struct shm_ap_rbuff * shm_ap_rbuff_create(bool dir) pthread_mutexattr_t mattr; pthread_condattr_t cattr; char fn[FN_MAX_CHARS]; + mode_t mask; if (dir == SOUTH) sprintf(fn, SHM_AP_RBUFF_PREFIX "south.%d", getpid()); @@ -87,6 +88,8 @@ static struct shm_ap_rbuff * shm_ap_rbuff_create(bool dir) return NULL; } + mask = umask(0); + shm_fd = shm_open(fn, O_CREAT | O_EXCL | O_RDWR, 0666); if (shm_fd == -1) { LOG_DBG("Failed creating ring buffer."); @@ -94,11 +97,7 @@ static struct shm_ap_rbuff * shm_ap_rbuff_create(bool dir) return NULL; } - if (fchmod(shm_fd, 0666)) { - LOG_DBG("Failed to chmod shared memory."); - free(rb); - return NULL; - } + umask(mask); if (ftruncate(shm_fd, SHM_RBUFF_FILE_SIZE - 1) < 0) { LOG_DBG("Failed to extend ringbuffer."); -- cgit v1.2.3