diff options
| author | David Bremner <david@tethera.net> | 2021-10-23 10:22:34 -0300 |
|---|---|---|
| committer | David Bremner <david@tethera.net> | 2021-10-30 13:43:58 -0300 |
| commit | 74c4ce6d88bcc643424c5d89cc8d30cd835e46c3 (patch) | |
| tree | 9b78441dbe31ad597ae0897e581b199c2be92ba4 /test | |
| parent | a942cb8ee3f0e20d6cd72d25c432467a5ebfe93c (diff) | |
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.
Diffstat (limited to 'test')
| -rwxr-xr-x | test/T590-libconfig.sh | 2 |
1 files changed, 0 insertions, 2 deletions
diff --git a/test/T590-libconfig.sh b/test/T590-libconfig.sh index 79bf5805..32ec072a 100755 --- a/test/T590-libconfig.sh +++ b/test/T590-libconfig.sh @@ -862,7 +862,6 @@ cat <<EOF > c_tail3 EOF test_begin_subtest "open: database set to null on missing config" -test_subtest_known_broken cat c_head3 - c_tail3 <<'EOF' | test_C ${MAIL_DIR} notmuch_status_t st = notmuch_database_open_with_config(argv[1], NOTMUCH_DATABASE_MODE_READ_ONLY, @@ -876,7 +875,6 @@ EOF test_expect_equal_file EXPECTED OUTPUT test_begin_subtest "open: database set to null on missing config (env)" -test_subtest_known_broken old_NOTMUCH_CONFIG=${NOTMUCH_CONFIG} NOTMUCH_CONFIG="/nonexistent" cat c_head3 - c_tail3 <<'EOF' | test_C ${MAIL_DIR} |
