From: Adrian Szyndela Date: Mon, 9 Apr 2018 09:55:14 +0000 (+0200) Subject: logger: fix for use-after-free in log storage X-Git-Tag: accepted/tizen/unified/20180410.063705^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F23%2F175223%2F1;p=platform%2Fcore%2Fsystem%2Fdlog.git logger: fix for use-after-free in log storage A report from ASAN build has shown a bug while freeing a storage. When a dumping reader was created with no available logs it was disconnected from storage, but put into waiting_readers. This commit changes log_storage_new_reader() in a way that a reader is added to waiting_readers only if it is connected to the storage. Change-Id: Id6033fe73e86674384feb2fafb9b3814f0f0b73e --- diff --git a/src/logger/log_storage.c b/src/logger/log_storage.c index 44aab07..a59880d 100644 --- a/src/logger/log_storage.c +++ b/src/logger/log_storage.c @@ -189,7 +189,6 @@ log_storage_reader *log_storage_new_reader(log_storage *storage, reader->user_data = user_data; reader->current = NULL; reader->counter = storage->counter_begin; - list_add(&storage->waiting_readers, reader); reader->final = NULL; if (dumping) { @@ -200,6 +199,9 @@ log_storage_reader *log_storage_new_reader(log_storage *storage, // but in case there are no logs - we have nothing to do reader->storage = NULL; } + + if (NULL != reader->storage) + list_add(&storage->waiting_readers, reader); } return reader; }