]> diplodocus.org Git - nmh/commitdiff
Fix to commit af429a902add614e35cd76d15172a4ccb70a3be1 to
authorDavid Levine <levinedl@acm.org>
Sun, 28 Apr 2013 19:59:34 +0000 (14:59 -0500)
committerDavid Levine <levinedl@acm.org>
Sun, 28 Apr 2013 19:59:34 +0000 (14:59 -0500)
use the user found by nmh_get_credentials() in sm_auth_sasl().

mts/smtp/smtp.c

index 231bdaef38fadc7f2492b278a7f6d5a637e5b8a6..98c20d83c4faf85328b774038265406646b41894 100644 (file)
@@ -854,11 +854,12 @@ sm_auth_sasl(char *user, int saslssf, char *mechlist, char *inhost)
        strncpy(host, inhost, sizeof(host) - 1);
     }
 
        strncpy(host, inhost, sizeof(host) - 1);
     }
 
-    callbacks[SM_SASL_N_CB_USER].context = user;
-    callbacks[SM_SASL_N_CB_AUTHNAME].context = user;
-
     nmh_get_credentials (host, user, 1, &creds);
 
     nmh_get_credentials (host, user, 1, &creds);
 
+    /* It's OK to copy the creds pointers here.  The callbacks that
+       use them will only be called before this function returns. */
+    callbacks[SM_SASL_N_CB_USER].context = creds.user;
+    callbacks[SM_SASL_N_CB_AUTHNAME].context = creds.user;
     sasl_pw_context[0] = host;
     sasl_pw_context[1] = creds.user;
     sasl_pw_context[2] = creds.password;
     sasl_pw_context[0] = host;
     sasl_pw_context[1] = creds.user;
     sasl_pw_context[2] = creds.password;