notmuch_database_open_with_config() does not NULL pointer on error

Subject: notmuch_database_open_with_config() does not NULL pointer on error

Date: Thu, 21 Oct 2021 15:04:01 -0400

To: notmuch@notmuchmail.org

Cc:

From: Austin Ray


Submitting this bug report per bremner's request (thanks for the assist
today!)

The documentation for 'notmuch_database_open_with_config()' states:

> In case of any failure, this function returns an error status and
> sets *database to NULL.

However, it's possible to trigger a failure and leave *database in a
partially initialized state. Usage of this pointer causes a segfault in
libnotmuch.

Below is a small reproducer program that causes a no config file failure
and outputs if it has a non-NULL database pointer.

#include <notmuch.h>
#include <stdio.h>

int main() {
  const char *db_path = "/home/aray/mail/";
  notmuch_database_t *db = NULL;

  notmuch_status_t st = notmuch_database_open_with_config(
      db_path, NOTMUCH_DATABASE_MODE_READ_ONLY, NULL, NULL, &db, NULL);

  if (st != NOTMUCH_STATUS_SUCCESS) {
    printf("Received status: %s\n", notmuch_status_to_string(st));
    if (db) {
      printf("Received non-null DB pointer\n");
      return -1;
    }
  }

  return 0;
}

Please set 'db_path' to your notmuch database path and call the program
like such: NOTMUCH_CONFIG="./nonexistent" ./reprod

-- 
https://austinray.io
Open Source Maintainer, Software Engineer, Keyboard Enthusiast
GPG: 0127 ED83 B939 CCC9 8082 476E 1AA0 B115 C8AC 2C9E
signature.asc (application/pgp-signature)
_______________________________________________
notmuch mailing list -- notmuch@notmuchmail.org
To unsubscribe send an email to notmuch-leave@notmuchmail.org

Thread: