char cert_path[_POSIX_PATH_MAX];
char buf[LONG_STRING], prompt[STRING];
char fields[5][STRING];
+ char key[STRING];
int numFields;
struct stat info;
- char *key=NULL, key_trust_level = 0;
+ char key_trust_level = 0;
FILE *fp;
if(!mailbox && !query) return(NULL);
addr_len = mailbox ? mutt_strlen (mailbox) : 0;
query_len = query ? mutt_strlen (query) : 0;
+
+ *key = '\0';
/* index-file format:
mailbox certfile label issuer_certfile trust_flags\n
- \n is also copied here, serving as delimitation.
-
certfile is a hash value generated by openssl.
Note that this was done according to the OpenSSL
specs on their CA-directory.
{
found = 0;
ask = 0;
- FREE (&key);
- key = NULL;
+ *key = '\0';
break;
}
else if (choice == M_NO)
}
else if (choice == M_YES)
{
- snprintf (key,mutt_strlen(key)+1, fields[1]);
+ strfcpy (key, fields[1], sizeof (key));
ask = 0;
break;
}
}
else
{
- key = safe_calloc(1, mutt_strlen(fields[1])+2);
- if (public) key_trust_level = *fields[4];
- snprintf(key, mutt_strlen(fields[1])+1, "%s", fields[1]);
-
+ if (public)
+ key_trust_level = *fields[4];
+ strfcpy (key, fields[1], sizeof (key));
}
found = 1;
}
else if(query)
{
- numFields = sscanf (buf, "%s %s %s %s %s\n", fields[0], fields[1],
- fields[2], fields[3], fields[4]);
+ numFields = sscanf (buf,
+ MUTT_FORMAT(STRING) " " MUTT_FORMAT(STRING) " "
+ MUTT_FORMAT(STRING) " " MUTT_FORMAT(STRING) " "
+ MUTT_FORMAT(STRING) "\n",
+ fields[0], fields[1],
+ fields[2], fields[3],
+ fields[4]);
/* query = label: return certificate. */
if (numFields >= 3 &&
!(mutt_strncasecmp (query, fields[2], query_len)))
{
ask = 0;
- key = safe_calloc(1, mutt_strlen(fields[1])+2);
- snprintf(key, mutt_strlen(fields[1])+1, "%s", fields[1]);
+ strfcpy (key, fields[1], sizeof (key));
}
/* query = certificate: return intermediate certificate. */
else if (numFields >= 4 &&
!(mutt_strncasecmp (query, fields[1], query_len)))
{
ask = 0;
- key = safe_calloc(1, mutt_strlen(fields[3])+2);
- snprintf(key, mutt_strlen(fields[3])+1, "%s", fields[3]);
+ strfcpy (key, fields[3], sizeof (key));
}
}
- fclose (fp);
+ safe_fclose (&fp);
if (ask)
{
mailbox);
choice = mutt_yesorno (prompt, M_NO);
if (choice == -1 || choice == M_NO)
- {
- FREE (&key);
- key = NULL;
- }
+ *key = '\0';
}
else if (key_trust_level && may_ask)
{
key, mailbox);
choice = mutt_yesorno (prompt, M_NO);
if (choice != M_YES)
- {
- FREE (&key);
- key = NULL;
- }
-
+ *key = '\0';
}
else if (key_trust_level == 'v' )
{
}
- if (key)
- {
- key[mutt_strlen(key)+1] = '\0';
- key[mutt_strlen(key)] = '\n';
- }
-
- return key;
+ /* Note: safe_strdup ("") returns NULL. */
+ return safe_strdup (key);
}
if (k)
{
- k[mutt_strlen (k)-1] = '\0';
-
/* the key used last time. */
if (*SmimeKeyToUse &&
!mutt_strcasecmp (k, SmimeKeyToUse + mutt_strlen (SmimeKeys)+1))
return NULL;
}
- keylist_size += mutt_strlen (keyID) + 1;
+ keylist_size += mutt_strlen (keyID) + 2;
safe_realloc (&keylist, keylist_size);
- sprintf (keylist + keylist_used, "%s", keyID); /* __SPRINTF_CHECKED__ */
+ sprintf (keylist + keylist_used, "%s\n", keyID); /* __SPRINTF_CHECKED__ */
keylist_used = mutt_strlen (keylist);
rfc822_free_address (&addr);
mutt_message(_("Warning: Intermediate certificate not found."));
intermediates = SmimeDefaultKey; /* so openssl won't complain in any case */
}
- else
- intermediates[mutt_strlen (intermediates)-1] = '\0';
convert_to_7bit (a); /* Signed data _must_ be in 7-bit format. */