X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=imap%2Fauth_cram.c;h=7e00d6c9cfb1703e004ad1d6ce028d49c495d0fe;hp=e4ea149534c596900eda8c0a0e38c14ac57e352b;hb=1686002dbeab07d5016dcc508aeee83a5bc2a179;hpb=7f7a0be369840b290248e5b0302beb447fa1b3cd diff --git a/imap/auth_cram.c b/imap/auth_cram.c index e4ea149..7e00d6c 100644 --- a/imap/auth_cram.c +++ b/imap/auth_cram.c @@ -9,27 +9,23 @@ /* IMAP login/authentication code */ -#if HAVE_CONFIG_H -# include "config.h" -#endif +#include #include "mutt.h" #include "imap_private.h" #include "auth.h" -#include "md5.h" #define MD5_BLOCK_LEN 64 #define MD5_DIGEST_LEN 16 -#include -#include "lib/debug.h" +#include /* forward declarations */ static void hmac_md5 (const char *password, char *challenge, unsigned char *response); /* imap_auth_cram_md5: AUTH=CRAM-MD5 support. */ -imap_auth_res_t imap_auth_cram_md5 (IMAP_DATA * idata, const char *method) +imap_auth_res_t imap_auth_cram_md5 (IMAP_DATA * idata, const char *method __attribute__ ((unused))) { char ibuf[LONG_STRING * 2], obuf[LONG_STRING]; unsigned char hmac_response[MD5_DIGEST_LEN]; @@ -60,17 +56,14 @@ imap_auth_res_t imap_auth_cram_md5 (IMAP_DATA * idata, const char *method) while (rc == IMAP_CMD_CONTINUE); if (rc != IMAP_CMD_RESPOND) { - debug_print (1, ("Invalid response from server: %s\n", ibuf)); goto bail; } if ((len = mutt_from_base64 (obuf, idata->cmd.buf + 2)) == -1) { - debug_print (1, ("Error decoding base64 response.\n")); goto bail; } obuf[len] = '\0'; - debug_print (2, ("CRAM challenge: %s\n", obuf)); /* The client makes note of the data and then responds with a string * consisting of the user name, a space, and a 'digest'. The latter is @@ -94,7 +87,6 @@ imap_auth_res_t imap_auth_cram_md5 (IMAP_DATA * idata, const char *method) hmac_response[9], hmac_response[10], hmac_response[11], hmac_response[12], hmac_response[13], hmac_response[14], hmac_response[15]); - debug_print (2, ("CRAM response: %s\n", obuf)); /* XXX - ibuf must be long enough to store the base64 encoding of obuf, * plus the additional debris @@ -102,7 +94,7 @@ imap_auth_res_t imap_auth_cram_md5 (IMAP_DATA * idata, const char *method) mutt_to_base64 ((unsigned char *) ibuf, (unsigned char *) obuf, m_strlen(obuf), sizeof (ibuf) - 2); - str_cat (ibuf, sizeof (ibuf), "\r\n"); + m_strcat(ibuf, sizeof(ibuf), "\r\n"); mutt_socket_write (idata->conn, ibuf); do @@ -110,7 +102,6 @@ imap_auth_res_t imap_auth_cram_md5 (IMAP_DATA * idata, const char *method) while (rc == IMAP_CMD_CONTINUE); if (rc != IMAP_CMD_OK) { - debug_print (1, ("Error receiving server response.\n")); goto bail; } @@ -143,14 +134,14 @@ static void hmac_md5 (const char *password, char *challenge, MD5Init (&ctx); MD5Update (&ctx, (unsigned char *) password, secret_len); MD5Final (hash_passwd, &ctx); - strfcpy ((char *) secret, (char *) hash_passwd, MD5_DIGEST_LEN); + m_strcpy((char *)secret, MD5_DIGEST_LEN, (char *)hash_passwd); secret_len = MD5_DIGEST_LEN; } else - strfcpy ((char *) secret, password, sizeof (secret)); + m_strcpy((char *)secret, sizeof(secret), password); - memset (ipad, 0, sizeof (ipad)); - memset (opad, 0, sizeof (opad)); + p_clear(ipad, 1); + p_clear(opad, 1); memcpy (ipad, secret, secret_len); memcpy (opad, secret, secret_len);