]> granicus.if.org Git - neomutt/commitdiff
Fix crash if no from is set or founds 598/head
authorWerner Fink <werner@suse.de>
Tue, 30 May 2017 12:52:12 +0000 (12:52 +0000)
committerRichard Russon <rich@flatcap.org>
Mon, 5 Jun 2017 13:37:29 +0000 (14:37 +0100)
On multi folder mailbox setup and without a set 'From:' line in
~/.muttrc the mutt crash with SIGSEGV on a NULL pointer at
msg->env->from

Fixes: #577
ncrypt/crypt.c

index 0b5aa83682b65e2ff6fed73e5ccd6fb311e0ef54..6da4821415f3f45d969f3bc4283b082c5eeecc90 100644 (file)
@@ -181,11 +181,20 @@ int mutt_protect(struct Header *msg, char *keylist)
   if (option(OPTCRYPTUSEPKA) && (msg->security & SIGN))
   {
     /* Set sender (necessary for e.g. PKA).  */
+    const char *mailbox = NULL;
+    const struct Address *from = msg->env->from;
+
+    if (!from)
+      from = mutt_default_from();
+
+    mailbox = from->mailbox;
+    if (!mailbox && EnvFrom)
+      mailbox = EnvFrom->mailbox;
 
     if ((WithCrypto & APPLICATION_SMIME) && (msg->security & APPLICATION_SMIME))
-      crypt_smime_set_sender(msg->env->from->mailbox);
+      crypt_smime_set_sender(mailbox);
     else if ((WithCrypto & APPLICATION_PGP) && (msg->security & APPLICATION_PGP))
-      crypt_pgp_set_sender(msg->env->from->mailbox);
+      crypt_pgp_set_sender(mailbox);
   }
 
   if (msg->security & SIGN)