mirror of
https://github.com/systemd/systemd.git
synced 2024-11-01 09:21:26 +03:00
mount: make sure m->where is set before unit_add_exec_dependencies()
If you enter unit_add_exec_dependencies with m->where = NULL, you'll very likely end up aborting somewhere under socket_needs_mount. (When systemd goes to check to see if the journald socket requires your mount, it'll do path_startswith(path, m->where)... *kaboom*) This patch should ensure that: a) both branches in mount_add_one() set m->where, and b) mount_add_extras() calls unit_add_exec_dependencies() *after* setting m->where.
This commit is contained in:
parent
5411ae4782
commit
bcbd5405b1
@ -547,10 +547,6 @@ static int mount_add_extras(Mount *m) {
|
||||
Unit *u = UNIT(m);
|
||||
int r;
|
||||
|
||||
r = unit_add_exec_dependencies(u, &m->exec_context);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
if (UNIT(m)->fragment_path)
|
||||
m->from_fragment = true;
|
||||
|
||||
@ -562,6 +558,10 @@ static int mount_add_extras(Mount *m) {
|
||||
|
||||
path_kill_slashes(m->where);
|
||||
|
||||
r = unit_add_exec_dependencies(u, &m->exec_context);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
if (!UNIT(m)->description) {
|
||||
r = unit_set_description(u, m->where);
|
||||
if (r < 0)
|
||||
@ -1459,6 +1459,14 @@ static int mount_add_one(
|
||||
delete = false;
|
||||
free(e);
|
||||
|
||||
if (!MOUNT(u)->where) {
|
||||
MOUNT(u)->where = strdup(where);
|
||||
if (!MOUNT(u)->where) {
|
||||
r = -ENOMEM;
|
||||
goto fail;
|
||||
}
|
||||
}
|
||||
|
||||
if (u->load_state == UNIT_ERROR) {
|
||||
u->load_state = UNIT_LOADED;
|
||||
u->load_error = 0;
|
||||
|
Loading…
Reference in New Issue
Block a user