]> granicus.if.org Git - mutt/commitdiff
Fix potential segv if mx_open_mailbox is passed an empty string. (closes #3945)
authorTAKAHASHI Tamotsu <ttakah@lapis.plala.or.jp>
Mon, 22 May 2017 12:08:58 +0000 (05:08 -0700)
committerTAKAHASHI Tamotsu <ttakah@lapis.plala.or.jp>
Mon, 22 May 2017 12:08:58 +0000 (05:08 -0700)
If path is "", ctx->path will be NULL.  realpath() generally will segv
if the first parameter is NULL.

mx.c

diff --git a/mx.c b/mx.c
index 6cfed3726b67efa146f15d13647b8bfbba1ce217..e8fae7e7d15869120ec4fd46c647945581d94854 100644 (file)
--- a/mx.c
+++ b/mx.c
@@ -567,7 +567,14 @@ CONTEXT *mx_open_mailbox (const char *path, int flags, CONTEXT *pctx)
   if (!ctx)
     ctx = safe_malloc (sizeof (CONTEXT));
   memset (ctx, 0, sizeof (CONTEXT));
+
   ctx->path = safe_strdup (path);
+  if (!ctx->path)
+  {
+    if (!pctx)
+      FREE (&ctx);
+    return NULL;
+  }
   if (! (ctx->realpath = realpath (ctx->path, NULL)) )
     ctx->realpath = safe_strdup (ctx->path);