aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorDavid Bremner <david@tethera.net>2021-10-23 10:22:34 -0300
committerDavid Bremner <david@tethera.net>2021-10-30 13:43:58 -0300
commit74c4ce6d88bcc643424c5d89cc8d30cd835e46c3 (patch)
tree9b78441dbe31ad597ae0897e581b199c2be92ba4 /test
parenta942cb8ee3f0e20d6cd72d25c432467a5ebfe93c (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-xtest/T590-libconfig.sh2
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}