]> git.notmuchmail.org Git - notmuch/commit
lib/open: fix potential double-free, ensure *database=NULL on error
authorDavid Bremner <david@tethera.net>
Sat, 23 Oct 2021 13:22:34 +0000 (10:22 -0300)
committerDavid Bremner <david@tethera.net>
Sat, 30 Oct 2021 16:43:58 +0000 (13:43 -0300)
commit74c4ce6d88bcc643424c5d89cc8d30cd835e46c3
tree9b78441dbe31ad597ae0897e581b199c2be92ba4
parenta942cb8ee3f0e20d6cd72d25c432467a5ebfe93c
lib/open: fix potential double-free, ensure *database=NULL on error

During refactoring for 0.32, the code that set notmuch=NULL on various
errors was moved into _finish_open. This meant that the the code which
relied on that to set *database to NULL on error was no longer
correct. It also introduced a potential double free, since the notmuch
struct was deallocated inside _finish_open (via n_d_destroy).

In this commit we revert to "allocator frees", and leave any cleanup
to the caller of _finish_open. This allows us to get back the
behaviour of setting *database to NULL with a small change. Other
callers of _finish_open will need free notmuch on errors.
lib/open.cc
test/T590-libconfig.sh