#3945: mx_open_mailbox can call realpath(NULL,NULL) and abort -------------------------+---------------------- Reporter: tamo | Owner: mutt-dev Type: enhancement | Status: new Priority: trivial | Milestone: Component: mutt | Version: Keywords: | -------------------------+---------------------- In mx_open_mailbox (https://dev.mutt.org/trac/browser/mx.c#L570 ), mutt calls realpath with a safe_strdup'ed path:
{{{ 570 ctx->path = safe_strdup (path); 571 if (! (ctx->realpath = realpath (ctx->path, NULL)) ) 572 ctx->realpath = safe_strdup (ctx->path); }}} But safe_strdup can return 0: https://dev.mutt.org/trac/browser/lib.c#L237 {{{ 237 if (!s || !*s) 238 return 0; }}} And most (if not all) of realpath implementations don't make sure the first arg is non-NULL. So maybe we should either wrap the ctx->path with NONNULL or check it before calling realpath. {{{ ctx->path = safe_strdup (path); if (!ctx->path) { mutt_error (_("Tried to open an unnamed mailbox. Maybe your muttrc is wrong or incomplete.")); if (!pctx) FREE (&ctx); return NULL; } if (! (ctx->realpath = realpath (ctx->path, NULL)) ) ctx->realpath = safe_strdup (ctx->path); }}} I found this issue when I was reading http://openbsd- archive.7691.n7.nabble.com/mail-mutt-dumps-core-on-every-other-snapshot- td310535.html but I'm not sure if it is related. -- Ticket URL: <https://dev.mutt.org/trac/ticket/3945> Mutt <http://www.mutt.org/> The Mutt mail user agent