X-Git-Url: http://dolda2000.com/gitweb/?a=blobdiff_plain;f=daemon%2Fauth-unix.c;h=00266e161b6b2407df7e6fb4288e10ee83eb4e88;hb=c8c6be241f782e0d3fecb0fbfb042fd28a3f5dad;hp=c90aba88d9cfc77ca0fa1c52c3790804565edb02;hpb=3616b334bc6426e973e08b612a5e8fd30ad80a5f;p=doldaconnect.git diff --git a/daemon/auth-unix.c b/daemon/auth-unix.c index c90aba8..00266e1 100644 --- a/daemon/auth-unix.c +++ b/daemon/auth-unix.c @@ -1,6 +1,6 @@ /* * Dolda Connect - Modular multiuser Direct Connect-style client - * Copyright (C) 2004 Fredrik Tolf (fredrik@dolda2000.com) + * Copyright (C) 2004 Fredrik Tolf * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -63,19 +63,21 @@ static int unixauth(struct authhandle *auth, struct socket *sk, char *passdata) data = auth->mechdata; if((pwd = getpwnam(data->username)) == NULL) return(AUTH_ERR); - if(sk->ucred.pid == 0) { - errno = EBADE; + if(sk->ucred.uid == -1) { + errno = EOPNOTSUPP; /* Bleh */ return(AUTH_ERR); } - if(pwd->pw_uid == sk->ucred.uid) + if(pwd->pw_uid == sk->ucred.uid) { + flog(LOG_INFO, "successful authentication as %s with Unix credentials (uid=%i, gid=%i)", data->username, sk->ucred.uid, sk->ucred.gid); return(AUTH_SUCCESS); + } auth->text = swcsdup(L"Unix credentials do not match supplied user name"); return(AUTH_DENIED); } static int available(struct socket *sk) { - return((sk->family == PF_UNIX) && (sk->ucred.pid != 0)); + return((sk->family == PF_UNIX) && (sk->ucred.uid != -1)); } static struct authmech mechdesc = {