X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=smime.c;h=092c1bd5d49a70f48c1c3d91f773e25346cd2b2f;hp=eb68c18cded235eeab4d790ec4cf3e72dfeb0b7f;hb=86cf852af75aa1f893b25a5fd615ac1fdb1b6033;hpb=eed5352e46df93f8921d2e6dfdc95b027bad6e1e diff --git a/smime.c b/smime.c index eb68c18..092c1bd 100644 --- a/smime.c +++ b/smime.c @@ -16,14 +16,15 @@ #include #include #include +#include + +#include #include "mutt.h" #include "enter.h" #include "handler.h" #include "mutt_curses.h" #include "mutt_menu.h" -#include "smime.h" -#include "mime.h" #include "copy.h" #include "lib/debug.h" @@ -82,10 +83,19 @@ static char SmimeIntermediateToUse[_POSIX_PATH_MAX]; /* - * Queries and passphrase handling. + * Create a format string to be used with scanf. + * To use it, write, for instance, MUTT_FORMAT(HUGE_STRING). + * + * See K&R 2nd ed, p. 231 for an explanation. */ +#define _MUTT_FORMAT_2(a,b) "%" a b +#define _MUTT_FORMAT_1(a, b) _MUTT_FORMAT_2(#a, b) +#define MUTT_FORMAT(a) _MUTT_FORMAT_1(a, "s") +/* + * Queries and passphrase handling. + */ /* these are copies from pgp.c */ @@ -147,7 +157,7 @@ static const char *_mutt_fmt_smime_command (char *dest, char buf1[LONG_STRING], buf2[LONG_STRING]; struct stat sb; - strfcpy (path, NONULL (SmimeCALocation), sizeof (path)); + m_strcpy(path, sizeof(path), NONULL(SmimeCALocation)); mutt_expand_path (path, sizeof (path)); mutt_quote_filename (buf1, sizeof (buf1), path); @@ -409,8 +419,8 @@ char *smime_ask_for_key (char *prompt, char *mailbox, short public) Table[cur].hash = hash; Table[cur].suffix = hash_suffix; - strncpy (Table[cur].email, fields[0], sizeof (Table[cur].email)); - strncpy (Table[cur].nick, fields[2], sizeof (Table[cur].nick)); + m_strcpy(Table[cur].email, sizeof(Table[cur].email), fields[0]); + m_strcpy(Table[cur].nick, sizeof(Table[cur].nick), fields[2]); Table[cur].trust = *fields[4]; Table[cur].public = public; @@ -512,7 +522,7 @@ char *smime_get_field_from_db (char *mailbox, char *query, short public, } while (fgets (buf, sizeof (buf) - 1, fp) != NULL) - if (mailbox && !(str_ncasecmp (mailbox, buf, addr_len))) { + if (mailbox && !(m_strncasecmp(mailbox, buf, addr_len))) { numFields = sscanf (buf, MUTT_FORMAT (STRING) " " MUTT_FORMAT (STRING) " " MUTT_FORMAT (STRING) " " MUTT_FORMAT (STRING) " " @@ -552,7 +562,7 @@ char *smime_get_field_from_db (char *mailbox, char *query, short public, continue; } else if (choice == M_YES) { - strfcpy (key, fields[1], sizeof (key)); + m_strcpy(key, sizeof(key), fields[1]); ask = 0; break; } @@ -560,7 +570,7 @@ char *smime_get_field_from_db (char *mailbox, char *query, short public, else { if (public) key_trust_level = *fields[4]; - strfcpy (key, fields[1], sizeof (key)); + m_strcpy(key, sizeof(key), fields[1]); } found = 1; } @@ -574,15 +584,15 @@ char *smime_get_field_from_db (char *mailbox, char *query, short public, /* query = label: return certificate. */ if (numFields >= 3 && - !(str_ncasecmp (query, fields[2], query_len))) { + !(m_strncasecmp(query, fields[2], query_len))) { ask = 0; - strfcpy (key, fields[1], sizeof (key)); + m_strcpy(key, sizeof(key), fields[1]); } /* query = certificate: return intermediate certificate. */ else if (numFields >= 4 && - !(str_ncasecmp (query, fields[1], query_len))) { + !(m_strncasecmp(query, fields[1], query_len))) { ask = 0; - strfcpy (key, fields[3], sizeof (key)); + m_strcpy(key, sizeof(key), fields[3]); } } @@ -649,7 +659,7 @@ void _smime_getkeys (char *mailbox) if (k) { /* the key used last time. */ if (*SmimeKeyToUse && - !str_casecmp (k, SmimeKeyToUse + m_strlen(SmimeKeys) + 1)) { + !m_strcasecmp(k, SmimeKeyToUse + m_strlen(SmimeKeys) + 1)) { p_delete(&k); return; } @@ -662,7 +672,7 @@ void _smime_getkeys (char *mailbox) snprintf (SmimeCertToUse, sizeof (SmimeCertToUse), "%s/%s", NONULL (SmimeCertificates), k); - if (str_casecmp (k, SmimeDefaultKey)) + if (m_strcasecmp(k, SmimeDefaultKey)) smime_void_passphrase (); p_delete(&k); @@ -670,7 +680,7 @@ void _smime_getkeys (char *mailbox) } if (*SmimeKeyToUse) { - if (!str_casecmp (SmimeDefaultKey, + if (!m_strcasecmp(SmimeDefaultKey, SmimeKeyToUse + m_strlen(SmimeKeys) + 1)) return; @@ -834,7 +844,7 @@ static int smime_handle_cert_email (char *certificate, char *mailbox, while ((fgets (email, sizeof (email), fpout))) { *(email + m_strlen(email) - 1) = '\0'; - if (str_ncasecmp (email, mailbox, m_strlen(mailbox)) == 0) + if (m_strncasecmp(email, mailbox, m_strlen(mailbox)) == 0) ret = 1; ret = ret < 0 ? 0 : ret; @@ -1564,7 +1574,7 @@ int smime_verify_one (BODY * sigbdy, STATE * s, const char *tempfile) rewind (smimeerr); line = mutt_read_line (line, &linelen, smimeerr, &lineno); - if (linelen && !str_casecmp (line, "verification successful")) + if (linelen && !m_strcasecmp(line, "verification successful")) badsig = 0; p_delete(&line); @@ -1778,7 +1788,7 @@ static BODY *smime_handle_entity (BODY * m, STATE * s, FILE * outFile) rewind (smimeerr); line = mutt_read_line (line, &linelen, smimeerr, &lineno); - if (linelen && !str_casecmp (line, "verification successful")) + if (linelen && !m_strcasecmp(line, "verification successful")) m->goodsig = 1; p_delete(&line); }