112 lines
3.9 KiB
Diff
112 lines
3.9 KiB
Diff
From dd98fa322766760c4e1f029cf19d2515a583304f Mon Sep 17 00:00:00 2001
|
|
From: =?UTF-8?q?Christian=20G=C3=B6ttsche?= <cgzones@googlemail.com>
|
|
Date: Fri, 20 May 2022 15:16:10 +0200
|
|
Subject: [PATCH] libselinux: declare return value of context_str(3) const
|
|
MIME-Version: 1.0
|
|
Content-Type: text/plain; charset=UTF-8
|
|
Content-Transfer-Encoding: 8bit
|
|
Content-type: text/plain
|
|
|
|
context_str(3) returns a string representation of the given context.
|
|
This string is owned by the context and free'd on context_free(3).
|
|
Declare it const, as already done in the man page, since it must not be
|
|
free'd by the caller.
|
|
|
|
Signed-off-by: Christian Göttsche <cgzones@googlemail.com>
|
|
Acked-by: Nicolas Iooss <nicolas.iooss@m4x.org>
|
|
---
|
|
libselinux/include/selinux/context.h | 2 +-
|
|
libselinux/src/context.c | 2 +-
|
|
libselinux/src/get_context_list.c | 11 ++++++-----
|
|
libselinux/src/query_user_context.c | 2 +-
|
|
4 files changed, 9 insertions(+), 8 deletions(-)
|
|
|
|
diff --git a/libselinux/include/selinux/context.h b/libselinux/include/selinux/context.h
|
|
index 949fb1e14cac..82f4e690faa8 100644
|
|
--- a/libselinux/include/selinux/context.h
|
|
+++ b/libselinux/include/selinux/context.h
|
|
@@ -25,7 +25,7 @@ extern "C" {
|
|
* for the same context_t*
|
|
*/
|
|
|
|
- extern char *context_str(context_t);
|
|
+ extern const char *context_str(context_t);
|
|
|
|
/* Free the storage used by a context */
|
|
extern void context_free(context_t);
|
|
diff --git a/libselinux/src/context.c b/libselinux/src/context.c
|
|
index b2144c7cf76c..9dddbc5aa431 100644
|
|
--- a/libselinux/src/context.c
|
|
+++ b/libselinux/src/context.c
|
|
@@ -116,7 +116,7 @@ void context_free(context_t context)
|
|
/*
|
|
* Return a pointer to the string value of the context.
|
|
*/
|
|
-char *context_str(context_t context)
|
|
+const char *context_str(context_t context)
|
|
{
|
|
context_private_t *n = context->ptr;
|
|
int i;
|
|
diff --git a/libselinux/src/get_context_list.c b/libselinux/src/get_context_list.c
|
|
index cfe38e59b207..d774b9cf604b 100644
|
|
--- a/libselinux/src/get_context_list.c
|
|
+++ b/libselinux/src/get_context_list.c
|
|
@@ -143,6 +143,7 @@ static int get_context_user(FILE * fp,
|
|
char *linerole, *linetype;
|
|
char **new_reachable = NULL;
|
|
char *usercon_str;
|
|
+ const char *usercon_str2;
|
|
context_t con;
|
|
context_t usercon;
|
|
|
|
@@ -257,20 +258,20 @@ static int get_context_user(FILE * fp,
|
|
rc = -1;
|
|
goto out;
|
|
}
|
|
- usercon_str = context_str(usercon);
|
|
- if (!usercon_str) {
|
|
+ usercon_str2 = context_str(usercon);
|
|
+ if (!usercon_str2) {
|
|
context_free(usercon);
|
|
rc = -1;
|
|
goto out;
|
|
}
|
|
|
|
/* check whether usercon is already in reachable */
|
|
- if (is_in_reachable(*reachable, usercon_str)) {
|
|
+ if (is_in_reachable(*reachable, usercon_str2)) {
|
|
context_free(usercon);
|
|
start = end;
|
|
continue;
|
|
}
|
|
- if (security_check_context(usercon_str) == 0) {
|
|
+ if (security_check_context(usercon_str2) == 0) {
|
|
new_reachable = realloc(*reachable, (*nreachable + 2) * sizeof(char *));
|
|
if (!new_reachable) {
|
|
context_free(usercon);
|
|
@@ -278,7 +279,7 @@ static int get_context_user(FILE * fp,
|
|
goto out;
|
|
}
|
|
*reachable = new_reachable;
|
|
- new_reachable[*nreachable] = strdup(usercon_str);
|
|
+ new_reachable[*nreachable] = strdup(usercon_str2);
|
|
if (new_reachable[*nreachable] == NULL) {
|
|
context_free(usercon);
|
|
rc = -1;
|
|
diff --git a/libselinux/src/query_user_context.c b/libselinux/src/query_user_context.c
|
|
index b8125c96ed81..29a1b360e945 100644
|
|
--- a/libselinux/src/query_user_context.c
|
|
+++ b/libselinux/src/query_user_context.c
|
|
@@ -115,7 +115,7 @@ int manual_user_enter_context(const char *user, char ** newcon)
|
|
int mls_enabled = is_selinux_mls_enabled();
|
|
|
|
context_t new_context; /* The new context chosen by the user */
|
|
- char *user_context = NULL; /* String value of the user's context */
|
|
+ const char *user_context = NULL; /* String value of the user's context */
|
|
int done = 0; /* true if a valid sid has been obtained */
|
|
|
|
/* Initialize the context. How this is done depends on whether
|
|
--
|
|
2.38.1
|
|
|