From 98dcb8f4c79e0e1685098c3b618719c176b113d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Fri, 25 Sep 2020 13:56:13 +0200 Subject: [PATCH] Move {uid,gid}_is_*() from basic to shared Those are functions that express policy, and nothing in basic/ uses (or should use) them. --- src/basic/user-util.h | 26 +------------------------- src/core/dynamic-user.c | 1 + src/coredump/coredump.c | 1 + src/journal/journald-server.c | 1 + src/shared/condition.c | 1 + src/shared/user-record.h | 24 ++++++++++++++++++++++++ src/test/test-condition.c | 1 + 7 files changed, 30 insertions(+), 25 deletions(-) diff --git a/src/basic/user-util.h b/src/basic/user-util.h index 7c142dd1e6..13e2c99e6c 100644 --- a/src/basic/user-util.h +++ b/src/basic/user-util.h @@ -3,7 +3,7 @@ #include #if ENABLE_GSHADOW -#include +# include #endif #include #include @@ -61,30 +61,6 @@ int take_etc_passwd_lock(const char *root); #define ETC_PASSWD_LOCK_PATH "/etc/.pwd.lock" -static inline bool uid_is_system(uid_t uid) { - return uid <= SYSTEM_UID_MAX; -} - -static inline bool gid_is_system(gid_t gid) { - return gid <= SYSTEM_GID_MAX; -} - -static inline bool uid_is_dynamic(uid_t uid) { - return DYNAMIC_UID_MIN <= uid && uid <= DYNAMIC_UID_MAX; -} - -static inline bool gid_is_dynamic(gid_t gid) { - return uid_is_dynamic((uid_t) gid); -} - -static inline bool uid_is_container(uid_t uid) { - return CONTAINER_UID_BASE_MIN <= uid && uid <= CONTAINER_UID_BASE_MAX; -} - -static inline bool gid_is_container(gid_t gid) { - return uid_is_container((uid_t) gid); -} - /* The following macros add 1 when converting things, since UID 0 is a valid UID, while the pointer * NULL is special */ #define PTR_TO_UID(p) ((uid_t) (((uintptr_t) (p))-1)) diff --git a/src/core/dynamic-user.c b/src/core/dynamic-user.c index be386df12b..8388d53dd1 100644 --- a/src/core/dynamic-user.c +++ b/src/core/dynamic-user.c @@ -19,6 +19,7 @@ #include "stdio-util.h" #include "string-util.h" #include "strv.h" +#include "user-record.h" #include "user-util.h" /* Takes a value generated randomly or by hashing and turns it into a UID in the right range */ diff --git a/src/coredump/coredump.c b/src/coredump/coredump.c index 88739ed5bc..662413bd08 100644 --- a/src/coredump/coredump.c +++ b/src/coredump/coredump.c @@ -46,6 +46,7 @@ #include "string-util.h" #include "strv.h" #include "tmpfile-util.h" +#include "user-record.h" #include "user-util.h" /* The maximum size up to which we process coredumps */ diff --git a/src/journal/journald-server.c b/src/journal/journald-server.c index 34ba24daf6..ab6aadcb78 100644 --- a/src/journal/journald-server.c +++ b/src/journal/journald-server.c @@ -55,6 +55,7 @@ #include "string-table.h" #include "string-util.h" #include "syslog-util.h" +#include "user-record.h" #include "user-util.h" #define USER_JOURNALS_MAX 1024 diff --git a/src/shared/condition.c b/src/shared/condition.c index 1f6105622a..af5d48f55b 100644 --- a/src/shared/condition.c +++ b/src/shared/condition.c @@ -43,6 +43,7 @@ #include "string-table.h" #include "string-util.h" #include "tomoyo-util.h" +#include "user-record.h" #include "user-util.h" #include "util.h" #include "virt.h" diff --git a/src/shared/user-record.h b/src/shared/user-record.h index 357c246ea5..b6fe0d846b 100644 --- a/src/shared/user-record.h +++ b/src/shared/user-record.h @@ -17,6 +17,30 @@ /* The default disk size to use when nothing else is specified, relative to free disk space */ #define USER_DISK_SIZE_DEFAULT_PERCENT 85 +static inline bool uid_is_system(uid_t uid) { + return uid <= SYSTEM_UID_MAX; +} + +static inline bool gid_is_system(gid_t gid) { + return gid <= SYSTEM_GID_MAX; +} + +static inline bool uid_is_dynamic(uid_t uid) { + return DYNAMIC_UID_MIN <= uid && uid <= DYNAMIC_UID_MAX; +} + +static inline bool gid_is_dynamic(gid_t gid) { + return uid_is_dynamic((uid_t) gid); +} + +static inline bool uid_is_container(uid_t uid) { + return CONTAINER_UID_BASE_MIN <= uid && uid <= CONTAINER_UID_BASE_MAX; +} + +static inline bool gid_is_container(gid_t gid) { + return uid_is_container((uid_t) gid); +} + typedef enum UserDisposition { USER_INTRINSIC, /* root and nobody */ USER_SYSTEM, /* statically allocated users for system services */ diff --git a/src/test/test-condition.c b/src/test/test-condition.c index d209c1304c..b42de61200 100644 --- a/src/test/test-condition.c +++ b/src/test/test-condition.c @@ -31,6 +31,7 @@ #include "strv.h" #include "tests.h" #include "tomoyo-util.h" +#include "user-record.h" #include "user-util.h" #include "virt.h"