X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=cram.c;h=cf33393ebb9662e6a69ae8eb4352d35ee6c3570e;hb=7f6138ffd4935043382ce5f867ee9e177e0a9787;hp=e17b714745a6091e45f8f08720d18aeb37987b3f;hpb=57500dd4aab9170c3aaeca82b80305aa63142a64;p=~andy%2Ffetchmail diff --git a/cram.c b/cram.c index e17b7147..cf33393e 100644 --- a/cram.c +++ b/cram.c @@ -15,10 +15,10 @@ #include "socket.h" #include "i18n.h" -#include "md5.h" +#include "fm_md5.h" -void hmac_md5 (unsigned char *password, size_t pass_len, - unsigned char *challenge, size_t chal_len, +void hmac_md5 (const unsigned char *password, size_t pass_len, + const unsigned char *challenge, size_t chal_len, unsigned char *response, size_t resp_len) { int i; @@ -60,16 +60,16 @@ void hmac_md5 (unsigned char *password, size_t pass_len, MD5Final (response, &ctx); } -int do_cram_md5 (int sock, char *command, struct query *ctl, char *strip) +int do_cram_md5 (int sock, const char *command, struct query *ctl, const char *strip) /* authenticate as per RFC2195 */ { int result; int len; - unsigned char buf1[1024]; - unsigned char msg_id[768]; + char buf1[1024]; + char msg_id[768]; unsigned char response[16]; - unsigned char reply[1024]; - unsigned char *respdata; + char reply[1024]; + char *respdata; gen_send (sock, "%s CRAM-MD5", command); @@ -94,7 +94,7 @@ int do_cram_md5 (int sock, char *command, struct query *ctl, char *strip) if (len < 0) { report (stderr, GT_("could not decode BASE64 challenge\n")); return PS_AUTHFAIL; - } else if (len < sizeof (msg_id)) { + } else if ((size_t)len < sizeof (msg_id)) { msg_id[len] = 0; } else { msg_id[sizeof (msg_id)-1] = 0; @@ -110,15 +110,11 @@ int do_cram_md5 (int sock, char *command, struct query *ctl, char *strip) * (including angle-brackets). */ - hmac_md5(ctl->password, strlen(ctl->password), - msg_id, strlen (msg_id), + hmac_md5((unsigned char *)ctl->password, strlen(ctl->password), + (unsigned char *)msg_id, strlen (msg_id), response, sizeof (response)); -#ifdef HAVE_SNPRINTF snprintf (reply, sizeof(reply), -#else - sprintf(reply, -#endif "%s %02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x", ctl->remotename, response[0], response[1], response[2], response[3], @@ -131,7 +127,7 @@ int do_cram_md5 (int sock, char *command, struct query *ctl, char *strip) /* ship the authentication back, accept the server's responses */ /* PMDF5.2 IMAP has a bug that requires this to be a single write */ suppress_tags = TRUE; - result = gen_transact(sock, buf1, sizeof(buf1)); + result = gen_transact(sock, "%s", buf1); suppress_tags = FALSE; if (result) return(result);