From c5a699046f4a08a554d2da9121924fc80bf27cba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20G=C3=B6ttsche?= Date: Mon, 10 May 2021 12:56:47 +0200 Subject: [PATCH] libselinux: make selinux_status_open(3) reentrant MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Do not mmap the status page again if `selinux_status_open(3)` has already been called with success. `selinux_status_open(3)` might be called unintentionally multiple times, e.g. once to manually be able to call `selinux_status_getenforce(3)` and once indirectly through `selinux_check_access(3)` (since libselinux 3.2). Signed-off-by: Christian Göttsche --- libselinux/src/sestatus.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/libselinux/src/sestatus.c b/libselinux/src/sestatus.c index 12b015e088ea..531a522c0f48 100644 --- a/libselinux/src/sestatus.c +++ b/libselinux/src/sestatus.c @@ -282,6 +282,10 @@ int selinux_status_open(int fallback) long pagesize; uint32_t seqno; + if (selinux_status != NULL) { + return 0; + } + if (!selinux_mnt) { errno = ENOENT; return -1; -- 2.32.0