X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/90edb255effd0d29d94e662ca5bf3e9eda7ed122..b0aa8cdb1c264e42d4931ca24968689c73381278:/uip/popsbr.c diff --git a/uip/popsbr.c b/uip/popsbr.c index 50cdf09b..8d2cf9d7 100644 --- a/uip/popsbr.c +++ b/uip/popsbr.c @@ -240,6 +240,8 @@ pop_init (char *host, char *port, char *user, char *proxy, int snoop, if (poprint) fprintf (stderr, "<--- %s\n", response); if (*response == '+') { + nmh_creds_t creds; + if (sasl) { char server_mechs[256]; if (check_mech(server_mechs, sizeof(server_mechs)) != OK) @@ -252,21 +254,19 @@ pop_init (char *host, char *port, char *user, char *proxy, int snoop, return NOTOK; } return OK; - } else { - nmh_creds_t creds; - - if (!(creds = nmh_get_credentials(host, user))) - return NOTOK; - if (command ("USER %s", nmh_cred_get_user(creds)) - != NOTOK) { - if (command("PASS %s", nmh_cred_get_password(creds)) - != NOTOK) { - nmh_credentials_free(creds); - return OK; - } - } - nmh_credentials_free(creds); } + + if (!(creds = nmh_get_credentials(host, user))) + return NOTOK; + if (command ("USER %s", nmh_cred_get_user(creds)) + != NOTOK) { + if (command("PASS %s", nmh_cred_get_password(creds)) + != NOTOK) { + nmh_credentials_free(creds); + return OK; + } + } + nmh_credentials_free(creds); } strncpy (buffer, response, sizeof(buffer)); command ("QUIT"); @@ -434,7 +434,7 @@ pop_sasl_callback(enum sasl_message_type mtype, unsigned const char *indata, if (line == NULL) return NOTOK; - if (strncmp(line, "+OK", 3) != 0) { + if (!HasPrefix(line, "+OK")) { netsec_err(errstr, "Authentication failed: %s", line); return NOTOK; } @@ -690,11 +690,10 @@ multiline (void) if (pop_getline (buffer, sizeof buffer, nsc) != OK) return NOTOK; - if (strncmp (buffer, TRM, TRMLEN) == 0) { + if (HasPrefix(buffer, TRM)) { if (buffer[TRMLEN] == 0) return DONE; - else - strncpy (response, buffer + TRMLEN, sizeof(response)); + strncpy (response, buffer + TRMLEN, sizeof(response)); } else strncpy (response, buffer, sizeof(response));