diff options
author | Kevin McCarthy <kevin@8t8.us> | 2019-10-18 14:21:19 +0800 |
---|---|---|
committer | Kevin McCarthy <kevin@8t8.us> | 2019-10-18 14:21:19 +0800 |
commit | e27225519f79bdd50299fd209abd93a218d95ba3 (patch) | |
tree | 32160f416526b0c0d1281941b35f44856fdd35eb /pgp.c | |
parent | c1f9f00f6890eaaeb98af5cbe2a0aaf95a213431 (diff) |
Convert pgp_verify_one() to use buffer pool.
Diffstat (limited to 'pgp.c')
-rw-r--r-- | pgp.c | 35 |
1 files changed, 20 insertions, 15 deletions
@@ -811,37 +811,39 @@ int pgp_check_traditional (FILE *fp, BODY *b, int just_one) int pgp_verify_one (BODY *sigbdy, STATE *s, const char *tempfile) { - char sigfile[_POSIX_PATH_MAX], pgperrfile[_POSIX_PATH_MAX]; + BUFFER *sigfile = NULL, *pgperrfile = NULL; FILE *fp, *pgpout, *pgperr; pid_t thepid; int badsig = -1; int rv; - snprintf (sigfile, sizeof (sigfile), "%s.asc", tempfile); + sigfile = mutt_buffer_pool_get (); + pgperrfile = mutt_buffer_pool_get (); - if (!(fp = safe_fopen (sigfile, "w"))) + mutt_buffer_printf (sigfile, "%s.asc", tempfile); + if (!(fp = safe_fopen (mutt_b2s (sigfile), "w"))) { - mutt_perror(sigfile); - return -1; + mutt_perror (mutt_b2s (sigfile)); + goto cleanup; } fseeko (s->fpin, sigbdy->offset, 0); mutt_copy_bytes (s->fpin, fp, sigbdy->length); safe_fclose (&fp); - mutt_mktemp (pgperrfile, sizeof (pgperrfile)); - if (!(pgperr = safe_fopen(pgperrfile, "w+"))) + mutt_buffer_mktemp (pgperrfile); + if (!(pgperr = safe_fopen (mutt_b2s (pgperrfile), "w+"))) { - mutt_perror(pgperrfile); - unlink(sigfile); - return -1; + mutt_perror (mutt_b2s (pgperrfile)); + unlink (mutt_b2s (sigfile)); + goto cleanup; } crypt_current_time (s, "PGP"); if ((thepid = pgp_invoke_verify (NULL, &pgpout, NULL, -1, -1, fileno(pgperr), - tempfile, sigfile)) != -1) + tempfile, mutt_b2s (sigfile))) != -1) { if (pgp_copy_checksig (pgpout, s->fpout) >= 0) badsig = 0; @@ -851,7 +853,7 @@ int pgp_verify_one (BODY *sigbdy, STATE *s, const char *tempfile) fflush (pgperr); rewind (pgperr); - if (pgp_copy_checksig (pgperr, s->fpout) >= 0) + if (pgp_copy_checksig (pgperr, s->fpout) >= 0) badsig = 0; if ((rv = mutt_wait_filter (thepid))) @@ -864,11 +866,14 @@ int pgp_verify_one (BODY *sigbdy, STATE *s, const char *tempfile) state_attach_puts (_("[-- End of PGP output --]\n\n"), s); - mutt_unlink (sigfile); - mutt_unlink (pgperrfile); + mutt_unlink (mutt_b2s (sigfile)); + mutt_unlink (mutt_b2s (pgperrfile)); - dprint (1, (debugfile, "pgp_verify_one: returning %d.\n", badsig)); +cleanup: + mutt_buffer_pool_release (&sigfile); + mutt_buffer_pool_release (&pgperrfile); + dprint (1, (debugfile, "pgp_verify_one: returning %d.\n", badsig)); return badsig; } |