From a0ef27ead67dcc9595585f58f80303cc80ef8dfb Mon Sep 17 00:00:00 2001 From: Dan Liew Date: Thu, 17 Dec 2015 11:43:34 +0000 Subject: Fix a memory leak in ``UpdateList`` detected by AddressSanitizer. The overloaded assignment operator previously only deleted the head ``UpdateNode`` if the ``UpdateList`` had exclusive ownership which left the remaining list of ``UpdateNode``s dangling if those nodes had ``refCount`` of 1. To fix this the logic that was previously in the ``UpdateList`` destructor for deleting nodes that were exclusively referenced by the UpdateList has been moved into ``UpdateList::tryFreeNodes()`` so that it can be called from ``UpdateList::operator=()``. It looks like this bug has been in KLEE since the beginning. --- utils/sanitizers/lsan.txt | 1 - 1 file changed, 1 deletion(-) (limited to 'utils') diff --git a/utils/sanitizers/lsan.txt b/utils/sanitizers/lsan.txt index 10286657..93826a7d 100644 --- a/utils/sanitizers/lsan.txt +++ b/utils/sanitizers/lsan.txt @@ -12,7 +12,6 @@ leak:lib/Expr/Parser.cpp # These are bad, these definitely need fixing leak:klee::Array::CreateArray -leak:klee::UpdateList::extend leak:klee::ConstantExpr::alloc leak:klee::ConcatExpr::alloc leak:klee::ReadExpr::alloc -- cgit 1.4.1