]> diplodocus.org Git - nmh/blobdiff - mts/smtp/smtp.c
Check for text/html display programs in this order: w3m, lynx, elinks.
[nmh] / mts / smtp / smtp.c
index 231bdaef38fadc7f2492b278a7f6d5a637e5b8a6..e4522f4a7c4757f82c0a7f6acb23ae100055d919 100644 (file)
@@ -142,13 +142,12 @@ static int tls_active = 0;
 
 static char *sm_noreply = "No reply text given";
 static char *sm_moreply = "; ";
-
-struct smtp sm_reply;          /* global... */
+static struct smtp sm_reply;
 
 #define        MAXEHLO 20
 
 static int doingEHLO;
-char *EHLOkeys[MAXEHLO + 1];
+static char *EHLOkeys[MAXEHLO + 1];
 
 /*
  * static prototypes
@@ -481,8 +480,6 @@ sendmail_init (char *client, char *server, int watch, int verbose,
                vec[vecp++] = "-ov";
            vec[vecp++] = NULL;
 
-           setgid (getegid ());
-           setuid (geteuid ());
            execvp (sendmail, vec);
            fprintf (stderr, "unable to exec ");
            perror (sendmail);
@@ -854,11 +851,12 @@ sm_auth_sasl(char *user, int saslssf, char *mechlist, char *inhost)
        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, 0, &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;