X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=etc%2Fuams%2Fuams_dhx2_pam.c;h=dae84673a3ea8935c373fe284cb6419b358a58a1;hb=75fe310224dffb96868d7f2cb1ec9125a84f2a08;hp=cea12ca0d8c2059e25fa6112bb09bce8cb5e92fa;hpb=ba115751f8ad159a491751d5a9ed550a920c809b;p=netatalk.git diff --git a/etc/uams/uams_dhx2_pam.c b/etc/uams/uams_dhx2_pam.c index cea12ca0..dae84673 100644 --- a/etc/uams/uams_dhx2_pam.c +++ b/etc/uams/uams_dhx2_pam.c @@ -1,5 +1,5 @@ /* - * $Id: uams_dhx2_pam.c,v 1.5 2008-11-30 17:36:08 didg Exp $ + * $Id: uams_dhx2_pam.c,v 1.9 2009-11-05 14:38:07 franklahm Exp $ * * Copyright (c) 1990,1993 Regents of The University of Michigan. * Copyright (c) 1999 Adrian Sun (asun@u.washington.edu) @@ -253,8 +253,8 @@ static struct pam_conv PAM_conversation = { }; -static int dhx2_setup(void *obj, char *ibuf _U_, int ibuflen _U_, - char *rbuf, int *rbuflen) +static int dhx2_setup(void *obj, char *ibuf _U_, size_t ibuflen _U_, + char *rbuf, size_t *rbuflen) { int ret; size_t nwritten; @@ -338,8 +338,8 @@ error: /* We exit here anyway */ /* -------------------------------- */ static int login(void *obj, char *username, int ulen, struct passwd **uam_pwd _U_, - char *ibuf, int ibuflen, - char *rbuf, int *rbuflen) + char *ibuf, size_t ibuflen, + char *rbuf, size_t *rbuflen) { if (( dhxpwd = uam_getname(obj, username, ulen)) == NULL ) { LOG(log_info, logtype_uams, "DHX2: unknown username"); @@ -355,11 +355,11 @@ static int login(void *obj, char *username, int ulen, struct passwd **uam_pwd _ /* dhx login: things are done in a slightly bizarre order to avoid * having to clean things up if there's an error. */ static int pam_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 *username; - int len, ulen; + size_t len, ulen; *rbuflen = 0; @@ -389,11 +389,11 @@ static int pam_login(void *obj, struct passwd **uam_pwd, /* ----------------------------- */ static int pam_login_ext(void *obj, char *uname, struct passwd **uam_pwd, - char *ibuf, int ibuflen, - char *rbuf, int *rbuflen) + char *ibuf, size_t ibuflen, + char *rbuf, size_t *rbuflen) { char *username; - int len, ulen; + size_t len, ulen; u_int16_t temp16; *rbuflen = 0; @@ -424,7 +424,7 @@ static int pam_login_ext(void *obj, char *uname, struct passwd **uam_pwd, /* -------------------------------- */ -static int logincont1(void *obj _U_, char *ibuf, int ibuflen, char *rbuf, int *rbuflen) +static int logincont1(void *obj _U_, char *ibuf, size_t ibuflen, char *rbuf, size_t *rbuflen) { int ret; size_t nwritten; @@ -561,21 +561,21 @@ exit: } static int logincont2(void *obj, struct passwd **uam_pwd, - char *ibuf, int ibuflen, - char *rbuf _U_, int *rbuflen) + char *ibuf, size_t ibuflen, + char *rbuf _U_, size_t *rbuflen) { int ret; int PAM_error; - char *hostname = NULL; + const char *hostname = NULL; gcry_mpi_t retServerNonce; gcry_cipher_hd_t ctx; gcry_error_t ctxerror; *rbuflen = 0; - /* Packet size should be: Session ID + ServerNonce + Passwd buffer */ - if (ibuflen != 2 + 16 + 256) { - LOG(log_error, logtype_uams, "DHX2: Paket length not correct"); + /* Packet size should be: Session ID + ServerNonce + Passwd buffer (evantually +10 extra bytes, see Apples Docs) */ + if ((ibuflen != 2 + 16 + 256) && (ibuflen != 2 + 16 + 256 + 10)) { + LOG(log_error, logtype_uams, "DHX2: Paket length not correct: %u. Should be 274 or 284.", ibuflen); ret = AFPERR_PARAM; goto error_noctx; } @@ -699,8 +699,8 @@ error_noctx: } static int pam_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) { u_int16_t retID; int ret; @@ -720,7 +720,7 @@ static int pam_logincont(void *obj, struct passwd **uam_pwd, /* logout */ -static void pam_logout() { +static void pam_logout(void) { pam_close_session(pamh, 0); pam_end(pamh, 0); pamh = NULL; @@ -730,7 +730,7 @@ static void pam_logout() { * --- Change pwd stuff --- */ static int changepw_1(void *obj, char *uname, - char *ibuf, int ibuflen, char *rbuf, int *rbuflen) + char *ibuf, size_t ibuflen, char *rbuf, size_t *rbuflen) { *rbuflen = 0; @@ -740,20 +740,20 @@ static int changepw_1(void *obj, char *uname, } static int changepw_2(void *obj, - char *ibuf, int ibuflen, char *rbuf, int *rbuflen) + char *ibuf, size_t ibuflen, char *rbuf, size_t *rbuflen) { return( logincont1(obj, ibuf, ibuflen, rbuf, rbuflen) ); } static int changepw_3(void *obj _U_, - char *ibuf, int ibuflen _U_, - char *rbuf _U_, int *rbuflen _U_) + char *ibuf, size_t ibuflen _U_, + char *rbuf _U_, size_t *rbuflen _U_) { int ret; int PAM_error; uid_t uid; pam_handle_t *lpamh; - char *hostname = NULL; + const char *hostname = NULL; gcry_mpi_t retServerNonce; gcry_cipher_hd_t ctx; gcry_error_t ctxerror; @@ -869,8 +869,8 @@ error_noctx: } static int dhx2_changepw(void *obj _U_, char *uname, - struct passwd *pwd _U_, char *ibuf, int ibuflen _U_, - char *rbuf _U_, int *rbuflen _U_) + struct passwd *pwd _U_, char *ibuf, size_t ibuflen _U_, + char *rbuf _U_, size_t *rbuflen _U_) { /* We use this to serialize the three incoming FPChangePassword calls */ static int dhx2_changepw_status = 1;