From: Lennart Poettering Date: Sun, 29 Jun 2014 20:15:33 +0000 (+0200) Subject: util: refuse considering UID 0xFFFF and 0xFFFFFFFF valid X-Git-Tag: v215~119 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=commitdiff_plain;h=306a55c86360a7ae7b2509771d5ea6ab0d166d85 util: refuse considering UID 0xFFFF and 0xFFFFFFFF valid --- diff --git a/src/shared/util.c b/src/shared/util.c index e7ff0f884..1709bb70c 100644 --- a/src/shared/util.c +++ b/src/shared/util.c @@ -280,6 +280,14 @@ int parse_uid(const char *s, uid_t* ret_uid) { if ((unsigned long) uid != ul) return -ERANGE; + /* Some libc APIs use (uid_t) -1 as special placeholder */ + if (uid == (uid_t) 0xFFFFFFFF) + return -EINVAL; + + /* A long time ago UIDs where 16bit, hence explicitly avoid the 32bit -1 too */ + if (uid == (uid_t) 0xFFFF) + return -EINVAL; + *ret_uid = uid; return 0; }