1
1
mirror of https://github.com/systemd/systemd-stable.git synced 2024-12-24 21:34:08 +03:00

core: fix deserialization of StartTransientUnit() parameters

This commit is contained in:
Lennart Poettering 2013-11-21 20:49:04 +01:00
parent 21586b77de
commit 6ce270b10a
3 changed files with 16 additions and 3 deletions

View File

@ -547,11 +547,11 @@ static int method_start_transient_unit(sd_bus *bus, sd_bus_message *message, voi
if (mode < 0)
return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Job mode %s is invalid.", smode);
r = manager_load_unit(m, name, NULL, error, &u);
r = selinux_access_check(bus, message, "start", error);
if (r < 0)
return r;
r = selinux_unit_access_check(u, bus, message, "start", error);
r = manager_load_unit(m, name, NULL, error, &u);
if (r < 0)
return r;

View File

@ -169,6 +169,10 @@ static int bus_service_set_transient_property(
if (r < 0)
return r;
r = sd_bus_message_exit_container(message);
if (r < 0)
return r;
if (mode != UNIT_CHECK) {
_cleanup_free_ char *buf = NULL;
_cleanup_fclose_ FILE *f = NULL;

View File

@ -780,7 +780,7 @@ int bus_unit_queue_job(
path = job_dbus_path(j);
if (!path)
return r;
return -ENOMEM;
return sd_bus_reply_method_return(message, "o", path);
}
@ -895,6 +895,10 @@ static int bus_unit_set_transient_property(
if (r < 0)
return r;
r = sd_bus_message_exit_container(message);
if (r < 0)
return r;
return 1;
}
@ -941,6 +945,7 @@ int bus_unit_set_properties(
r = sd_bus_message_rewind(message, false);
if (r < 0)
return r;
for_real = true;
continue;
}
@ -975,6 +980,10 @@ int bus_unit_set_properties(
n += for_real;
}
r = sd_bus_message_exit_container(message);
if (r < 0)
return r;
if (commit && n > 0 && UNIT_VTABLE(u)->bus_commit_properties)
UNIT_VTABLE(u)->bus_commit_properties(u);