From e8dc095707c1bd2657309793cb9c6981d08f9226 Mon Sep 17 00:00:00 2001 From: Unknown User d91-jda Date: Thu, 18 Apr 1996 01:57:52 +0000 Subject: [PATCH] Kerberized password checks. git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@402 ec53bebd-3082-4978-b11e-865c3cabbd6b --- appl/ftp/ftpd/klogin.c | 61 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 appl/ftp/ftpd/klogin.c diff --git a/appl/ftp/ftpd/klogin.c b/appl/ftp/ftpd/klogin.c new file mode 100644 index 000000000..202d0d908 --- /dev/null +++ b/appl/ftp/ftpd/klogin.c @@ -0,0 +1,61 @@ +#ifdef HAVE_CONFIG_H +#include +#endif + +#include +#include +#include +#include +#include + +RCSID("$Id$"); + +int +klogin(char *name, char *password) +{ + int kerror; + KTEXT_ST tkt; + AUTH_DAT ad; + char hostname[MAXHOSTNAMELEN]; + char realm[REALM_SZ]; + + char *phost; + + struct hostent *hp; + + gethostname(hostname); + phost = krb_get_phost(hostname); + + krb_get_lrealm(realm, 0); + + kerror = krb_get_pw_in_tkt(name, "", realm, + "krbtgt", realm, + 12, password); + if(kerror) + return kerror; + + kerror = krb_mk_req(&tkt, "rcmd", phost, realm, 33); + if (kerror){ + dest_tkt(); + return kerror; + } + + hp = gethostbyname(hostname); + + if(!hp){ + dest_tkt(); + return -1; + } + + kerror = krb_rd_req(&tkt, "rcmd", phost, *(unsigned int*)(hp->h_addr), + &ad, ""); + + if(kerror){ + dest_tkt(); + return kerror; + } + if(k_hasafs()) + k_afsklog(0, 0); + + return 0; +}