forked from pool/systemd
d76216e1f9
(please also push to 13.1, I want the same version as F20) - Add 0001-gpt-auto-generator-exit-immediately-if-in-container.patch: don't start gpt auto-generator in container (git). - Add 0001-manager-when-verifying-whether-clients-may-change-en.patch: fix reload check in selinux case (git). - Add 0001-logind-fix-bus-introspection-data-for-TakeControl.patch: fix introspection for TakeControl (git). - Add 0001-mount-check-for-NULL-before-reading-pm-what.patch: fix crash when parsing some incorrect unit (git). - Add 0001-shared-util-fix-off-by-one-error-in-tag_to_udev_node.patch: Fix udev rules parsing (git). - Add 0001-systemd-serialize-deserialize-forbid_restart-value.patch: Fix incorrect deserialization for forbid_restart (git). - Add 0001-core-unify-the-way-we-denote-serialization-attribute.patch: Ensure forbid_restart is named like other attributes (git). - Add 0001-journald-fix-minor-memory-leak.patch: fix memleak in journald (git). - Add 0001-do-not-accept-garbage-from-acpi-firmware-performance.patch: Improve ACPI firmware performance parsing (git). - Add 0001-journald-remove-rotated-file-from-hashmap-when-rotat.patch: Fix journal rotation (git). - Add 0001-login-fix-invalid-free-in-sd_session_get_vt.patch: Fix memory corruption in sd_session_get_vt (git). OBS-URL: https://build.opensuse.org/request/show/203387 OBS-URL: https://build.opensuse.org/package/show/Base:System/systemd?expand=0&rev=454
40 lines
1.6 KiB
Diff
40 lines
1.6 KiB
Diff
From 2b98f75a63e6022bf74a7d678c47faa5208c794f Mon Sep 17 00:00:00 2001
|
|
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
|
|
Date: Wed, 9 Oct 2013 22:13:13 -0400
|
|
Subject: [PATCH] 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
|
|
---
|
|
src/journal/journald-server.c | 4 +++-
|
|
1 file changed, 3 insertions(+), 1 deletion(-)
|
|
|
|
diff --git a/src/journal/journald-server.c b/src/journal/journald-server.c
|
|
index 4f47eb1..e03e413 100644
|
|
--- a/src/journal/journald-server.c
|
|
+++ b/src/journal/journald-server.c
|
|
@@ -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));
|
|
--
|
|
1.8.4
|
|
|