Fix support of $spam_ variables at delivery time. Bug 1647
[exim.git] / src / src / auths / auth-spa.c
index bd7fd41ed0a8fc68c782638c9e928ee0f17ce652..9abc7b7789a939f05fbbadbed450620d2f4405c1 100644 (file)
@@ -1,5 +1,3 @@
-/* $Cambridge: exim/src/src/auths/auth-spa.c,v 1.2 2004/12/29 10:55:58 ph10 Exp $ */
-
 /*************************************************
 *     Exim - an Internet mail transport agent    *
 *************************************************/
@@ -85,6 +83,13 @@ int main (int argc, char ** argv)
 
        challenge_str = argv [3];
 
+       if (spa_base64_to_bits ((char *)&challenge, sizeof(challenge),
+                (const char *)(challenge_str))<0)
+       {
+                printf("bad base64 data in challenge: %s\n", challenge_str);
+                exit (1);
+       }
+
        spa_build_auth_response (&challenge, &response, username, password);
        spa_bits_to_base64 (msgbuf, (unsigned char*)&response,
                spa_request_length(&response));
@@ -363,7 +368,7 @@ void mdfour (unsigned char *out, unsigned char *in, int n);
 static const char base64digits[] =
   "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
 
-#define BAD    -1
+#define BAD    (char) -1
 static const char base64val[] = {
   BAD, BAD, BAD, BAD, BAD, BAD, BAD, BAD, BAD, BAD, BAD, BAD, BAD, BAD, BAD,
     BAD,
@@ -1231,7 +1236,7 @@ char versionString[] = "libntlm version 0.21";
 
 #define spa_bytes_add(ptr, header, buf, count) \
 { \
-if (buf && count) \
+if (buf != NULL  &&  count) \
   { \
   SSVAL(&ptr->header.len,0,count); \
   SSVAL(&ptr->header.maxlen,0,count); \