lib: Don't delete uninitialized pointers
authorAustin Clements <amdragon@MIT.EDU>
Sun, 29 Jan 2012 05:50:08 +0000 (00:50 -0500)
committerDavid Bremner <bremner@debian.org>
Sat, 4 Feb 2012 01:14:59 +0000 (21:14 -0400)
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.

lib/database.cc

index 8103bd96ef88c0e30f256753145f17f5583118a2..a6d15a13208a5535cb11e3da8275f73cc20284a8 100644 (file)
@@ -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);