Backport fix from trunk for SASL bug.
[mmh] / mts / smtp / smtp.c
index 63aef40..9527a5e 100644 (file)
@@ -959,7 +959,7 @@ bad_data:
     free (cp);
 
     {
-#ifdef HAVE_ST_BLKSIZE
+#ifdef HAVE_STRUCT_STAT_ST_BLKSIZE
        struct stat st;
 
        if (fstat (fileno (sm_wfp), &st) == NOTOK || (cc = st.st_blksize) < BUFSIZ)
@@ -1246,7 +1246,7 @@ sm_auth_sasl(char *user, char *mechlist, char *host)
            result = sasl_decode64(sm_reply.text, sm_reply.length,
                                   outbuf, sizeof(outbuf), &outlen);
        
-           if (result != SASL_OK) {
+           if (result != SASL_OK && result != SASL_CONTINUE) {
                smtalk(SM_AUTH, "*");
                sm_ierror("SASL base64 decode failed: %s",
                          sasl_errstring(result, NULL, NULL));
@@ -1570,7 +1570,8 @@ static int
 smhear (void)
 {
     int i, code, cont, bc, rc, more;
-    char *bp, *rp;
+    unsigned char *bp;
+    char *rp;
     char **ehlo, buffer[BUFSIZ];
 
     if (doingEHLO) {