mirror of
https://github.com/systemd/systemd.git
synced 2024-11-07 01:27:11 +03:00
journald: remove rotated file from hashmap when rotation fails
Before, when the user journal file was rotated, journal_file_rotate could close the old file and fail to open the new file. In that case, we would leave the old (deallocated) file in the hashmap. On subsequent accesses, we could retrieve this stale entry, leading to a segfault. When journal_file_rotate fails with the file pointer set to 0, old file is certainly gone, and cannot be used anymore. https://bugzilla.redhat.com/show_bug.cgi?id=890463
This commit is contained in:
parent
57535f4703
commit
2b98f75a63
Notes:
Zbigniew Jędrzejewski-Szmek
2013-10-09 22:37:52 -04:00
Backport: bugfix
@ -321,8 +321,10 @@ void server_rotate(Server *s) {
|
||||
if (r < 0)
|
||||
if (f)
|
||||
log_error("Failed to rotate %s: %s", f->path, strerror(-r));
|
||||
else
|
||||
else {
|
||||
log_error("Failed to create user journal: %s", strerror(-r));
|
||||
hashmap_remove(s->user_journals, k);
|
||||
}
|
||||
else {
|
||||
hashmap_replace(s->user_journals, k, f);
|
||||
server_fix_perms(s, f, PTR_TO_UINT32(k));
|
||||
|
Loading…
Reference in New Issue
Block a user