summaryrefslogtreecommitdiff
path: root/source3/nsswitch
diff options
context:
space:
mode:
Diffstat (limited to 'source3/nsswitch')
-rw-r--r--source3/nsswitch/nss.h60
-rw-r--r--source3/nsswitch/wbinfo.c65
-rw-r--r--source3/nsswitch/winbind_nss_config.h34
-rw-r--r--source3/nsswitch/winbindd_idmap.c4
-rw-r--r--source3/nsswitch/winbindd_nss.h2
-rw-r--r--source3/nsswitch/winbindd_user.c3
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));