Dolda2000 GitWeb
/
doldaconnect.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Updated ChangeLog.
[doldaconnect.git]
/
daemon
/
auth-unix.c
diff --git
a/daemon/auth-unix.c
b/daemon/auth-unix.c
index
c90aba8
..
7cf9c8e
100644
(file)
--- a/
daemon/auth-unix.c
+++ b/
daemon/auth-unix.c
@@
-1,6
+1,6
@@
/*
* Dolda Connect - Modular multiuser Direct Connect-style client
/*
* Dolda Connect - Modular multiuser Direct Connect-style client
- * Copyright (C) 2004 Fredrik Tolf
(fredrik@dolda2000.com)
+ * Copyright (C) 2004 Fredrik Tolf
<fredrik@dolda2000.com>
*
* 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
*
* 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
@@
-59,23
+59,27
@@
static int unixauth(struct authhandle *auth, struct socket *sk, char *passdata)
{
struct passwd *pwd;
struct unixdata *data;
{
struct passwd *pwd;
struct unixdata *data;
+ uid_t uid;
+ gid_t gid;
data = auth->mechdata;
if((pwd = getpwnam(data->username)) == NULL)
return(AUTH_ERR);
data = auth->mechdata;
if((pwd = getpwnam(data->username)) == NULL)
return(AUTH_ERR);
- if(
sk->ucred.pid == 0
) {
- errno = E
BADE;
+ if(
getucred(sk, &uid, &gid)
) {
+ errno = E
OPNOTSUPP; /* Bleh */
return(AUTH_ERR);
}
return(AUTH_ERR);
}
- if(pwd->pw_uid == sk->ucred.uid)
+ if(pwd->pw_uid == uid) {
+ flog(LOG_INFO, "successful authentication as %s with Unix credentials (uid=%i, gid=%i)", data->username, uid, gid);
return(AUTH_SUCCESS);
return(AUTH_SUCCESS);
+ }
auth->text = swcsdup(L"Unix credentials do not match supplied user name");
return(AUTH_DENIED);
}
static int available(struct socket *sk)
{
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(
sockfamily(sk) == PF_UNIX
);
}
static struct authmech mechdesc = {
}
static struct authmech mechdesc = {