diff options
author | Richard Basch <probe@mit.edu> | 1993-11-21 10:04:57 +0000 |
---|---|---|
committer | Richard Basch <probe@mit.edu> | 1993-11-21 10:04:57 +0000 |
commit | 75b06489dcd8243b3bdb4b113d22761623b02419 (patch) | |
tree | fba662f12d031da83e9a1ae848c8f1be88a82487 /server/kstuff.c | |
parent | f8d09dfb0de4163e34a1a3b56a137282e53a1f07 (diff) |
GetKerberosData was trying to pass a struct instead of a ulong, as
was expected by krb_rd_req() [metcalf@lcs]
Diffstat (limited to 'server/kstuff.c')
-rw-r--r-- | server/kstuff.c | 87 |
1 files changed, 44 insertions, 43 deletions
diff --git a/server/kstuff.c b/server/kstuff.c index 20c5a55..49089de 100644 --- a/server/kstuff.c +++ b/server/kstuff.c @@ -63,44 +63,45 @@ GetKerberosData(fd, haddr, kdata, service, srvtab) char *service; /* service principal desired */ char *srvtab; /* file to get keys from */ { - char p[20]; - KTEXT_ST ticket; /* will get Kerberos ticket from client */ - int i; - char instance[INST_SZ]; - - /* - * Get the Kerberos ticket. The first few characters, terminated - * by a blank, should give us a length; then get than many chars - * which will be the ticket proper. - */ - for (i=0; i<20; i++) { - if (read(fd, &p[i], 1) != 1) { - syslog(LOG_WARNING,"bad read tkt len"); - return(KFAILURE); - } - if (p[i] == ' ') { - p[i] = '\0'; - break; - } - } - ticket.length = atoi(p); - if ((i==20) || (ticket.length<=0) || (ticket.length>MAX_KTXT_LEN)) { - syslog(LOG_WARNING,"bad tkt len %d",ticket.length); + char p[20]; + KTEXT_ST ticket; /* will get Kerberos ticket from client */ + int i; + char instance[INST_SZ]; + + /* + * Get the Kerberos ticket. The first few characters, terminated + * by a blank, should give us a length; then get than many chars + * which will be the ticket proper. + */ + for (i=0; i<20; i++) { + if (read(fd, &p[i], 1) != 1) { + syslog(LOG_WARNING,"bad read tkt len"); return(KFAILURE); } - for (i=0; i<ticket.length; i++) { - if (read(fd, (caddr_t) &(ticket.dat[i]), 1) != 1) { - syslog(LOG_WARNING,"bad tkt read"); - return(KFAILURE); - } + if (p[i] == ' ') { + p[i] = '\0'; + break; } - /* - * now have the ticket. use it to get the authenticated - * data from Kerberos. - */ - (void) strcpy(instance,"*"); /* let Kerberos fill it in */ - - return(krb_rd_req(&ticket,service,instance,haddr,kdata, srvtab ? srvtab : "")); + } + ticket.length = atoi(p); + if ((i==20) || (ticket.length<=0) || (ticket.length>MAX_KTXT_LEN)) { + syslog(LOG_WARNING,"bad tkt len %d",ticket.length); + return(KFAILURE); + } + for (i=0; i<ticket.length; i++) { + if (read(fd, (caddr_t) &(ticket.dat[i]), 1) != 1) { + syslog(LOG_WARNING,"bad tkt read"); + return(KFAILURE); + } + } + /* + * now have the ticket. use it to get the authenticated + * data from Kerberos. + */ + (void) strcpy(instance,"*"); /* let Kerberos fill it in */ + + return(krb_rd_req(&ticket, service, instance, haddr.s_addr, + kdata, srvtab ? srvtab : "")); } /* @@ -168,14 +169,14 @@ static void ae_expire(ae) struct AuthEnt *ae; { - if (ae->data) { - xfree((void *) ae->data); - ae->data = 0; - } - ae->len = 0; - ae->expire_time = 0; - free_zstring(ae->principal); - ae->principal= 0; + if (ae->data) { + xfree((void *) ae->data); + ae->data = 0; + } + ae->len = 0; + ae->expire_time = 0; + free_zstring(ae->principal); + ae->principal= 0; } static int |