X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=rpa.c;h=3f236ce945c40f56154aa9e75fc033b62e2519ef;hb=98cfcef26048bba06975e68a1aad05a8bac0d65d;hp=ccc7d509d35804d3d3a48b2ed0655b5e1b1e8891;hpb=9dc0b8bd674f71f8ee422b037dc409f2dd4f9487;p=~andy%2Ffetchmail diff --git a/rpa.c b/rpa.c index ccc7d509..3f236ce9 100644 --- a/rpa.c +++ b/rpa.c @@ -21,11 +21,12 @@ #include #include #include +#include #include "socket.h" #include "fetchmail.h" -#include "md5.h" -#include "i18n.h" +#include "fm_md5.h" +#include "gettext.h" #ifdef TESTMODE extern unsigned char line1[]; @@ -35,23 +36,21 @@ extern unsigned char line3[]; extern int linecount; #endif -#ifndef NO_PROTO - /* prototypes for internal functions */ - static int POP3_rpa_resp(char* argbuf, int socket ); - static void LenAppend(char** pptr, int len); - static int LenSkip(char** pptr, int rxlen); - static int DecBase64(char* bufp); - static void EncBase64(char* bufp, int len); - static void ToUnicode(char** pptr, char delim, unsigned char* buf, int* plen, +/* prototypes for internal functions */ +static int POP3_rpa_resp(char* argbuf, int socket ); +static void LenAppend(char** pptr, int len); +static int LenSkip(char** pptr, int rxlen); +static int DecBase64(char* bufp); +static void EncBase64(char* bufp, int len); +static void ToUnicode(char** pptr, char delim, unsigned char* buf, int* plen, int conv); - static int SetRealmService(char* bufp); - static void GenChallenge(unsigned char* buf, int len); - static int DigestPassphrase(char* passphrase, +static int SetRealmService(char* bufp); +static void GenChallenge(unsigned char* buf, int len); +static int DigestPassphrase(char* passphrase, unsigned char* rbuf, int unicodeit); - static void CompUserResp(); - static int CheckUserAuth(); - static void md5(void* in, int len, unsigned char* out); -#endif +static void CompUserResp(void); +static int CheckUserAuth(void); +static void md5(const void* in, int len, unsigned char* out); /* RPA protocol definitions */ @@ -114,7 +113,7 @@ int POP3_auth_rpa (char *userid, char *passphrase, int socket) char buf [POPBUFSIZE]; char *bufp; int status,aulin,kuslin; - char* stdec[4] = { N_("Success") , + const char* stdec[4] = { N_("Success") , N_("Restricted user (something wrong with account)") , N_("Invalid userid or passphrase") , N_("Deity error") }; @@ -360,9 +359,7 @@ int POP3_auth_rpa (char *userid, char *passphrase, int socket) globals: reads outlevel. *********************************************************************/ -static int POP3_rpa_resp (argbuf,socket) -char *argbuf; -int socket; +static int POP3_rpa_resp (char *argbuf, int socket) { int ok; char buf [POPBUFSIZE]; @@ -419,10 +416,10 @@ int socket; globals: none *********************************************************************/ -static void LenAppend(pptr,len) -char **pptr; -int len; +static void LenAppend(char **pptr_, int len) { + unsigned char **pptr = (unsigned char **)pptr_; + if (len < 0x80) { **pptr = len; (*pptr)++; @@ -453,9 +450,7 @@ int len; globals: reads outlevel. *********************************************************************/ -int LenSkip(pptr,rxlen) -char **pptr; -int rxlen; +int LenSkip(char **pptr, int rxlen) { int len; char *save; @@ -515,8 +510,7 @@ int rxlen; globals: reads outlevel. *********************************************************************/ -static int DecBase64(bufp) -char *bufp; +static int DecBase64(char *bufp) { unsigned int newx, bits=0, cnt=0, i, part=0; unsigned char ch; @@ -532,7 +526,7 @@ char *bufp; else if ( ch=='+' ) newx = 62; else if ( ch=='/' ) newx = 63; else { - report(stderr, GT_("dec64 error at char %d: %x\n"), inp - bufp, ch); + report(stderr, GT_("dec64 error at char %d: %x\n"), (int)(inp - bufp), ch); return(0); } part=((part & 0x3F)*64) + newx; @@ -574,9 +568,7 @@ char *bufp; globals: reads outlevel; *********************************************************************/ -static void EncBase64(bufp,len) -char *bufp; -int len; +static void EncBase64(char *bufp, int len) { char* outp; unsigned char c1,c2,c3; @@ -869,11 +861,11 @@ static int CheckUserAuth(void) globals: reads outlevel *********************************************************************/ -static void md5(void *in_,int len,unsigned char *out) +static void md5(const void *in_,int len,unsigned char *out) { int i; MD5_CTX md5context; - unsigned char *in = in_; + const unsigned char *in = (const unsigned char *)in_; if (outlevel >= O_DEBUG) { @@ -890,7 +882,7 @@ static void md5(void *in_,int len,unsigned char *out) MD5Final( out, &md5context ); if (outlevel >= O_DEBUG) { - report(stdout, GT_("MD5 result is: \n")); + report(stdout, GT_("MD5 result is:\n")); for (i=0; i<16; i++) { report_build(stdout, "%02X ",out[i]);