diff --git a/src/basic/user-util.c b/src/basic/user-util.c index 2e3580017d..2db8ef6abf 100644 --- a/src/basic/user-util.c +++ b/src/basic/user-util.c @@ -49,7 +49,7 @@ int parse_uid(const char *s, uid_t *ret) { assert(s); assert_cc(sizeof(uid_t) == sizeof(uint32_t)); - r = safe_atou32(s, &uid); + r = safe_atou32_full(s, 10, &uid); if (r < 0) return r; diff --git a/src/test/test-user-util.c b/src/test/test-user-util.c index a0e1495186..3165232fef 100644 --- a/src/test/test-user-util.c +++ b/src/test/test-user-util.c @@ -48,9 +48,19 @@ static void test_parse_uid(void) { r = parse_uid("65535", &uid); assert_se(r == -ENXIO); + assert_se(uid == 100); + + r = parse_uid("0x1234", &uid); + assert_se(r == -EINVAL); + assert_se(uid == 100); + + r = parse_uid("01234", &uid); + assert_se(r == 0); + assert_se(uid == 1234); r = parse_uid("asdsdas", &uid); assert_se(r == -EINVAL); + assert_se(uid == 1234); } static void test_uid_ptr(void) {