]> diplodocus.org Git - nmh/commitdiff
Fixed failure reported by Valdis of post to retrieve login and
authorDavid Levine <levinedl@acm.org>
Fri, 3 May 2013 01:36:21 +0000 (20:36 -0500)
committerDavid Levine <levinedl@acm.org>
Fri, 3 May 2013 01:36:21 +0000 (20:36 -0500)
password with legacy credentials.

mts/smtp/smtp.c
sbr/credentials.c

index 98c20d83c4faf85328b774038265406646b41894..7177e5d59ea330f086a2323f4576dcbb0042980f 100644 (file)
@@ -854,7 +854,7 @@ sm_auth_sasl(char *user, int saslssf, char *mechlist, char *inhost)
        strncpy(host, inhost, sizeof(host) - 1);
     }
 
-    nmh_get_credentials (host, user, 1, &creds);
+    nmh_get_credentials (host, user, 0, &creds);
 
     /* It's OK to copy the creds pointers here.  The callbacks that
        use them will only be called before this function returns. */
index 9d4e41c29ab87108432b6062addccb5a73234237..2b9e843e6c5b79aeee9dc5363c10bb45acb186d9 100644 (file)
@@ -48,14 +48,11 @@ nmh_get_credentials (char *host, char *user, int sasl, nmh_creds_t creds) {
     creds->host = host;
 
     if (cred_style == NULL  ||  ! strcmp (cred_style, "legacy")) {
-        /* This is what inc.c and msgchk.c used to contain. */
-        if (user == NULL) {
-            creds->user = getusername ();
-        }
         if (sasl) {
+            /* This is what inc.c and msgchk.c used to contain. */
+            /* Only inc.c and msgchk.c do this.  smtp.c doesn't. */
+            creds->user = user == NULL  ?  getusername ()  :  user;
             creds->password = getusername ();
-        } else {
-            ruserpass (host, &creds->user, &creds->password);
         }
     } else if (! strncasecmp (cred_style, "file:", 5)) {
         /*
@@ -67,8 +64,11 @@ nmh_get_credentials (char *host, char *user, int sasl, nmh_creds_t creds) {
          *    credentials file didn't have a "default" token)
          */
         creds->user = user;
-        ruserpass (host, &creds->user, &creds->password);
+    } else {
+        admonish (NULL, "unknown credentials style %s", cred_style);
+        return NOTOK;
     }
 
+    ruserpass (host, &creds->user, &creds->password);
     return OK;
 }