while (!feof(index)) {
if (fgets(buf, sizeof(buf), index)) cert_num++;
}
- fclose(index);
+ safe_fclose (&index);
FOREVER
{
cur++;
}
- fclose(index);
+ safe_fclose (&index);
/* Make Helpstring */
helpstr[0] = 0;
strcat (helpstr, buf); /* __STRCAT_CHECKED__ */
/* Create the menu */
- menu = mutt_new_menu();
+ menu = mutt_new_menu(MENU_SMIME);
menu->max = cur;
menu->make_entry = smime_entry;
- menu->menu = MENU_SMIME;
menu->help = helpstr;
menu->data = Table;
menu->title = title;
if (numFields < 2)
continue;
if (mailbox && public &&
- (!fields[4] ||
- *fields[4] == 'i' || *fields[4] == 'e' || *fields[4] == 'r'))
+ (*fields[4] == 'i' || *fields[4] == 'e' || *fields[4] == 'r'))
continue;
if (found)
default: abort ();
}
- *last = rfc822_cpy_adr (p);
+ *last = rfc822_cpy_adr (p, 0);
while (*last)
last = &((*last)->next);
}
mutt_mktemp (tmpfname);
if ((fpout = safe_fopen (tmpfname, "w+")) == NULL)
{
- fclose (fperr);
+ safe_fclose (&fperr);
mutt_perror (tmpfname);
return 1;
}
SmimeGetCertEmailCommand))== -1)
{
mutt_message (_("Error: unable to create OpenSSL subprocess!"));
- fclose (fperr);
- fclose (fpout);
+ safe_fclose (&fperr);
+ safe_fclose (&fpout);
return 1;
}
}
else if(copy) ret = 2;
- fclose (fpout);
- fclose (fperr);
+ safe_fclose (&fpout);
+ safe_fclose (&fperr);
return ret;
}
mutt_mktemp (pk7out);
if ((fpout = safe_fopen (pk7out, "w+")) == NULL)
{
- fclose (fperr);
+ safe_fclose (&fperr);
mutt_perror (pk7out);
return NULL;
}
SmimePk7outCommand))== -1)
{
mutt_any_key_to_continue (_("Error: unable to create OpenSSL subprocess!"));
- fclose (fperr);
- fclose (fpout);
+ safe_fclose (&fperr);
+ safe_fclose (&fpout);
mutt_unlink (pk7out);
return NULL;
}
{
mutt_perror (pk7out);
mutt_copy_stream (fperr, stdout);
- fclose (fpout);
- fclose (fperr);
+ safe_fclose (&fpout);
+ safe_fclose (&fperr);
mutt_unlink (pk7out);
return NULL;
}
- fclose (fpout);
+ safe_fclose (&fpout);
mutt_mktemp (certfile);
if ((fpout = safe_fopen (certfile, "w+")) == NULL)
{
- fclose (fperr);
+ safe_fclose (&fperr);
mutt_unlink (pk7out);
mutt_perror (certfile);
return NULL;
SmimeGetCertCommand))== -1)
{
mutt_any_key_to_continue (_("Error: unable to create OpenSSL subprocess!"));
- fclose (fperr);
- fclose (fpout);
+ safe_fclose (&fperr);
+ safe_fclose (&fpout);
mutt_unlink (pk7out);
mutt_unlink (certfile);
return NULL;
if (empty)
{
mutt_copy_stream (fperr, stdout);
- fclose (fpout);
- fclose (fperr);
+ safe_fclose (&fpout);
+ safe_fclose (&fperr);
mutt_unlink (certfile);
return NULL;
}
- fclose (fpout);
- fclose (fperr);
+ safe_fclose (&fpout);
+ safe_fclose (&fperr);
return safe_strdup (certfile);
}
mutt_mktemp (certfile);
if ((fpout = safe_fopen (certfile, "w+")) == NULL)
{
- fclose (fperr);
+ safe_fclose (&fperr);
mutt_perror (certfile);
return NULL;
}
SmimeGetSignerCertCommand))== -1)
{
mutt_any_key_to_continue (_("Error: unable to create OpenSSL subprocess!"));
- fclose (fperr);
- fclose (fpout);
+ safe_fclose (&fperr);
+ safe_fclose (&fpout);
mutt_unlink (pk7out);
mutt_unlink (certfile);
return NULL;
mutt_endwin (NULL);
mutt_copy_stream (fperr, stdout);
mutt_any_key_to_continue (NULL);
- fclose (fpout);
- fclose (fperr);
+ safe_fclose (&fpout);
+ safe_fclose (&fperr);
mutt_unlink (certfile);
return NULL;
}
- fclose (fpout);
- fclose (fperr);
+ safe_fclose (&fpout);
+ safe_fclose (&fperr);
return safe_strdup (certfile);
}
mutt_mktemp (tmpfname);
if ((fpout = safe_fopen (tmpfname, "w+")) == NULL)
{
- fclose (fperr);
+ safe_fclose (&fperr);
mutt_perror (tmpfname);
return;
}
}
fputs (buf, smimein);
fputc ('\n', smimein);
- fclose(smimein);
+ safe_fclose (&smimein);
mutt_wait_filter (thepid);
mutt_copy_stream (fpout, stdout);
mutt_copy_stream (fperr, stdout);
- fclose (fpout);
- fclose (fperr);
+ safe_fclose (&fpout);
+ safe_fclose (&fperr);
}
mutt_copy_message (fpout, Context, h, 0, 0);
fflush(fpout);
- fclose (fpout);
+ safe_fclose (&fpout);
if (h->env->from)
{
if ((smimeerr = safe_fopen (smimeerrfile, "w+")) == NULL)
{
mutt_perror (smimeerrfile);
- fclose (fpout);
+ safe_fclose (&fpout);
mutt_unlink (tempfile);
return NULL;
}
{
mutt_perror (smimeinfile);
mutt_unlink (tempfile);
- fclose (fpout);
- fclose (smimeerr);
+ safe_fclose (&fpout);
+ safe_fclose (&smimeerr);
return NULL;
}
mutt_write_mime_header (a, fptmp);
fputc ('\n', fptmp);
mutt_write_mime_body (a, fptmp);
- fclose (fptmp);
+ safe_fclose (&fptmp);
if ((thepid =
smime_invoke_encrypt (&smimein, NULL, NULL, -1,
fileno (fpout), fileno (smimeerr),
smimeinfile, certfile)) == -1)
{
- fclose (smimeerr);
+ safe_fclose (&smimeerr);
mutt_unlink (smimeinfile);
mutt_unlink (certfile);
return (NULL);
}
- fclose (smimein);
+ safe_fclose (&smimein);
mutt_wait_filter (thepid);
mutt_unlink (smimeinfile);
fflush (fpout);
rewind (fpout);
empty = (fgetc (fpout) == EOF);
- fclose (fpout);
+ safe_fclose (&fpout);
fflush (smimeerr);
rewind (smimeerr);
err = 1;
fputs (buf, stdout);
}
- fclose (smimeerr);
+ safe_fclose (&smimeerr);
/* pause if there is any error output from SMIME */
if (err)
pid_t thepid;
char *intermediates = smime_get_field_from_db(NULL, SmimeDefaultKey, 1, 1);
+ if (!SmimeDefaultKey)
+ {
+ mutt_error _("Can't sign: No key specified. Use Sign As.");
+ FREE (&intermediates);
+ return NULL;
+ }
+
if (!intermediates)
{
mutt_message(_("Warning: Intermediate certificate not found."));
if ((sfp = safe_fopen (filetosign, "w+")) == NULL)
{
mutt_perror (filetosign);
+ if (intermediates != SmimeDefaultKey)
+ FREE (&intermediates);
return NULL;
}
if ((smimeout = safe_fopen (signedfile, "w+")) == NULL)
{
mutt_perror (signedfile);
- fclose (sfp);
+ safe_fclose (&sfp);
mutt_unlink (filetosign);
+ if (intermediates != SmimeDefaultKey)
+ FREE (&intermediates);
return NULL;
}
mutt_write_mime_header (a, sfp);
fputc ('\n', sfp);
mutt_write_mime_body (a, sfp);
- fclose (sfp);
+ safe_fclose (&sfp);
-1, fileno (smimeout), -1, filetosign)) == -1)
{
mutt_perror _("Can't open OpenSSL subprocess!");
- fclose (smimeout);
+ safe_fclose (&smimeout);
mutt_unlink (signedfile);
mutt_unlink (filetosign);
+ if (intermediates != SmimeDefaultKey)
+ FREE (&intermediates);
return NULL;
}
fputs (SmimePass, smimein);
fputc ('\n', smimein);
- fclose (smimein);
+ safe_fclose (&smimein);
mutt_wait_filter (thepid);
err = 1;
fputs (buffer, stdout);
}
- fclose (smimeerr);
+ safe_fclose (&smimeerr);
fflush (smimeout);
rewind (smimeout);
empty = (fgetc (smimeout) == EOF);
- fclose (smimeout);
+ safe_fclose (&smimeout);
mutt_unlink (filetosign);
sigbdy->length = ftello (s->fpout);
sigbdy->offset = 0;
- fclose (s->fpout);
+ safe_fclose (&s->fpout);
/* restore final destination and substitute the tempfile for input */
s->fpout = fp;
tempfile, signedfile, 0)) != -1)
{
fflush (smimeout);
- fclose (smimeout);
+ safe_fclose (&smimeout);
if (mutt_wait_filter (thepid))
badsig = -1;
fflush (smimeerr);
rewind (smimeerr);
- line = mutt_read_line (line, &linelen, smimeerr, &lineno);
+ line = mutt_read_line (line, &linelen, smimeerr, &lineno, 0);
if (linelen && !ascii_strcasecmp (line, "verification successful"))
badsig = 0;
fflush (smimeerr);
rewind (smimeerr);
mutt_copy_stream (smimeerr, s->fpout);
- fclose (smimeerr);
+ safe_fclose (&smimeerr);
state_attach_puts (_("[-- End of OpenSSL output --]\n\n"), s);
sigbdy->offset = tmpoffset;
/* restore the original source stream */
- fclose (s->fpin);
+ safe_fclose (&s->fpin);
s->fpin = fp;
if ((smimeerr = safe_fopen (errfile, "w+")) == NULL)
{
mutt_perror (errfile);
- fclose (smimeout); smimeout = NULL;
+ safe_fclose (&smimeout); smimeout = NULL;
return NULL;
}
mutt_unlink (errfile);
if ((tmpfp = safe_fopen (tmpfname, "w+")) == NULL)
{
mutt_perror (tmpfname);
- fclose (smimeout); smimeout = NULL;
- fclose (smimeerr); smimeerr = NULL;
+ safe_fclose (&smimeout); smimeout = NULL;
+ safe_fclose (&smimeerr); smimeerr = NULL;
return NULL;
}
mutt_copy_bytes (s->fpin, tmpfp, m->length);
fflush (tmpfp);
- fclose (tmpfp);
+ safe_fclose (&tmpfp);
if ((type & ENCRYPT) &&
(thepid = smime_invoke_decrypt (&smimein, NULL, NULL, -1,
fileno (smimeout), fileno (smimeerr), tmpfname)) == -1)
{
- fclose (smimeout); smimeout = NULL;
+ safe_fclose (&smimeout); smimeout = NULL;
mutt_unlink (tmpfname);
if (s->flags & M_DISPLAY)
state_attach_puts (_("[-- Error: unable to create OpenSSL subprocess! --]\n"), s);
fileno (smimeout), fileno (smimeerr), NULL,
tmpfname, SIGNOPAQUE)) == -1)
{
- fclose (smimeout); smimeout = NULL;
+ safe_fclose (&smimeout); smimeout = NULL;
mutt_unlink (tmpfname);
if (s->flags & M_DISPLAY)
state_attach_puts (_("[-- Error: unable to create OpenSSL subprocess! --]\n"), s);
fputc ('\n', smimein);
}
- fclose (smimein);
+ safe_fclose (&smimein);
mutt_wait_filter (thepid);
mutt_unlink (tmpfname);
if ((fpout = safe_fopen (tmptmpfname, "w+")) == NULL)
{
mutt_perror(tmptmpfname);
- fclose (smimeout); smimeout = NULL;
+ safe_fclose (&smimeout); smimeout = NULL;
return NULL;
}
}
}
}
- fclose (smimeout);
+ safe_fclose (&smimeout);
smimeout = NULL;
mutt_unlink (outfile);
if (!outFile)
{
- fclose (fpout);
+ safe_fclose (&fpout);
mutt_unlink (tmptmpfname);
}
fpout = NULL;
rewind (smimeerr);
- line = mutt_read_line (line, &linelen, smimeerr, &lineno);
+ line = mutt_read_line (line, &linelen, smimeerr, &lineno, 0);
if (linelen && !ascii_strcasecmp (line, "verification successful"))
m->goodsig = 1;
FREE (&line);
m->goodsig = p->goodsig;
m->badsig = p->badsig;
}
- fclose (smimeerr);
+ safe_fclose (&smimeerr);
return (p);
}
case 2: /* (s)ign */
if(!SmimeDefaultKey)
- mutt_message _("Can't sign: No key specified. Use Sign As.");
- else
{
- msg->security |= SIGN;
- msg->security &= ~ENCRYPT;
+ *redraw = REDRAW_FULL;
+
+ if ((p = smime_ask_for_key (_("Sign as: "), NULL, 0)))
+ mutt_str_replace (&SmimeDefaultKey, p);
+ else
+ break;
}
+
+ msg->security |= SIGN;
+ msg->security &= ~ENCRYPT;
break;
case 4: /* sign (a)s */