{
fclose (smimeout); smimeout = NULL;
mutt_unlink (tmpfname);
- state_attach_puts (_("[-- Error: unable to create OpenSSL subprocess! --]\n"), s);
+ if (s->flags & M_DISPLAY)
+ state_attach_puts (_("[-- Error: unable to create OpenSSL subprocess! --]\n"), s);
return NULL;
}
else if ((type & SIGNOPAQUE) &&
{
fclose (smimeout); smimeout = NULL;
mutt_unlink (tmpfname);
- state_attach_puts (_("[-- Error: unable to create OpenSSL subprocess! --]\n"), s);
+ if (s->flags & M_DISPLAY)
+ state_attach_puts (_("[-- Error: unable to create OpenSSL subprocess! --]\n"), s);
return NULL;
}
size_t tmplength = b->length;
int origType = b->type;
FILE *tmpfp=NULL;
+ int rv = 0;
if (!mutt_is_application_smime (b))
return -1;
if ((*fpout = safe_fopen (tempfile, "w+")) == NULL)
{
mutt_perror (tempfile);
- return (-1);
+ rv = -1;
+ goto bail;
}
mutt_unlink (tempfile);
- *cur = smime_handle_entity (b, &s, *fpout);
+ if (!(*cur = smime_handle_entity (b, &s, *fpout)))
+ {
+ rv = -1;
+ goto bail;
+ }
+
(*cur)->goodsig = b->goodsig;
- (*cur)->badsig = b->badsig;
+ (*cur)->badsig = b->badsig;
+
+bail:
b->type = origType;
b->length = tmplength;
b->offset = tmpoffset;
- fclose (tmpfp);
-
- rewind (*fpout);
- return (0);
-
+ safe_fclose (&tmpfp);
+ if (*fpout)
+ rewind (*fpout);
+
+ return rv;
}