]> granicus.if.org Git - mutt/commitdiff
Fix crash in hcache_open_tc() when open fails and debug is on. (closes #3813)
authorKevin McCarthy <kevin@8t8.us>
Wed, 16 Mar 2016 20:33:55 +0000 (13:33 -0700)
committerKevin McCarthy <kevin@8t8.us>
Wed, 16 Mar 2016 20:33:55 +0000 (13:33 -0700)
When the hcache open fails, it was trying to dprint.  The dprint had a
%s where it was passing errno, leading to a crash in strlen.

Unify the dprint messages for tcdbopen and tcdbclose to report the
path, strerror, and errno.

Thanks to Will Yardley for capturing the stack trace!

hcache.c

index 561dce3adc8f9c653af48b81fd8fbb2858d515c5..428d8146a10f54dee23ab114c974c1b4d0a773df 100644 (file)
--- a/hcache.c
+++ b/hcache.c
@@ -931,7 +931,7 @@ hcache_open_tc (struct header_cache* h, const char* path)
     return 0;
   else
   {
-    dprint(2, (debugfile, "tcbdbopen %s failed: %s\n", path, errno));
+    dprint(2, (debugfile, "tcbdbopen failed for %s: %s (errno %d)\n", path, strerror (errno), errno));
     tcbdbdel(h->db);
     return -1;
   }
@@ -944,7 +944,7 @@ mutt_hcache_close(header_cache_t *h)
     return;
 
   if (!tcbdbclose(h->db))
-      dprint (2, (debugfile, "tcbdbclose failed for %s: %d\n", h->folder, errno));
+    dprint (2, (debugfile, "tcbdbclose failed for %s: %s (errno %d)\n", h->folder, strerror (errno), errno));
   tcbdbdel(h->db);
   FREE(&h->folder);
   FREE(&h);