X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=etc%2Fafpd%2Fuam.c;h=d99d381edd38cc4408a5076039ef47f53d4e7899;hb=84c3a8f52deced7429f9d72276232ee282b3b823;hp=92173915c5f5cc5e7dfa8934c00f1a1ba34a1d85;hpb=bee44bcbf6b614d7e737602f27a41d041d8efee7;p=netatalk.git diff --git a/etc/afpd/uam.c b/etc/afpd/uam.c index 92173915..d99d381e 100644 --- a/etc/afpd/uam.c +++ b/etc/afpd/uam.c @@ -11,28 +11,9 @@ #include #include - -/* STDC check */ -#if STDC_HEADERS #include -#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 */ - -#ifdef HAVE_UNISTD_H #include -#endif /* HAVE_UNISTD_H */ -#ifdef HAVE_FCNTL_H #include -#endif /* HAVE_FCNTL_H */ #include #include #include @@ -45,19 +26,16 @@ char *strchr (), *strrchr (); #include #include -#include -#include #include #include #include +#include +#include -#include "globals.h" #include "afp_config.h" #include "auth.h" #include "uam_auth.h" -#define utf8_encoding() (afp_version >= 30) - #ifdef TRU64 #include #include @@ -254,7 +232,7 @@ struct passwd *uam_getname(void *private, char *name, const int len) } #ifndef NO_REAL_USER_NAME - if ( (size_t) -1 == (namelen = convert_string((utf8_encoding())?CH_UTF8_MAC:obj->options.maccharset, + if ( (size_t) -1 == (namelen = convert_string((utf8_encoding(obj))?CH_UTF8_MAC:obj->options.maccharset, CH_UCS2, name, -1, username, sizeof(username)))) return NULL; @@ -263,11 +241,11 @@ struct passwd *uam_getname(void *private, char *name, const int len) if ((p = strchr(pwent->pw_gecos, ','))) *p = '\0'; - if ((size_t)-1 == ( gecoslen = convert_string(obj->options.unixcharset, CH_UCS2, - pwent->pw_gecos, -1, user, sizeof(username))) ) - continue; - if ((size_t)-1 == ( pwnamelen = convert_string(obj->options.unixcharset, CH_UCS2, - pwent->pw_name, -1, pwname, sizeof(username))) ) + gecoslen = convert_string(obj->options.unixcharset, CH_UCS2, + pwent->pw_gecos, -1, user, sizeof(username)); + pwnamelen = convert_string(obj->options.unixcharset, CH_UCS2, + pwent->pw_name, -1, pwname, sizeof(username)); + if ((size_t)-1 == gecoslen && (size_t)-1 == pwnamelen) continue; @@ -317,7 +295,7 @@ int uam_checkuser(const struct passwd *pwd) int uam_random_string (AFPObj *obj, char *buf, int len) { - u_int32_t result; + uint32_t result; int ret; int fd; @@ -332,7 +310,7 @@ int uam_random_string (AFPObj *obj, char *buf, int len) if (gettimeofday(&tv, &tz) < 0) return -1; - srandom(tv.tv_sec + (unsigned long) obj + (unsigned long) obj->handle); + srandom(tv.tv_sec + (unsigned long) obj + (unsigned long) obj->dsi); for (i = 0; i < len; i += sizeof(result)) { result = random(); memcpy(buf + i, &result, sizeof(result)); @@ -359,7 +337,7 @@ int uam_afpserver_option(void *private, const int what, void *option, switch (what) { case UAM_OPTION_USERNAME: - *buf = obj->username; + *buf = &(obj->username[0]); if (len) *len = sizeof(obj->username) - 1; break; @@ -385,11 +363,6 @@ int uam_afpserver_option(void *private, const int what, void *option, *len = sizeof(obj->options.passwdminlen); break; - case UAM_PASSWD_MAXFAIL: - *((int *) option) = obj->options.loginmaxfail; - *len = sizeof(obj->options.loginmaxfail); - break; - case UAM_PASSWD_EXPIRETIME: /* not implemented */ default: return -1; @@ -398,7 +371,7 @@ int uam_afpserver_option(void *private, const int what, void *option, break; case UAM_OPTION_SIGNATURE: - *buf = (void *) (((AFPConfig *)obj->config)->signature); + *buf = (void *)obj->dsi->signature; if (len) *len = 16; break; @@ -416,13 +389,9 @@ int uam_afpserver_option(void *private, const int what, void *option, *len = strlen(obj->options.hostname); break; - case UAM_OPTION_PROTOCOL: - *((int *) option) = obj->proto; - break; - case UAM_OPTION_CLIENTNAME: { - struct DSI *dsi = obj->handle; + struct DSI *dsi = obj->dsi; const struct sockaddr *sa; static char hbuf[NI_MAXHOST]; @@ -487,28 +456,18 @@ int uam_afp_read(void *handle, char *buf, size_t *buflen, if (!obj) return AFPERR_PARAM; - switch (obj->proto) { - case AFPPROTO_ASP: - if ((len = asp_wrtcont(obj->handle, buf, buflen )) < 0) - goto uam_afp_read_err; - return action(handle, buf, *buflen); - break; - - case AFPPROTO_DSI: - len = dsi_writeinit(obj->handle, buf, *buflen); + len = dsi_writeinit(obj->dsi, buf, *buflen); if (!len || ((len = action(handle, buf, len)) < 0)) { - dsi_writeflush(obj->handle); + dsi_writeflush(obj->dsi); goto uam_afp_read_err; } - while ((len = (dsi_write(obj->handle, buf, *buflen)))) { + while ((len = (dsi_write(obj->dsi, buf, *buflen)))) { if ((len = action(handle, buf, len)) < 0) { - dsi_writeflush(obj->handle); + dsi_writeflush(obj->dsi); goto uam_afp_read_err; } } - break; - } return 0; uam_afp_read_err: