diff options
author | Eric S. Raymond <esr@thyrsus.com> | 1996-10-25 20:01:04 +0000 |
---|---|---|
committer | Eric S. Raymond <esr@thyrsus.com> | 1996-10-25 20:01:04 +0000 |
commit | f61224f2f7195fc5795fd6f16c97e607fb976cc0 (patch) | |
tree | bf2554efe2d3675dc22d05bc74a1f01c681a50f2 /driver.c | |
parent | 15ad60aad2f4671e2381b065dc0121d20d0ee3e8 (diff) | |
download | fetchmail-f61224f2f7195fc5795fd6f16c97e607fb976cc0.tar.gz fetchmail-f61224f2f7195fc5795fd6f16c97e607fb976cc0.tar.bz2 fetchmail-f61224f2f7195fc5795fd6f16c97e607fb976cc0.zip |
Use the precomputed canonical_name for Kerberos authentication.
svn path=/trunk/; revision=383
Diffstat (limited to 'driver.c')
-rw-r--r-- | driver.c | 26 |
1 files changed, 6 insertions, 20 deletions
@@ -668,10 +668,10 @@ struct hostrec *queryctl; /* query control record */ #ifdef KERBEROS_V4 int -kerberos_auth (socket, servername) +kerberos_auth (socket, canonical) /* authenticate to the server host using Kerberos V4 */ int socket; /* socket to server host */ -char *servername; /* server name */ +char *canonical; /* server name */ { char * host_primary; KTEXT ticket; @@ -680,23 +680,10 @@ char *servername; /* server name */ Key_schedule schedule; int rem; - /* Get the primary name of the host. */ - { - struct hostent * hp = (gethostbyname (servername)); - if (hp == 0) - { - fprintf (stderr, "fetchmail: server %s unknown: n", servername); - return (PS_ERROR); - } - host_primary = ((char *) (malloc ((strlen (hp -> h_name)) + 1))); - strcpy (host_primary, (hp -> h_name)); - } - ticket = ((KTEXT) (malloc (sizeof (KTEXT_ST)))); - rem - = (krb_sendauth (0L, socket, ticket, "pop", - host_primary, - ((char *) (krb_realmofhost (host_primary))), + rem = (krb_sendauth (0L, socket, ticket, "pop", + canonical, + ((char *) (krb_realmofhost (canonical))), ((unsigned long) 0), (&msg_data), (&cred), @@ -705,7 +692,6 @@ char *servername; /* server name */ ((struct sockaddr_in *) 0), "KPOPV0.1")); free (ticket); - free (host_primary); if (rem != KSUCCESS) { fprintf (stderr, "fetchmail: kerberos error %s\n", (krb_get_err_text (rem))); @@ -779,7 +765,7 @@ struct method *proto; /* protocol method table */ #ifdef KERBEROS_V4 if (queryctl->authenticate == A_KERBEROS) { - ok = (kerberos_auth (socket, queryctl->servername)); + ok = (kerberos_auth (socket, queryctl->canonical_name)); if (ok != 0) goto cleanUp; } |