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/login/loginctl.c b/src/login/loginctl.c index 7e33fd6ec2..7805863d8d 100644 --- a/src/login/loginctl.c +++ b/src/login/loginctl.c @@ -815,7 +815,7 @@ static int show_properties(sd_bus *bus, const char *path, bool *new_line) { static int show_session(int argc, char *argv[], void *userdata) { bool properties, new_line = false; sd_bus *bus = userdata; - int r, i; + int r; _cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL; _cleanup_free_ char *path = NULL; @@ -834,7 +834,7 @@ static int show_session(int argc, char *argv[], void *userdata) { return print_session_status_info(bus, "/org/freedesktop/login1/session/auto", &new_line); } - for (i = 1; i < argc; i++) { + for (int i = 1; i < argc; i++) { r = get_session_path(bus, argv[i], &error, &path); if (r < 0) return log_error_errno(r, "Failed to get session path: %s", bus_error_message(&error, r)); @@ -854,7 +854,7 @@ static int show_session(int argc, char *argv[], void *userdata) { static int show_user(int argc, char *argv[], void *userdata) { bool properties, new_line = false; sd_bus *bus = userdata; - int r, i; + int r; assert(bus); assert(argv); @@ -871,7 +871,7 @@ static int show_user(int argc, char *argv[], void *userdata) { return print_user_status_info(bus, "/org/freedesktop/login1/user/self", &new_line); } - for (i = 1; i < argc; i++) { + for (int i = 1; i < argc; i++) { _cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL; _cleanup_(sd_bus_message_unrefp) sd_bus_message * reply = NULL; const char *path = NULL; @@ -911,7 +911,7 @@ static int show_user(int argc, char *argv[], void *userdata) { static int show_seat(int argc, char *argv[], void *userdata) { bool properties, new_line = false; sd_bus *bus = userdata; - int r, i; + int r; assert(bus); assert(argv); @@ -928,7 +928,7 @@ static int show_seat(int argc, char *argv[], void *userdata) { return print_seat_status_info(bus, "/org/freedesktop/login1/seat/auto", &new_line); } - for (i = 1; i < argc; i++) { + for (int i = 1; i < argc; i++) { _cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL; _cleanup_(sd_bus_message_unrefp) sd_bus_message * reply = NULL; const char *path = NULL; @@ -956,7 +956,7 @@ static int show_seat(int argc, char *argv[], void *userdata) { static int activate(int argc, char *argv[], void *userdata) { _cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL; sd_bus *bus = userdata; - int r, i; + int r; assert(bus); assert(argv); @@ -980,7 +980,7 @@ static int activate(int argc, char *argv[], void *userdata) { return 0; } - for (i = 1; i < argc; i++) { + for (int i = 1; i < argc; i++) { r = bus_call_method( bus, @@ -1001,7 +1001,7 @@ static int activate(int argc, char *argv[], void *userdata) { static int kill_session(int argc, char *argv[], void *userdata) { _cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL; sd_bus *bus = userdata; - int r, i; + int r; assert(bus); assert(argv); @@ -1011,7 +1011,7 @@ static int kill_session(int argc, char *argv[], void *userdata) { if (!arg_kill_who) arg_kill_who = "all"; - for (i = 1; i < argc; i++) { + for (int i = 1; i < argc; i++) { r = bus_call_method( bus, @@ -1031,7 +1031,7 @@ static int enable_linger(int argc, char *argv[], void *userdata) { sd_bus *bus = userdata; char* short_argv[3]; bool b; - int r, i; + int r; assert(bus); assert(argv); @@ -1051,7 +1051,7 @@ static int enable_linger(int argc, char *argv[], void *userdata) { argc = 2; } - for (i = 1; i < argc; i++) { + for (int i = 1; i < argc; i++) { uid_t uid; if (isempty(argv[i])) @@ -1078,14 +1078,14 @@ static int enable_linger(int argc, char *argv[], void *userdata) { static int terminate_user(int argc, char *argv[], void *userdata) { _cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL; sd_bus *bus = userdata; - int r, i; + int r; assert(bus); assert(argv); polkit_agent_open_if_enabled(arg_transport, arg_ask_password); - for (i = 1; i < argc; i++) { + for (int i = 1; i < argc; i++) { uid_t uid; r = get_user_creds((const char**) (argv+i), &uid, NULL, NULL, NULL, 0); @@ -1103,7 +1103,7 @@ static int terminate_user(int argc, char *argv[], void *userdata) { static int kill_user(int argc, char *argv[], void *userdata) { _cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL; sd_bus *bus = userdata; - int r, i; + int r; assert(bus); assert(argv); @@ -1113,7 +1113,7 @@ static int kill_user(int argc, char *argv[], void *userdata) { if (!arg_kill_who) arg_kill_who = "all"; - for (i = 1; i < argc; i++) { + for (int i = 1; i < argc; i++) { uid_t uid; r = get_user_creds((const char**) (argv+i), &uid, NULL, NULL, NULL, 0); @@ -1136,14 +1136,14 @@ static int kill_user(int argc, char *argv[], void *userdata) { static int attach(int argc, char *argv[], void *userdata) { _cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL; sd_bus *bus = userdata; - int r, i; + int r; assert(bus); assert(argv); polkit_agent_open_if_enabled(arg_transport, arg_ask_password); - for (i = 2; i < argc; i++) { + for (int i = 2; i < argc; i++) { r = bus_call_method( bus, @@ -1200,14 +1200,14 @@ static int lock_sessions(int argc, char *argv[], void *userdata) { static int terminate_seat(int argc, char *argv[], void *userdata) { _cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL; sd_bus *bus = userdata; - int r, i; + int r; assert(bus); assert(argv); polkit_agent_open_if_enabled(arg_transport, arg_ask_password); - for (i = 1; i < argc; i++) { + for (int i = 1; i < argc; i++) { r = bus_call_method(bus, bus_login_mgr, "TerminateSeat", &error, NULL, "s", argv[i]); if (r < 0) 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) {