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 Reference:https://github.com/SELinuxProject/selinux/commit/c5a699046f4a08a554d2da9121924fc80bf27cba Conflict:adapter filepath and context 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 Signed-off-by: luhuaxin <1539327763@qq.com> --- libselinux/src/sestatus.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/sestatus.c b/src/sestatus.c index 12b015e..531a522 100644 --- a/src/sestatus.c +++ b/src/sestatus.c @@ -282,6 +282,10 @@ int selinux_status_open(int fallback) char path[PATH_MAX]; long pagesize; + if (selinux_status != NULL) { + return 0; + } + if (!selinux_mnt) { errno = ENOENT; return -1; -- 1.8.3.1