X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=crypt.c;h=54d60fe82eccea567c413d9c9dced6e39807e87e;hp=d8339fe5f3b8328608b99462d4d928066dde0b8f;hb=4eaac5c4a87b84ea9ec0668b4e088ac27e2d1106;hpb=c3e57678c8be193fc137854020f3a90887be97c9 diff --git a/crypt.c b/crypt.c index d8339fe..54d60fe 100644 --- a/crypt.c +++ b/crypt.c @@ -17,12 +17,18 @@ #endif #include "mutt.h" +#include "ascii.h" +#include "handler.h" #include "mutt_curses.h" #include "mime.h" #include "copy.h" #include "mutt_crypt.h" #include "pgp.h" +#include "lib/mem.h" +#include "lib/intl.h" +#include "lib/str.h" + #include #include #include @@ -45,7 +51,7 @@ /* print the current time to avoid spoofing of the signature output */ -void crypt_current_time (STATE * s, char *app_name) +void crypt_current_time (STATE * s, const char *app_name) { time_t t; char p[STRING], tmp[STRING]; @@ -382,7 +388,7 @@ int mutt_is_application_smime (BODY * m) /* no .p7c, .p10 support yet. */ - len = mutt_strlen (t) - 4; + len = str_len (t) - 4; if (len > 0 && *(t + len) == '.') { len++; if (!ascii_strcasecmp ((t + len), "p7m")) @@ -481,7 +487,7 @@ int crypt_write_signed (BODY * a, STATE * s, const char *tempfile) return -1; } - fseek (s->fpin, a->hdr_offset, 0); + fseeko (s->fpin, a->hdr_offset, 0); bytes = a->length + a->offset - a->hdr_offset; hadcr = 0; while (bytes > 0) { @@ -524,7 +530,7 @@ void convert_to_7bit (BODY * a) convert_to_7bit (a->parts); } else if (a->type == TYPEMESSAGE && - mutt_strcasecmp (a->subtype, "delivery-status")) { + str_casecmp (a->subtype, "delivery-status")) { if (a->encoding != ENC7BIT) mutt_message_to_7bit (a, NULL); } @@ -701,7 +707,7 @@ static void crypt_fetch_signatures (BODY *** signatures, BODY * a, int *n) crypt_fetch_signatures (signatures, a->parts, n); else { if ((*n % 5) == 0) - safe_realloc (signatures, (*n + 6) * sizeof (BODY **)); + mem_realloc (signatures, (*n + 6) * sizeof (BODY **)); (*signatures)[(*n)++] = a; } @@ -713,7 +719,7 @@ static void crypt_fetch_signatures (BODY *** signatures, BODY * a, int *n) * This routine verifies a "multipart/signed" body. */ -void mutt_signed_handler (BODY * a, STATE * s) +int mutt_signed_handler (BODY * a, STATE * s) { char tempfile[_POSIX_PATH_MAX]; char *protocol; @@ -725,9 +731,10 @@ void mutt_signed_handler (BODY * a, STATE * s) int sigcnt = 0; int i; short goodsig = 1; + int rc = 0; if (!WithCrypto) - return; + return (-1); protocol = mutt_get_parameter ("protocol", a->parameter); a = a->parts; @@ -751,30 +758,28 @@ void mutt_signed_handler (BODY * a, STATE * s) /* consistency check */ if (!(a && a->next && a->next->type == protocol_major && - !mutt_strcasecmp (a->next->subtype, protocol_minor))) { + !str_casecmp (a->next->subtype, protocol_minor))) { state_attach_puts (_("[-- Error: " "Inconsistent multipart/signed structure! --]\n\n"), s); - mutt_body_handler (a, s); - return; + return mutt_body_handler (a, s); } if ((WithCrypto & APPLICATION_PGP) && protocol_major == TYPEAPPLICATION - && !mutt_strcasecmp (protocol_minor, "pgp-signature")); + && !str_casecmp (protocol_minor, "pgp-signature")); else if ((WithCrypto & APPLICATION_SMIME) && protocol_major == TYPEAPPLICATION - && !(mutt_strcasecmp (protocol_minor, "x-pkcs7-signature") - && mutt_strcasecmp (protocol_minor, "pkcs7-signature"))); + && !(str_casecmp (protocol_minor, "x-pkcs7-signature") + && str_casecmp (protocol_minor, "pkcs7-signature"))); else if (protocol_major == TYPEMULTIPART - && !mutt_strcasecmp (protocol_minor, "mixed")); + && !str_casecmp (protocol_minor, "mixed")); else { state_printf (s, _("[-- Error: " "Unknown multipart/signed protocol %s! --]\n\n"), protocol); - mutt_body_handler (a, s); - return; + return mutt_body_handler (a, s); } if (s->flags & M_DISPLAY) { @@ -787,7 +792,7 @@ void mutt_signed_handler (BODY * a, STATE * s) for (i = 0; i < sigcnt; i++) { if ((WithCrypto & APPLICATION_PGP) && signatures[i]->type == TYPEAPPLICATION - && !mutt_strcasecmp (signatures[i]->subtype, "pgp-signature")) { + && !str_casecmp (signatures[i]->subtype, "pgp-signature")) { if (crypt_pgp_verify_one (signatures[i], s, tempfile) != 0) goodsig = 0; @@ -797,8 +802,8 @@ void mutt_signed_handler (BODY * a, STATE * s) if ((WithCrypto & APPLICATION_SMIME) && signatures[i]->type == TYPEAPPLICATION && - (!mutt_strcasecmp (signatures[i]->subtype, "x-pkcs7-signature") - || !mutt_strcasecmp (signatures[i]->subtype, + (!str_casecmp (signatures[i]->subtype, "x-pkcs7-signature") + || !str_casecmp (signatures[i]->subtype, "pkcs7-signature"))) { if (crypt_smime_verify_one (signatures[i], s, tempfile) != 0) goodsig = 0; @@ -821,15 +826,17 @@ void mutt_signed_handler (BODY * a, STATE * s) state_attach_puts (_("[-- The following data is signed --]\n\n"), s); - FREE (&signatures); + mem_free (&signatures); } else state_attach_puts (_("[-- Warning: Can't find any signatures. --]\n\n"), s); } - mutt_body_handler (a, s); + rc = mutt_body_handler (a, s); if (s->flags & M_DISPLAY && sigcnt) state_attach_puts (_("\n[-- End of signed data --]\n"), s); + + return (rc); }