diff options
Diffstat (limited to 'source3/nsswitch')
-rw-r--r-- | source3/nsswitch/nss.h | 60 | ||||
-rw-r--r-- | source3/nsswitch/wbinfo.c | 65 | ||||
-rw-r--r-- | source3/nsswitch/winbind_nss_config.h | 34 | ||||
-rw-r--r-- | source3/nsswitch/winbindd_idmap.c | 4 | ||||
-rw-r--r-- | source3/nsswitch/winbindd_nss.h | 2 | ||||
-rw-r--r-- | source3/nsswitch/winbindd_user.c | 3 |
6 files changed, 99 insertions, 69 deletions
diff --git a/source3/nsswitch/nss.h b/source3/nsswitch/nss.h new file mode 100644 index 0000000000..6995305b93 --- /dev/null +++ b/source3/nsswitch/nss.h @@ -0,0 +1,60 @@ +/* + Unix SMB/Netbios implementation. + Version 2.0 + + a common place to work out how to define NSS_STATUS on various + platforms + + Copyright (C) Tim Potter 2000 + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this library; if not, write to the + Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. +*/ + +#ifdef HAVE_NSS_COMMON_H + +/* Sun Solaris */ + +#include <nss_common.h> +#include <nss_dbdefs.h> +#include <nsswitch.h> + +typedef nss_status_t NSS_STATUS; + +#define NSS_STATUS_SUCCESS NSS_SUCCESS +#define NSS_STATUS_NOTFOUND NSS_NOTFOUND +#define NSS_STATUS_UNAVAIL NSS_UNAVAIL +#define NSS_STATUS_TRYAGAIN NSS_TRYAGAIN + +#elif HAVE_NSS_H + +/* GNU */ + +#include <nss.h> + +typedef enum nss_status NSS_STATUS; + +#else /* Nothing's defined. Neither gnu nor sun */ + +typedef enum +{ + NSS_STATUS_SUCCESS=0, + NSS_STATUS_NOTFOUND=1, + NSS_STATUS_UNAVAIL=2, + NSS_STATUS_TRYAGAIN=3 +} NSS_STATUS; + +#endif + diff --git a/source3/nsswitch/wbinfo.c b/source3/nsswitch/wbinfo.c index 2e3991b97b..d29b144147 100644 --- a/source3/nsswitch/wbinfo.c +++ b/source3/nsswitch/wbinfo.c @@ -27,9 +27,9 @@ /* Prototypes from common.h */ -enum nss_status winbindd_request(int req_type, - struct winbindd_request *request, - struct winbindd_response *response); +NSS_STATUS winbindd_request(int req_type, + struct winbindd_request *request, + struct winbindd_response *response); /* List groups a user is a member of */ @@ -37,7 +37,8 @@ static BOOL wbinfo_get_usergroups(char *user) { struct winbindd_request request; struct winbindd_response response; - int result, i; + NSS_STATUS result; + int i; ZERO_STRUCT(response); @@ -69,8 +70,8 @@ static BOOL wbinfo_list_domains(void) /* Send request */ - if (winbindd_request(WINBINDD_LIST_TRUSTDOM, NULL, &response) == - WINBINDD_ERROR) { + if (winbindd_request(WINBINDD_LIST_TRUSTDOM, NULL, &response) != + NSS_STATUS_SUCCESS) { return False; } @@ -126,8 +127,8 @@ static BOOL wbinfo_uid_to_sid(uid_t uid) /* Send request */ request.data.uid = uid; - if (winbindd_request(WINBINDD_UID_TO_SID, &request, &response) == - WINBINDD_ERROR) { + if (winbindd_request(WINBINDD_UID_TO_SID, &request, &response) != + NSS_STATUS_SUCCESS) { return False; } @@ -151,8 +152,8 @@ static BOOL wbinfo_gid_to_sid(gid_t gid) /* Send request */ request.data.gid = gid; - if (winbindd_request(WINBINDD_GID_TO_SID, &request, &response) == - WINBINDD_ERROR) { + if (winbindd_request(WINBINDD_GID_TO_SID, &request, &response) != + NSS_STATUS_SUCCESS) { return False; } @@ -176,8 +177,8 @@ static BOOL wbinfo_sid_to_uid(char *sid) /* Send request */ fstrcpy(request.data.sid, sid); - if (winbindd_request(WINBINDD_SID_TO_UID, &request, &response) == - WINBINDD_ERROR) { + if (winbindd_request(WINBINDD_SID_TO_UID, &request, &response) != + NSS_STATUS_SUCCESS) { return False; } @@ -199,8 +200,8 @@ static BOOL wbinfo_sid_to_gid(char *sid) /* Send request */ fstrcpy(request.data.sid, sid); - if (winbindd_request(WINBINDD_SID_TO_GID, &request, &response) == - WINBINDD_ERROR) { + if (winbindd_request(WINBINDD_SID_TO_GID, &request, &response) != + NSS_STATUS_SUCCESS) { return False; } @@ -224,8 +225,8 @@ static BOOL wbinfo_lookupsid(char *sid) /* Send off request */ fstrcpy(request.data.sid, sid); - if (winbindd_request(WINBINDD_LOOKUPSID, &request, &response) == - WINBINDD_ERROR) { + if (winbindd_request(WINBINDD_LOOKUPSID, &request, &response) != + NSS_STATUS_SUCCESS) { return False; } @@ -249,8 +250,8 @@ static BOOL wbinfo_lookupname(char *name) ZERO_STRUCT(response); fstrcpy(request.data.name, name); - if (winbindd_request(WINBINDD_LOOKUPNAME, &request, &response) == - WINBINDD_ERROR) { + if (winbindd_request(WINBINDD_LOOKUPNAME, &request, &response) != + NSS_STATUS_SUCCESS) { return False; } @@ -267,7 +268,7 @@ static BOOL wbinfo_auth(char *username) { struct winbindd_request request; struct winbindd_response response; - enum winbindd_result result; + NSS_STATUS result; char *p; /* Send off request */ @@ -290,9 +291,9 @@ static BOOL wbinfo_auth(char *username) /* Display response */ printf("plaintext password authentication %s\n", - (result == WINBINDD_OK) ? "succeeded" : "failed"); + (result == NSS_STATUS_SUCCESS) ? "succeeded" : "failed"); - return result == WINBINDD_OK; + return result == NSS_STATUS_SUCCESS; } /* Authenticate a user with a challenge/response */ @@ -301,7 +302,7 @@ static BOOL wbinfo_auth_crap(char *username) { struct winbindd_request request; struct winbindd_response response; - enum winbindd_result result; + NSS_STATUS result; fstring pass; char *p; @@ -322,10 +323,10 @@ static BOOL wbinfo_auth_crap(char *username) generate_random_buffer(request.data.auth_crap.chal, 8, False); - SMBencrypt(pass, request.data.auth_crap.chal, - request.data.auth_crap.lm_resp); - SMBNTencrypt(pass, request.data.auth_crap.chal, - request.data.auth_crap.nt_resp); + SMBencrypt((uchar *)pass, request.data.auth_crap.chal, + (uchar *)request.data.auth_crap.lm_resp); + SMBNTencrypt((uchar *)pass, request.data.auth_crap.chal, + (uchar *)request.data.auth_crap.nt_resp); request.data.auth_crap.lm_resp_len = 24; request.data.auth_crap.nt_resp_len = 24; @@ -335,9 +336,9 @@ static BOOL wbinfo_auth_crap(char *username) /* Display response */ printf("challenge/response password authentication %s\n", - (result == WINBINDD_OK) ? "succeeded" : "failed"); + (result == NSS_STATUS_SUCCESS) ? "succeeded" : "failed"); - return result == WINBINDD_OK; + return result == NSS_STATUS_SUCCESS; } /* Print domain users */ @@ -351,8 +352,8 @@ static BOOL print_domain_users(void) ZERO_STRUCT(response); - if (winbindd_request(WINBINDD_LIST_USERS, NULL, &response) == - WINBINDD_ERROR) { + if (winbindd_request(WINBINDD_LIST_USERS, NULL, &response) != + NSS_STATUS_SUCCESS) { return False; } @@ -379,8 +380,8 @@ static BOOL print_domain_groups(void) ZERO_STRUCT(response); - if (winbindd_request(WINBINDD_LIST_GROUPS, NULL, &response) == - WINBINDD_ERROR) { + if (winbindd_request(WINBINDD_LIST_GROUPS, NULL, &response) != + NSS_STATUS_SUCCESS) { return False; } diff --git a/source3/nsswitch/winbind_nss_config.h b/source3/nsswitch/winbind_nss_config.h index 4902f6ec5c..de3c61e496 100644 --- a/source3/nsswitch/winbind_nss_config.h +++ b/source3/nsswitch/winbind_nss_config.h @@ -59,39 +59,7 @@ #include <sys/stat.h> #include <errno.h> #include <pwd.h> - -#ifdef HAVE_NSS_COMMON_H -/* Sun Solaris */ - -#include <nss_common.h> -#include <nss_dbdefs.h> -#include <nsswitch.h> - -typedef nss_status_t NSS_STATUS; - -#define NSS_STATUS_SUCCESS NSS_SUCCESS -#define NSS_STATUS_NOTFOUND NSS_NOTFOUND -#define NSS_STATUS_UNAVAIL NSS_UNAVAIL -#define NSS_STATUS_TRYAGAIN NSS_TRYAGAIN - -#elif HAVE_NSS_H -/* GNU */ - -#include <nss.h> - -typedef enum nss_status NSS_STATUS; - -#else /* Nothing's defined. Neither gnu nor sun */ - -typedef enum -{ - NSS_STATUS_SUCCESS, - NSS_STATUS_NOTFOUND, - NSS_STATUS_UNAVAIL, - NSS_STATUS_TRYAGAIN -} NSS_STATUS; - -#endif +#include "nsswitch/nss.h" /* Declarations for functions in winbind_nss.c needed in winbind_nss_solaris.c (solaris wrapper to nss) */ diff --git a/source3/nsswitch/winbindd_idmap.c b/source3/nsswitch/winbindd_idmap.c index 73d24f19f6..5f667a621b 100644 --- a/source3/nsswitch/winbindd_idmap.c +++ b/source3/nsswitch/winbindd_idmap.c @@ -34,7 +34,7 @@ static TDB_CONTEXT *idmap_tdb; /* Allocate either a user or group id from the pool */ -static BOOL allocate_id(int *id, BOOL isgroup) +static BOOL allocate_id(uid_t *id, BOOL isgroup) { int hwm; @@ -68,7 +68,7 @@ static BOOL allocate_id(int *id, BOOL isgroup) /* Get an id from a rid */ -static BOOL get_id_from_rid(char *domain_name, uint32 rid, int *id, +static BOOL get_id_from_rid(char *domain_name, uint32 rid, uid_t *id, BOOL isgroup) { TDB_DATA data, key; diff --git a/source3/nsswitch/winbindd_nss.h b/source3/nsswitch/winbindd_nss.h index 8e2eaf7ede..ed7a0d4a28 100644 --- a/source3/nsswitch/winbindd_nss.h +++ b/source3/nsswitch/winbindd_nss.h @@ -101,7 +101,7 @@ struct winbindd_request { fstring pass; } auth; /* pam_winbind auth module */ struct { - char chal[8]; + unsigned char chal[8]; fstring user; fstring lm_resp; uint16 lm_resp_len; diff --git a/source3/nsswitch/winbindd_user.c b/source3/nsswitch/winbindd_user.c index 22fbfa30ab..9e0c1e8344 100644 --- a/source3/nsswitch/winbindd_user.c +++ b/source3/nsswitch/winbindd_user.c @@ -94,11 +94,12 @@ static BOOL winbindd_fill_pwent(char *domain_name, char *name, enum winbindd_result winbindd_getpwnam_from_user(struct winbindd_cli_state *state) { - uint32 name_type, user_rid, group_rid; + uint32 user_rid, group_rid; SAM_USERINFO_CTR *user_info; DOM_SID user_sid; fstring name_domain, name_user, name, gecos_name; struct winbindd_domain *domain; + enum SID_NAME_USE name_type; DEBUG(3, ("[%5d]: getpwnam %s\n", state->pid, state->request.data.username)); |