mirror of
https://github.com/clearlinux/systemd-stable.git
synced 2026-09-06 21:51:37 +00:00
logind: remove per-user runtime dir again if setup fails
If setup of per-user runtime dir fails, clean up afterwards by removing the directory before returning from the function, so we don't leave the directory behind. If this is not done, the second time the user logs in logind would assume that the directory is already set up, even though it isn't.
This commit is contained in:
committed by
Lennart Poettering
parent
e611755d98
commit
4d858e7d9f
@@ -328,7 +328,6 @@ static int user_mkdir_runtime_path(User *u) {
|
||||
r = asprintf(&t, "mode=0700,smackfsroot=*,uid=" UID_FMT ",gid=" GID_FMT ",size=%zu", u->uid, u->gid, u->manager->runtime_dir_size);
|
||||
else
|
||||
r = asprintf(&t, "mode=0700,uid=" UID_FMT ",gid=" GID_FMT ",size=%zu", u->uid, u->gid, u->manager->runtime_dir_size);
|
||||
|
||||
if (r < 0) {
|
||||
r = log_oom();
|
||||
goto fail;
|
||||
@@ -336,7 +335,7 @@ static int user_mkdir_runtime_path(User *u) {
|
||||
|
||||
r = mount("tmpfs", p, "tmpfs", MS_NODEV|MS_NOSUID, t);
|
||||
if (r < 0) {
|
||||
log_error_errno(r, "Failed to mount per-user tmpfs directory %s: %m", p);
|
||||
r = log_error_errno(errno, "Failed to mount per-user tmpfs directory %s: %m", p);
|
||||
goto fail;
|
||||
}
|
||||
}
|
||||
@@ -345,7 +344,12 @@ static int user_mkdir_runtime_path(User *u) {
|
||||
return 0;
|
||||
|
||||
fail:
|
||||
free(p);
|
||||
if (p) {
|
||||
/* Try to clean up, but ignore errors */
|
||||
(void) rmdir(p);
|
||||
free(p);
|
||||
}
|
||||
|
||||
u->runtime_path = NULL;
|
||||
return r;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user