if (!WithCrypto)
return;
- char tempfname[PATH_MAX];
-
- mutt_mktemp(tempfname, sizeof(tempfname));
- FILE *fp_out = mutt_file_fopen(tempfname, "w");
+ struct Buffer *tempfname = mutt_buffer_pool_get();
+ mutt_buffer_mktemp(tempfname);
+ FILE *fp_out = mutt_file_fopen(mutt_b2s(tempfname), "w");
if (!fp_out)
{
- mutt_perror(tempfname);
- return;
+ mutt_perror(mutt_b2s(tempfname));
+ goto cleanup;
}
if (WithCrypto & APPLICATION_PGP)
mutt_endwin();
puts(_("Trying to extract PGP keys...\n"));
- crypt_pgp_invoke_import(tempfname);
+ crypt_pgp_invoke_import(mutt_b2s(tempfname));
}
if (((WithCrypto & APPLICATION_SMIME) != 0) && (e->security & APPLICATION_SMIME))
{
mutt_endwin();
puts(_("Trying to extract S/MIME certificates..."));
- crypt_smime_invoke_import(tempfname, mbox);
+ crypt_smime_invoke_import(mutt_b2s(tempfname), mbox);
}
}
if (isendwin())
mutt_any_key_to_continue(NULL);
- mutt_file_unlink(tempfname);
+ mutt_file_unlink(mutt_b2s(tempfname));
if (WithCrypto & APPLICATION_PGP)
OptDontHandlePgpKeys = false;
+
+cleanup:
+ mutt_buffer_pool_release(&tempfname);
}
/**
struct Body **signatures = NULL;
int sigcnt = 0;
int rc = 0;
+ struct Buffer *tempfile = NULL;
a = a->parts;
SecurityFlags signed_type = mutt_is_multipart_signed(b);
if (sigcnt != 0)
{
- char tempfile[PATH_MAX];
- mutt_mktemp(tempfile, sizeof(tempfile));
+ tempfile = mutt_buffer_pool_get();
+ mutt_buffer_mktemp(tempfile);
bool goodsig = true;
- if (crypt_write_signed(a, s, tempfile) == 0)
+ if (crypt_write_signed(a, s, mutt_b2s(tempfile)) == 0)
{
for (int i = 0; i < sigcnt; i++)
{
(signatures[i]->type == TYPE_APPLICATION) &&
(mutt_str_strcasecmp(signatures[i]->subtype, "pgp-signature") == 0))
{
- if (crypt_pgp_verify_one(signatures[i], s, tempfile) != 0)
+ if (crypt_pgp_verify_one(signatures[i], s, mutt_b2s(tempfile)) != 0)
goodsig = false;
continue;
(mutt_str_strcasecmp(signatures[i]->subtype,
"pkcs7-signature") == 0)))
{
- if (crypt_smime_verify_one(signatures[i], s, tempfile) != 0)
+ if (crypt_smime_verify_one(signatures[i], s, mutt_b2s(tempfile)) != 0)
goodsig = false;
continue;
}
}
- mutt_file_unlink(tempfile);
+ mutt_file_unlink(mutt_b2s(tempfile));
+ mutt_buffer_pool_release(&tempfile);
b->goodsig = goodsig;
b->badsig = !goodsig;
* @param infile File to read
* @retval ptr Filename of temporary file containing certificate
*/
-static char *smime_extract_certificate(char *infile)
+static char *smime_extract_certificate(const char *infile)
{
char pk7out[PATH_MAX], certfile[PATH_MAX];
pid_t pid;
/**
* smime_class_invoke_import - Implements CryptModuleSpecs::smime_invoke_import()
*/
-void smime_class_invoke_import(char *infile, char *mailbox)
+void smime_class_invoke_import(const char *infile, const char *mailbox)
{
char *certfile = NULL;
char buf[256];
int smime_class_decrypt_mime(FILE *fp_in, FILE **fp_out, struct Body *b, struct Body **cur);
char * smime_class_find_keys(struct AddressList *addrlist, bool oppenc_mode);
void smime_class_getkeys(struct Envelope *env);
-void smime_class_invoke_import(char *infile, char *mailbox);
+void smime_class_invoke_import(const char *infile, const char *mailbox);
int smime_class_send_menu(struct Email *e);
struct Body *smime_class_sign_message(struct Body *a);
bool smime_class_valid_passphrase(void);