From: Austin Clements <amdragon@MIT.EDU>
Date: Sun, 29 Jan 2012 05:50:08 +0000 (-0500)
Subject: lib: Don't delete uninitialized pointers
X-Git-Tag: debian/0.12_rc1-1~129
X-Git-Url: https://git.cworth.org/git?a=commitdiff_plain;h=a8ee1c75c348f41d88398fc394812e66e8e8b72e;p=notmuch

lib: Don't delete uninitialized pointers

In the error-handling paths of notmuch_database_open, we call
notmuch_database_close, which "delete"s several objects referenced by
the notmuch_database_t object.  However, some of these pointers may be
uninitialized, resulting in undefined behavior.  Hence, allocate the
notmuch_database_t with talloc_zero to make sure these pointers are
NULL so that "delete"ing them is harmless.
---

diff --git a/lib/database.cc b/lib/database.cc
index 8103bd96..a6d15a13 100644
--- a/lib/database.cc
+++ b/lib/database.cc
@@ -617,7 +617,7 @@ notmuch_database_open (const char *path,
 	initialized = 1;
     }
 
-    notmuch = talloc (NULL, notmuch_database_t);
+    notmuch = talloc_zero (NULL, notmuch_database_t);
     notmuch->exception_reported = FALSE;
     notmuch->path = talloc_strdup (notmuch, path);