X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=lib-crypt%2Fpgpkey.c;h=16d9e4cb6b62c357c18f0fe6a77211064b7e85c2;hp=1a49ec23594b6cc67f4452a0a09e5f90d2a39a5c;hb=916e4872caf252a5850e64f79427b9dd7808435d;hpb=dbb9a1e16d03a2d4664d6dc6a30c721b889d4982 diff --git a/lib-crypt/pgpkey.c b/lib-crypt/pgpkey.c index 1a49ec2..16d9e4c 100644 --- a/lib-crypt/pgpkey.c +++ b/lib-crypt/pgpkey.c @@ -8,39 +8,20 @@ * please see the file GPL in the top level source directory. */ -#if HAVE_CONFIG_H -# include "config.h" -#endif - -#include -#include -#include -#include -#include +#include #include +#include #include +#include +#include -#include "mutt.h" -#include "enter.h" #include "recvattach.h" -#include "mutt_menu.h" #include "pgp.h" #include "pager.h" #include "sort.h" -#include "lib/debug.h" - -#include -#include -#include -#include -#include -#include - -#include - struct pgp_cache { char *what; char *dflt; @@ -111,18 +92,15 @@ static pgp_key_t pgp_principal_key (pgp_key_t key) */ typedef struct pgp_entry { - size_t num; + ssize_t num; pgp_uid_t *uid; } pgp_entry_t; -static const char *pgp_entry_fmt (char *dest, - size_t destlen, - char op, - const char *src, - const char *prefix, - const char *ifstring, - const char *elsestring, - unsigned long data, format_flag flags) +static const char * +pgp_entry_fmt (char *dest, ssize_t destlen, char op, + const char *src, const char *prefix, + const char *ifstring, const char *elsestring, + unsigned long data, format_flag flags) { char fmt[16]; pgp_entry_t *entry; @@ -150,7 +128,7 @@ static const char *pgp_entry_fmt (char *dest, char buf2[SHORT_STRING], *p; int do_locales; struct tm *tm; - size_t len; + ssize_t len; p = dest; @@ -264,7 +242,7 @@ static const char *pgp_entry_fmt (char *dest, return (src); } -static void pgp_entry (char *s, size_t l, MUTTMENU * menu, int num) +static void pgp_entry (char *s, ssize_t l, MUTTMENU * menu, int num) { pgp_uid_t **KeyTable = (pgp_uid_t **) menu->data; pgp_entry_t entry; @@ -522,14 +500,15 @@ static pgp_key_t pgp_select_key (pgp_key_t keys, address_t * p, const char *s) case OP_VERIFY_KEY: - mutt_mktemp (tempfile); if ((devnull = fopen ("/dev/null", "w")) == NULL) { /* __FOPEN_CHECKED__ */ mutt_perror (_("Can't open /dev/null")); break; } - if ((fp = safe_fopen (tempfile, "w")) == NULL) { - fclose (devnull); + + fp = m_tempfile (tempfile, sizeof(tempfile), NONULL(Tempdir), NULL); + if (!fp) { + m_fclose(&devnull); mutt_perror (_("Can't create temporary file")); break; @@ -547,13 +526,13 @@ static pgp_key_t pgp_select_key (pgp_key_t keys, address_t * p, const char *s) mutt_perror (_("Can't create filter")); unlink (tempfile); - fclose (fp); - fclose (devnull); + m_fclose(&fp); + m_fclose(&devnull); } mutt_wait_filter (thepid); - fclose (fp); - fclose (devnull); + m_fclose(&fp); + m_fclose(&devnull); mutt_clear_error (); snprintf (cmd, sizeof (cmd), _("Key ID: 0x%s"), pgp_keyid (pgp_principal_key @@ -583,26 +562,26 @@ static pgp_key_t pgp_select_key (pgp_key_t keys, address_t * p, const char *s) if (option (OPTPGPCHECKTRUST) && (!pgp_id_is_valid (KeyTable[menu->current]) || !pgp_id_is_strong (KeyTable[menu->current]))) { - const char *s = ""; + const char *q = ""; char buff[LONG_STRING]; if (KeyTable[menu->current]->flags & KEYFLAG_CANTUSE) - s = N_("ID is expired/disabled/revoked."); + q = N_("ID is expired/disabled/revoked."); else switch (KeyTable[menu->current]->trust & 0x03) { case 0: - s = N_("ID has undefined validity."); + q = N_("ID has undefined validity."); break; case 1: - s = N_("ID is not valid."); + q = N_("ID is not valid."); break; case 2: - s = N_("ID is only marginally valid."); + q = N_("ID is only marginally valid."); break; } snprintf (buff, sizeof (buff), - _("%s Do you really want to use the key?"), _(s)); + _("%s Do you really want to use the key?"), _(q)); if (mutt_yesorno (buff, M_NO) != M_YES) { mutt_clear_error (); @@ -704,20 +683,21 @@ BODY *pgp_make_key_attachment (char *tempf) pgp_free_key (&key); if (!tempf) { - mutt_mktemp (tempfb); + tempfp = m_tempfile (tempfb, sizeof(tempfb), NONULL(Tempdir), NULL); tempf = tempfb; + } else { + tempfp = safe_fopen(tempf, "a"); } - if ((tempfp = safe_fopen (tempf, tempf == tempfb ? "w" : "a")) == NULL) { + if (!tempfp) { mutt_perror (_("Can't create temporary file")); - return NULL; } if ((devnull = fopen ("/dev/null", "w")) == NULL) { /* __FOPEN_CHECKED__ */ mutt_perror (_("Can't open /dev/null")); - fclose (tempfp); + m_fclose(&tempfp); if (tempf == tempfb) unlink (tempf); return NULL; @@ -732,17 +712,17 @@ BODY *pgp_make_key_attachment (char *tempf) mutt_perror (_("Can't create filter")); unlink (tempf); - fclose (tempfp); - fclose (devnull); + m_fclose(&tempfp); + m_fclose(&devnull); return NULL; } mutt_wait_filter (thepid); - fclose (tempfp); - fclose (devnull); + m_fclose(&tempfp); + m_fclose(&devnull); - att = mutt_new_body (); + att = body_new(); att->filename = m_strdup(tempf); att->unlink = 1; att->use_disp = 0; @@ -758,7 +738,7 @@ BODY *pgp_make_key_attachment (char *tempf) return att; } -static LIST *pgp_add_string_to_hints (LIST * hints, const char *str) +static string_list_t *pgp_add_string_to_hints (string_list_t * hints, const char *str) { char *scratch; char *t; @@ -788,7 +768,7 @@ static pgp_key_t *pgp_get_lastp (pgp_key_t p) pgp_key_t pgp_getkeybyaddr (address_t * a, short abilities, pgp_ring_t keyring) { address_t *r, *p; - LIST *hints = NULL; + string_list_t *hints = NULL; int weak = 0; int invalid = 0; @@ -812,21 +792,15 @@ pgp_key_t pgp_getkeybyaddr (address_t * a, short abilities, pgp_ring_t keyring) mutt_message (_("Looking for keys matching \"%s\"..."), a->mailbox); keys = pgp_get_candidates (keyring, hints); - mutt_free_list (&hints); + string_list_wipe(&hints); if (!keys) return NULL; - debug_print (5, ("looking for %s <%s>\n", a->personal, a->mailbox)); - for (k = keys; k; k = kn) { kn = k->next; - debug_print (5, (" looking at key: %s\n", pgp_keyid (k))); - if (abilities && !(k->flags & abilities)) { - debug_print (5, (" insufficient abilities: Has %x, want %x\n", - k->flags, abilities)); continue; } @@ -860,7 +834,7 @@ pgp_key_t pgp_getkeybyaddr (address_t * a, short abilities, pgp_ring_t keyring) this_key_has_weak = 1; } - address_delete (&r); + address_list_wipe(&r); } if (match && !this_key_has_strong && this_key_has_invalid) @@ -904,9 +878,9 @@ pgp_key_t pgp_getkeybyaddr (address_t * a, short abilities, pgp_ring_t keyring) return NULL; } -pgp_key_t pgp_getkeybystr (char *p, short abilities, pgp_ring_t keyring) +pgp_key_t pgp_getkeybystr (const char *p, short abilities, pgp_ring_t keyring) { - LIST *hints = NULL; + string_list_t *hints = NULL; pgp_key_t keys; pgp_key_t matches = NULL; pgp_key_t *last = &matches; @@ -918,7 +892,7 @@ pgp_key_t pgp_getkeybystr (char *p, short abilities, pgp_ring_t keyring) hints = pgp_add_string_to_hints (hints, p); keys = pgp_get_candidates (keyring, hints); - mutt_free_list (&hints); + string_list_wipe(&hints); if (!keys) return NULL; @@ -932,14 +906,12 @@ pgp_key_t pgp_getkeybystr (char *p, short abilities, pgp_ring_t keyring) match = 0; for (a = k->address; a; a = a->next) { - debug_print (5, ("matching \"%s\" against key %s, \"%s\":\n", p, pgp_keyid (k), a->addr)); if (!*p || m_strcasecmp(p, pgp_keyid (k)) == 0 || (!m_strncasecmp(p, "0x", 2) && !m_strcasecmp(p + 2, pgp_keyid (k))) || (option (OPTPGPLONGIDS) && !m_strncasecmp(p, "0x", 2) && !m_strcasecmp(p + 2, k->keyid + 8)) || m_stristr(a->addr, p)) { - debug_print (5, ("match.\n")); match = 1; break; }