X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;ds=sidebyside;f=src%2Fbasic%2Fuser-util.c;h=332e1c6a9c7bc6a4b640208f70958a45004fa3c5;hb=ba92cb322aa7fccefe4d9d36382dc20fb86d8bcc;hp=2656d96c2096a59deffc5898bfea7f71f8a48fdb;hpb=0a197f579a42f75c0f448a50f9f1cf89aac71771;p=elogind.git diff --git a/src/basic/user-util.c b/src/basic/user-util.c index 2656d96c2..332e1c6a9 100644 --- a/src/basic/user-util.c +++ b/src/basic/user-util.c @@ -34,7 +34,7 @@ #include "alloc-util.h" #include "fd-util.h" #include "fileio.h" -#include "formats-util.h" +#include "format-util.h" #include "macro.h" #include "missing.h" #include "parse-util.h" @@ -46,6 +46,8 @@ bool uid_is_valid(uid_t uid) { + /* Also see POSIX IEEE Std 1003.1-2008, 2016 Edition, 3.436. */ + /* Some libc APIs use UID_INVALID as special placeholder */ if (uid == (uid_t) UINT32_C(0xFFFFFFFF)) return false; @@ -179,6 +181,7 @@ int get_user_creds( return 0; } +#if 0 /// UNNEEDED by elogind int get_user_creds_clean( const char **username, uid_t *uid, gid_t *gid, @@ -249,6 +252,7 @@ int get_group_creds(const char **groupname, gid_t *gid) { return 0; } +#endif // 0 char* uid_to_name(uid_t uid) { char *ret; @@ -525,7 +529,15 @@ bool valid_user_group_name(const char *u) { const char *i; long sz; - /* Checks if the specified name is a valid user/group name. */ + /* Checks if the specified name is a valid user/group name. Also see POSIX IEEE Std 1003.1-2008, 2016 Edition, + * 3.437. We are a bit stricter here however. Specifically we deviate from POSIX rules: + * + * - We don't allow any dots (this would break chown syntax which permits dots as user/group name separator) + * - We require that names fit into the appropriate utmp field + * - We don't allow empty user names + * + * Note that other systems are even more restrictive, and don't permit underscores or uppercase characters. + */ if (isempty(u)) return false;