/*
- * $Id: uams_krb4.c,v 1.4 2001-06-25 20:13:45 rufustfirefly Exp $
+ * $Id: uams_krb4.c,v 1.10 2009-10-15 11:39:48 didg Exp $
*
* Copyright (c) 1990,1993 Regents of The University of Michigan.
* All Rights Reserved. See COPYRIGHT.
*/
-#if defined(HAVE_CONFIG_H)
+#ifdef HAVE_CONFIG_H
#include "config.h"
-#endif
+#endif /* HAVE_CONFIG_H */
#if defined( KRB ) || defined( UAM_AFSKRB )
#ifdef HAVE_UNISTD_H
#include <sys/stat.h>
#include <sys/socket.h>
#include <limits.h>
+
+/* STDC check */
+#if STDC_HEADERS
#include <string.h>
+#else /* STDC_HEADERS */
+#ifndef HAVE_STRCHR
+#define strchr index
+#define strrchr index
+#endif /* HAVE_STRCHR */
+char *strchr (), *strrchr ();
+#ifndef HAVE_MEMCPY
+#define memcpy(d,s,n) bcopy ((s), (d), (n))
+#define memmove(d,s,n) bcopy ((s), (d), (n))
+#endif /* ! HAVE_MEMCPY */
+#endif /* STDC_HEADERS */
+
#include <ctype.h>
#include <pwd.h>
-#include <syslog.h>
+#include <atalk/logger.h>
#include <netinet/in.h>
#include <des.h>
#include <krb.h>
#ifdef KRB
-static __inline__ void lcase( p )
+static void lcase( p )
char *p;
{
for (; *p; p++ ) {
return;
}
-static __inline__ void ucase( p )
+static void ucase( p )
char *p;
{
for (; *p; p++ ) {
#define KRB4CMD_SKIP 11
static int krb4_login(void *obj, struct passwd **uam_pwd,
- char *ibuf, int ibuflen,
- char *rbuf, int *rbuflen )
+ char *ibuf, size_t ibuflen,
+ char *rbuf, size_t *rbuflen )
{
char *p;
char *username;
u_int16_t len;
KTEXT_ST tkt;
static AUTH_DAT ad;
- int rc, ulen, proto;
+ int rc, proto;
+ size_t ulen;
char inst[ 40 ], princ[ 40 ];
if (uam_afpserver_option(obj, UAM_OPTION_USERNAME, &username, &ulen) < 0)
switch( *ibuf ) {
case KRB4CMD_SESS:
- syslog( LOG_INFO, "krb4_login: KRB4CMD_SESS" );
+ LOG(log_info, logtype_default, "krb4_login: KRB4CMD_SESS" );
++ibuf;
p = ibuf;
memcpy( &len, p, sizeof( u_int16_t ));
if ( tkt.length <= 0 || tkt.length > MAX_KTXT_LEN ) {
*rbuflen = 0;
- syslog( LOG_INFO, "krb4_login: tkt.length = %d", tkt.length );
+ LOG(log_info, logtype_default, "krb4_login: tkt.length = %d", tkt.length );
return( AFPERR_BADUAM );
}
if( (rc = krb_rd_req( &tkt, princ, inst, 0, &ad, "" ))
!= RD_AP_OK ) {
- syslog( LOG_ERR,
+ LOG(log_error, logtype_default,
"krb4_login: krb_rd_req(): %s", krb_err_txt[ rc ] );
*rbuflen = 0;
return( AFPERR_BADUAM );
}
- syslog( LOG_INFO, "krb4_login: %s.%s@%s", ad.pname, ad.pinst,
+ LOG(log_info, logtype_default, "krb4_login: %s.%s@%s", ad.pname, ad.pinst,
ad.prealm );
strcpy( realm, ad.prealm );
memcpy( seskey, ad.session, sizeof( C_Block ) );
*p = KRB4RPL_DONE; /* XXX */
*rbuflen = 1;
- if (( pwd = uam_getname( ad.pname, strlen(ad.pname) )) == NULL ) {
+ if (( pwd = uam_getname( obj, ad.pname, strlen(ad.pname) )) == NULL ) {
return AFPERR_PARAM;
}
/*
case KRB4CMD_HELO:
p = rbuf;
if (krb_get_lrealm( realm, 1 ) != KSUCCESS ) {
- syslog( LOG_ERR, "krb4_login: can't get local realm!" );
+ LOG(log_error, logtype_default, "krb4_login: can't get local realm!" );
return( AFPERR_NOTAUTH );
}
*p++ = KRB4RPL_REALM;
default:
*rbuflen = 0;
- syslog( LOG_INFO, "krb4_login: bad command %d", *ibuf );
+ LOG(log_info, logtype_default, "krb4_login: bad command %d", *ibuf );
return( AFPERR_NOTAUTH );
}
#ifdef AFS
if ( setpag() < 0 ) {
*rbuflen = 0;
- syslog( LOG_ERR, "krb_login: setpag: %m" );
+ LOG(log_error, logtype_default, "krb_login: setpag: %s", strerror(errno) );
return( AFPERR_BADUAM );
}
#endif /*AFS*/
with non-16bit short's and non-32bit int's
*/
static int krb4_logincont(void *obj, struct passwd **uam_pwd,
- char *ibuf, int ibuflen,
- char *rbuf, int *rbuflen)
+ char *ibuf, size_t ibuflen,
+ char *rbuf, size_t *rbuflen)
{
static struct passwd *pwd;
KTEXT_ST tkt;
len = ntohs( len );
if ( len != sizeof( struct ClearToken ) ) {
- syslog( LOG_ERR, "krb4_logincont: token too short" );
+ LOG(log_error, logtype_default, "krb4_logincont: token too short" );
*rbuflen = 0;
return( AFPERR_BADUAM );
}
vi.out_size = sizeof( buf );
if ( pioctl( 0, VIOCSETTOK, &vi, 0 ) < 0 ) {
- syslog( LOG_ERR, "krb4_logincont: pioctl: %m" );
+ LOG(log_error, logtype_default, "krb4_logincont: pioctl: %s", strerror(errno) );
*rbuflen = 0;
return( AFPERR_BADUAM );
}
*p = KRB4RPL_DONE; /* XXX */
*rbuflen = 1;
- if (( pwd = uam_getname( username, strlen(username) ) ) == NULL ) {
+ if (( pwd = uam_getname( obj, username, strlen(username) ) ) == NULL ) {
return( AFPERR_NOTAUTH );
}
/*
if (( rc = krb_rd_req( &tkt, "afpserver", servername,
0, &ad, "" )) != RD_AP_OK ) {
- syslog( LOG_ERR, "krb4_logincont: krb_rd_req(): %s", krb_err_txt[ rc ] );
+ LOG(log_error, logtype_default, "krb4_logincont: krb_rd_req(): %s", krb_err_txt[ rc ] );
return( AFPERR_BADUAM );
}
- syslog( LOG_INFO, "krb4_login: %s.%s@%s", ad.pname,
+ LOG(log_info, logtype_default, "krb4_login: %s.%s@%s", ad.pname,
ad.pinst, ad.prealm );
memcpy(realm, ad.prealm, sizeof(realm));
memcpy(seskey, ad.session, sizeof( C_Block ));
*p = KRB4RPL_DONE; /* XXX */
*rbuflen = 1;
- if (( pwd = uam_getname( ad.pname, strlen(ad.pname) ))
+ if (( pwd = uam_getname( obj, ad.pname, strlen(ad.pname) ))
== NULL ) {
return( AFPERR_PARAM );
}
vi.out = buf;
vi.out_size = sizeof( buf );
if ( pioctl( 0, VIOCSETTOK, &vi, 0 ) < 0 ) {
- syslog( LOG_ERR, "krb4_logincont: pioctl: %m" );
+ LOG(log_error, logtype_default, "krb4_logincont: pioctl: %s", strerror(errno) );
return( AFPERR_BADUAM );
}
/* FALL THROUGH */
*p = KRB4RPL_DONE; /* XXX */
*rbuflen = 1;
- if (( pwd = uam_getname( ad.pname, strlen(ad.pname) ))
+ if (( pwd = uam_getname( obj, ad.pname, strlen(ad.pname) ))
== NULL ) {
return( AFPERR_PARAM );
}
#endif /*AFS*/
default:
- syslog( LOG_INFO, "krb4_logincont: bad command %d", rc );
+ LOG(log_info, logtype_default, "krb4_logincont: bad command %d", rc );
*rbuflen = 0;
return( AFPERR_NOTAUTH );
break;
#if defined( UAM_AFSKRB ) && defined( AFS )
static int afskrb_login(void *obj, struct passwd *uam_pwd,
- char *ibuf, int ibuflen,
- char *rbuf, int *rbuflen )
+ char *ibuf, size_t ibuflen,
+ char *rbuf, size_t *rbuflen )
{
KTEXT_ST authent, rpkt;
CREDENTIALS cr;
p = rbuf;
if ( validseskey == 0 ) {
if ( setpag() < 0 ) {
- syslog( LOG_ERR, "krb_login: setpag: %m" );
+ LOG(log_error, logtype_default, "krb_login: setpag: %s", strerror(errno) );
return AFPERR_BADUAM;
}
krb_set_tkt_string(( tktfile = mktemp( _PATH_AFPTKT )));
if (( rc = krb_get_svc_in_tkt( "afpserver", servername, realm,
TICKET_GRANTING_TICKET, realm, 255, KEYFILE )) != INTK_OK ) {
- syslog( LOG_ERR, "krb_login: can't get ticket-granting-ticket" );
+ LOG(log_error, logtype_default, "krb_login: can't get ticket-granting-ticket" );
return (( whoserealm ) ? AFPERR_BADUAM : AFPERR_PARAM );
}
if ( krb_mk_req( &authent, name, instance, realm, 0 ) != KSUCCESS ) {
}
if ( unlink( tktfile ) < 0 ) {
- syslog( LOG_ERR, "krb_login: unlink %s: %m", tktfile );
+ LOG(log_error, logtype_default, "krb_login: unlink %s: %s", tktfile, strerror(errno) );
return ( AFPERR_BADUAM );
}
}
static int afskrb_logincont(void *obj, struct passwd *uam_pwd,
- char *ibuf, int ibuflen,
- char *rbuf, int *rbuflen )
+ char *ibuf, size_t ibuflen,
+ char *rbuf, size_t *rbuflen )
{
CREDENTIALS cr;
struct ViceIoctl vi;
vi.out = buf;
vi.out_size = sizeof( buf );
if ( pioctl( 0, VIOCSETTOK, &vi, 0 ) < 0 ) {
- syslog( LOG_ERR, "krb_logincont: pioctl: %m" );
+ LOG(log_error, logtype_default, "krb_logincont: pioctl: %s", strerror(errno) );
return ( AFPERR_BADUAM );
}
if ( unlink( tktfile ) < 0 ) {
- syslog( LOG_ERR, "krb_logincont: %s: %m", tktfile );
+ LOG(log_error, logtype_default, "krb_logincont: %s: %s", tktfile, strerror(errno) );
return ( AFPERR_BADUAM );
}
- if (( pwd = uam_getname( username )) == NULL ) {
+ if (( pwd = uam_getname( obj, username, strlen(username) )) == NULL ) {
return ( AFPERR_PARAM );
}
if ( logged == 0 ) {
logged = 1;
- syslog( LOG_INFO, "authenticated %s.%s@%s", name, instance, realm );
+ LOG(log_info, logtype_default, "authenticated %s.%s@%s", name, instance, realm );
*uam_pwd = pwd;
return AFP_OK;
}
- syslog( LOG_INFO, "re-authenticated %s.%s@%s", name, instance, realm );
+ LOG(log_info, logtype_default, "re-authenticated %s.%s@%s", name, instance, realm );
return( AFP_OK );
}
#endif /* UAM_AFSKRB AFS */