summaryrefslogtreecommitdiffstats
path: root/crypt-gpgme.c
diff options
context:
space:
mode:
authorBrendan Cully <brendan@kublai.com>2005-08-11 21:16:38 +0000
committerBrendan Cully <brendan@kublai.com>2005-08-11 21:16:38 +0000
commita281b7cc304ebd981afd04248edff6191d73b686 (patch)
tree11ff65492f622111dab4ce280427d8127f908165 /crypt-gpgme.c
parentb7cb2829bc6737a010bc841772922a1159bf7fc0 (diff)
Add error results to mutt_body_handlers, and check them when doing
decode-save. Closes: #1919.
Diffstat (limited to 'crypt-gpgme.c')
-rw-r--r--crypt-gpgme.c29
1 files changed, 18 insertions, 11 deletions
diff --git a/crypt-gpgme.c b/crypt-gpgme.c
index 54773b69..feb28ed9 100644
--- a/crypt-gpgme.c
+++ b/crypt-gpgme.c
@@ -1882,7 +1882,7 @@ static void copy_clearsigned (gpgme_data_t data, STATE *s, char *charset)
/* Support for classic_application/pgp */
-void pgp_gpgme_application_handler (BODY *m, STATE *s)
+int pgp_gpgme_application_handler (BODY *m, STATE *s)
{
int needpass = -1, pgp_keyblock = 0;
int clearsign = 0;
@@ -1891,7 +1891,7 @@ void pgp_gpgme_application_handler (BODY *m, STATE *s)
char buf[HUGE_STRING];
FILE *pgpout = NULL;
- gpgme_error_t err;
+ gpgme_error_t err = 0;
gpgme_data_t armored_data = NULL;
short maybe_goodsig = 1;
@@ -2130,9 +2130,11 @@ void pgp_gpgme_application_handler (BODY *m, STATE *s)
{
state_attach_puts (_("[-- Error: could not find beginning"
" of PGP message! --]\n\n"), s);
- return;
+ return -1;
}
dprint (2, (debugfile, "Leaving pgp_application_pgp handler\n"));
+
+ return err;
}
/*
@@ -2140,13 +2142,14 @@ void pgp_gpgme_application_handler (BODY *m, STATE *s)
*/
/* MIME handler for pgp/mime encrypted messages. */
-void pgp_gpgme_encrypted_handler (BODY *a, STATE *s)
+int pgp_gpgme_encrypted_handler (BODY *a, STATE *s)
{
char tempfile[_POSIX_PATH_MAX];
FILE *fpout;
BODY *tattach;
BODY *orig_body = a;
int is_signed;
+ int rc = 0;
dprint (2, (debugfile, "Entering pgp_encrypted handler\n"));
a = a->parts;
@@ -2158,7 +2161,7 @@ void pgp_gpgme_encrypted_handler (BODY *a, STATE *s)
if (s->flags & M_DISPLAY)
state_attach_puts (_("[-- Error: malformed PGP/MIME message! --]\n\n"),
s);
- return;
+ return -1;
}
/* Move forward to the application/pgp-encrypted body. */
@@ -2170,7 +2173,7 @@ void pgp_gpgme_encrypted_handler (BODY *a, STATE *s)
if (s->flags & M_DISPLAY)
state_attach_puts (_("[-- Error: could not create temporary file! "
"--]\n"), s);
- return;
+ return -1;
}
tattach = decrypt_part (a, s, fpout, 0, &is_signed);
@@ -2187,7 +2190,7 @@ void pgp_gpgme_encrypted_handler (BODY *a, STATE *s)
{
FILE *savefp = s->fpin;
s->fpin = fpout;
- mutt_body_handler (tattach, s);
+ rc = mutt_body_handler (tattach, s);
s->fpin = savefp;
}
@@ -2214,16 +2217,18 @@ void pgp_gpgme_encrypted_handler (BODY *a, STATE *s)
fclose (fpout);
mutt_unlink(tempfile);
dprint (2, (debugfile, "Leaving pgp_encrypted handler\n"));
+
+ return rc;
}
/* Support for application/smime */
-void smime_gpgme_application_handler (BODY *a, STATE *s)
+int smime_gpgme_application_handler (BODY *a, STATE *s)
{
char tempfile[_POSIX_PATH_MAX];
FILE *fpout;
BODY *tattach;
int is_signed;
-
+ int rc = 0;
dprint (2, (debugfile, "Entering smime_encrypted handler\n"));
@@ -2234,7 +2239,7 @@ void smime_gpgme_application_handler (BODY *a, STATE *s)
if (s->flags & M_DISPLAY)
state_attach_puts (_("[-- Error: could not create temporary file! "
"--]\n"), s);
- return;
+ return -1;
}
tattach = decrypt_part (a, s, fpout, 1, &is_signed);
@@ -2251,7 +2256,7 @@ void smime_gpgme_application_handler (BODY *a, STATE *s)
{
FILE *savefp = s->fpin;
s->fpin = fpout;
- mutt_body_handler (tattach, s);
+ rc = mutt_body_handler (tattach, s);
s->fpin = savefp;
}
@@ -2286,6 +2291,8 @@ void smime_gpgme_application_handler (BODY *a, STATE *s)
fclose (fpout);
mutt_unlink(tempfile);
dprint (2, (debugfile, "Leaving smime_encrypted handler\n"));
+
+ return rc;
}