On Tue, 2012-05-22 at 08:40 +0200, Sjoerd Simons wrote: > On Mon, 2012-05-21 at 21:35 -0700, shawn wrote: > > > If journal_file_open() failed, due to (e.g.) -ENOSPC on open() > > > new_file might still be NULL. > > > > > > On error, leave pointer to the old JournalFile (now closed), > > > and require caller to check for error approiately. > > > > > > Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=43020 > > > Reported-by: Sjoerd Simons <sjo...@luon.net> > > The bugzilla link seems wrong ? yes, I was looking at your patch, (via debian BTS) but I copied the url wrong. (corrected patch attached) That is how I knew to forward it to you. I read your patch, however there are many reasons other than ENOSPC why open() could fail leaving a null pointer, and my patch takes care of that. > > This actually remind me though, i did submit a patch for this issue to > bugzilla (slightly different then your solution) more then a month ago. > And a companion patch to not make the issue occur so easily, bugs filed > here: > > https://bugs.freedesktop.org/show_bug.cgi?id=48688 > https://bugs.freedesktop.org/show_bug.cgi?id=48685 > > If the systemd bugzilla is just somewhat of a decoy i'm happy to repost > the patches to the list ofcourse :) Well the first patch I submitted to systemd bugzilla sure didn't get any traction....
-- -Shawn Landden
>From 54a970dcf59b59ade587002925be027b71d81545 Mon Sep 17 00:00:00 2001 From: Shawn Landden <shawnland...@gmail.com> Date: Mon, 21 May 2012 19:46:54 -0700 Subject: [PATCH] journal: fix dereferenced pointer in journal_file_rotate() If journal_file_open() failed, due to (e.g.) -ENOSPC on open() new_file might still be NULL. On error, leave pointer to the old JournalFile (now closed), and require caller to check for error approiately. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=48685 Reported-by: Sjoerd Simons <sjo...@luon.net> --- src/journal/journal-file.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c index 5dd6e57..9f5f26e 100644 --- a/src/journal/journal-file.c +++ b/src/journal/journal-file.c @@ -1871,9 +1871,16 @@ int journal_file_rotate(JournalFile **f) { old_file->header->state = STATE_ARCHIVED; r = journal_file_open(old_file->path, old_file->flags, old_file->mode, old_file, &new_file); - journal_file_close(old_file); + + if (r < 0) { + r = -errno; + goto finish; + } *f = new_file; + +finish: + journal_file_close(old_file); return r; } -- 1.7.9.5
_______________________________________________ systemd-devel mailing list systemd-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/systemd-devel