From cd5b2b75554875111bf375b555ebd3b185cff1a0 Mon Sep 17 00:00:00 2001 From: Joerg Schmidbauer Date: Wed, 1 Feb 2023 10:54:33 +0100 Subject: [libica PATCH] bugfix: permission denied on shared memory segments A change to the Linux kernel in 4.19 for added security is changing the behavior when opening shared memory segments. The O_CREAT flag must not be used for existing segments. Signed-off-by: Joerg Schmidbauer --- src/icastats_shared.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/icastats_shared.c b/src/icastats_shared.c index bbc8d0e..8290239 100644 --- a/src/icastats_shared.c +++ b/src/icastats_shared.c @@ -54,9 +54,10 @@ int stats_mmap(int user) sprintf(shm_id, "icastats_%d", user == -1 ? geteuid() : (uid_t)user); - stats_shm_handle = shm_open(shm_id, - O_CREAT | O_RDWR, - S_IRUSR | S_IWUSR); + stats_shm_handle = shm_open(shm_id, O_RDWR, S_IRUSR | S_IWUSR); + + if (stats_shm_handle == -1) + stats_shm_handle = shm_open(shm_id, O_CREAT | O_RDWR, S_IRUSR | S_IWUSR); if (stats_shm_handle == -1) return rc; -- 2.39.1