Merge pull request #15991 from keszybz/uids-gids-only-decimal
Only use base 10 for numeric uids/gids
This commit is contained in:
commit
397288e3eb
|
@ -49,7 +49,7 @@ int parse_uid(const char *s, uid_t *ret) {
|
||||||
assert(s);
|
assert(s);
|
||||||
|
|
||||||
assert_cc(sizeof(uid_t) == sizeof(uint32_t));
|
assert_cc(sizeof(uid_t) == sizeof(uint32_t));
|
||||||
r = safe_atou32(s, &uid);
|
r = safe_atou32_full(s, 10, &uid);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return r;
|
return r;
|
||||||
|
|
||||||
|
|
|
@ -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) {
|
static int show_session(int argc, char *argv[], void *userdata) {
|
||||||
bool properties, new_line = false;
|
bool properties, new_line = false;
|
||||||
sd_bus *bus = userdata;
|
sd_bus *bus = userdata;
|
||||||
int r, i;
|
int r;
|
||||||
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
|
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
|
||||||
_cleanup_free_ char *path = 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);
|
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);
|
r = get_session_path(bus, argv[i], &error, &path);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
return log_error_errno(r, "Failed to get session path: %s", bus_error_message(&error, r));
|
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) {
|
static int show_user(int argc, char *argv[], void *userdata) {
|
||||||
bool properties, new_line = false;
|
bool properties, new_line = false;
|
||||||
sd_bus *bus = userdata;
|
sd_bus *bus = userdata;
|
||||||
int r, i;
|
int r;
|
||||||
|
|
||||||
assert(bus);
|
assert(bus);
|
||||||
assert(argv);
|
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);
|
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_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
|
||||||
_cleanup_(sd_bus_message_unrefp) sd_bus_message * reply = NULL;
|
_cleanup_(sd_bus_message_unrefp) sd_bus_message * reply = NULL;
|
||||||
const char *path = 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) {
|
static int show_seat(int argc, char *argv[], void *userdata) {
|
||||||
bool properties, new_line = false;
|
bool properties, new_line = false;
|
||||||
sd_bus *bus = userdata;
|
sd_bus *bus = userdata;
|
||||||
int r, i;
|
int r;
|
||||||
|
|
||||||
assert(bus);
|
assert(bus);
|
||||||
assert(argv);
|
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);
|
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_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
|
||||||
_cleanup_(sd_bus_message_unrefp) sd_bus_message * reply = NULL;
|
_cleanup_(sd_bus_message_unrefp) sd_bus_message * reply = NULL;
|
||||||
const char *path = 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) {
|
static int activate(int argc, char *argv[], void *userdata) {
|
||||||
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
|
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
|
||||||
sd_bus *bus = userdata;
|
sd_bus *bus = userdata;
|
||||||
int r, i;
|
int r;
|
||||||
|
|
||||||
assert(bus);
|
assert(bus);
|
||||||
assert(argv);
|
assert(argv);
|
||||||
|
@ -980,7 +980,7 @@ static int activate(int argc, char *argv[], void *userdata) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 1; i < argc; i++) {
|
for (int i = 1; i < argc; i++) {
|
||||||
|
|
||||||
r = bus_call_method(
|
r = bus_call_method(
|
||||||
bus,
|
bus,
|
||||||
|
@ -1001,7 +1001,7 @@ static int activate(int argc, char *argv[], void *userdata) {
|
||||||
static int kill_session(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;
|
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
|
||||||
sd_bus *bus = userdata;
|
sd_bus *bus = userdata;
|
||||||
int r, i;
|
int r;
|
||||||
|
|
||||||
assert(bus);
|
assert(bus);
|
||||||
assert(argv);
|
assert(argv);
|
||||||
|
@ -1011,7 +1011,7 @@ static int kill_session(int argc, char *argv[], void *userdata) {
|
||||||
if (!arg_kill_who)
|
if (!arg_kill_who)
|
||||||
arg_kill_who = "all";
|
arg_kill_who = "all";
|
||||||
|
|
||||||
for (i = 1; i < argc; i++) {
|
for (int i = 1; i < argc; i++) {
|
||||||
|
|
||||||
r = bus_call_method(
|
r = bus_call_method(
|
||||||
bus,
|
bus,
|
||||||
|
@ -1031,7 +1031,7 @@ static int enable_linger(int argc, char *argv[], void *userdata) {
|
||||||
sd_bus *bus = userdata;
|
sd_bus *bus = userdata;
|
||||||
char* short_argv[3];
|
char* short_argv[3];
|
||||||
bool b;
|
bool b;
|
||||||
int r, i;
|
int r;
|
||||||
|
|
||||||
assert(bus);
|
assert(bus);
|
||||||
assert(argv);
|
assert(argv);
|
||||||
|
@ -1051,7 +1051,7 @@ static int enable_linger(int argc, char *argv[], void *userdata) {
|
||||||
argc = 2;
|
argc = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 1; i < argc; i++) {
|
for (int i = 1; i < argc; i++) {
|
||||||
uid_t uid;
|
uid_t uid;
|
||||||
|
|
||||||
if (isempty(argv[i]))
|
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) {
|
static int terminate_user(int argc, char *argv[], void *userdata) {
|
||||||
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
|
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
|
||||||
sd_bus *bus = userdata;
|
sd_bus *bus = userdata;
|
||||||
int r, i;
|
int r;
|
||||||
|
|
||||||
assert(bus);
|
assert(bus);
|
||||||
assert(argv);
|
assert(argv);
|
||||||
|
|
||||||
polkit_agent_open_if_enabled(arg_transport, arg_ask_password);
|
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;
|
uid_t uid;
|
||||||
|
|
||||||
r = get_user_creds((const char**) (argv+i), &uid, NULL, NULL, NULL, 0);
|
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) {
|
static int kill_user(int argc, char *argv[], void *userdata) {
|
||||||
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
|
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
|
||||||
sd_bus *bus = userdata;
|
sd_bus *bus = userdata;
|
||||||
int r, i;
|
int r;
|
||||||
|
|
||||||
assert(bus);
|
assert(bus);
|
||||||
assert(argv);
|
assert(argv);
|
||||||
|
@ -1113,7 +1113,7 @@ static int kill_user(int argc, char *argv[], void *userdata) {
|
||||||
if (!arg_kill_who)
|
if (!arg_kill_who)
|
||||||
arg_kill_who = "all";
|
arg_kill_who = "all";
|
||||||
|
|
||||||
for (i = 1; i < argc; i++) {
|
for (int i = 1; i < argc; i++) {
|
||||||
uid_t uid;
|
uid_t uid;
|
||||||
|
|
||||||
r = get_user_creds((const char**) (argv+i), &uid, NULL, NULL, NULL, 0);
|
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) {
|
static int attach(int argc, char *argv[], void *userdata) {
|
||||||
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
|
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
|
||||||
sd_bus *bus = userdata;
|
sd_bus *bus = userdata;
|
||||||
int r, i;
|
int r;
|
||||||
|
|
||||||
assert(bus);
|
assert(bus);
|
||||||
assert(argv);
|
assert(argv);
|
||||||
|
|
||||||
polkit_agent_open_if_enabled(arg_transport, arg_ask_password);
|
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(
|
r = bus_call_method(
|
||||||
bus,
|
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) {
|
static int terminate_seat(int argc, char *argv[], void *userdata) {
|
||||||
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
|
_cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
|
||||||
sd_bus *bus = userdata;
|
sd_bus *bus = userdata;
|
||||||
int r, i;
|
int r;
|
||||||
|
|
||||||
assert(bus);
|
assert(bus);
|
||||||
assert(argv);
|
assert(argv);
|
||||||
|
|
||||||
polkit_agent_open_if_enabled(arg_transport, arg_ask_password);
|
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]);
|
r = bus_call_method(bus, bus_login_mgr, "TerminateSeat", &error, NULL, "s", argv[i]);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
|
|
|
@ -48,9 +48,19 @@ static void test_parse_uid(void) {
|
||||||
|
|
||||||
r = parse_uid("65535", &uid);
|
r = parse_uid("65535", &uid);
|
||||||
assert_se(r == -ENXIO);
|
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);
|
r = parse_uid("asdsdas", &uid);
|
||||||
assert_se(r == -EINVAL);
|
assert_se(r == -EINVAL);
|
||||||
|
assert_se(uid == 1234);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void test_uid_ptr(void) {
|
static void test_uid_ptr(void) {
|
||||||
|
|
Loading…
Reference in a new issue