summaryrefslogtreecommitdiff
path: root/source3/nsswitch
diff options
context:
space:
mode:
authorTim Potter <tpot@samba.org>2001-10-10 23:08:13 +0000
committerTim Potter <tpot@samba.org>2001-10-10 23:08:13 +0000
commit1f48b3640f971705d53e2f59aab311927b7c54a5 (patch)
tree1889da0c43b77f1b1758e8c55cca3d8581147a30 /source3/nsswitch
parentde2ece0543bbd0b013310667ebdf33abe78a0ac4 (diff)
downloadsamba-1f48b3640f971705d53e2f59aab311927b7c54a5.tar.gz
samba-1f48b3640f971705d53e2f59aab311927b7c54a5.tar.bz2
samba-1f48b3640f971705d53e2f59aab311927b7c54a5.zip
Got the rest of the group functions working. Did some reformatting (man
what was I thinking with those 4 character tabs?) We now pass our winbindd test suite again! Still to do: - talloc_ctx on a per winbindd request basis not per connection - clean up old crap we don't use any more - test against multiple BDCs (I know this isn't going to work - group/user handles have to be made against the same DC the domain and basic handles are. - implement network and dc failure recovery (This used to be commit dc4ca0e0bd779b9157ea3b2a8f17eb455abf0f26)
Diffstat (limited to 'source3/nsswitch')
-rw-r--r--source3/nsswitch/winbindd.c9
-rw-r--r--source3/nsswitch/winbindd_group.c36
-rw-r--r--source3/nsswitch/winbindd_util.c60
3 files changed, 37 insertions, 68 deletions
diff --git a/source3/nsswitch/winbindd.c b/source3/nsswitch/winbindd.c
index 4a01b06ea9..ffac199b6a 100644
--- a/source3/nsswitch/winbindd.c
+++ b/source3/nsswitch/winbindd.c
@@ -238,16 +238,12 @@ static struct dispatch_table dispatch_table[] = {
/* Group functions */
-#if 0
{ WINBINDD_GETGRNAM_FROM_GROUP, winbindd_getgrnam_from_group },
{ WINBINDD_GETGRNAM_FROM_GID, winbindd_getgrnam_from_gid },
-#endif
{ WINBINDD_SETGRENT, winbindd_setgrent },
{ WINBINDD_ENDGRENT, winbindd_endgrent },
{ WINBINDD_GETGRENT, winbindd_getgrent },
-#if 0
-
/* PAM auth functions */
{ WINBINDD_PAM_AUTH, winbindd_pam_auth },
@@ -256,13 +252,10 @@ static struct dispatch_table dispatch_table[] = {
/* Enumeration functions */
-#endif
-
{ WINBINDD_LIST_USERS, winbindd_list_users },
{ WINBINDD_LIST_GROUPS, winbindd_list_groups },
{ WINBINDD_LIST_TRUSTDOM, winbindd_list_trusted_domains },
-#if 0
/* SID related functions */
{ WINBINDD_LOOKUPSID, winbindd_lookupsid },
@@ -279,8 +272,6 @@ static struct dispatch_table dispatch_table[] = {
{ WINBINDD_CHECK_MACHACC, winbindd_check_machine_acct },
-#endif
-
/* End of list */
{ WINBINDD_NUM_CMDS, NULL }
diff --git a/source3/nsswitch/winbindd_group.c b/source3/nsswitch/winbindd_group.c
index f13f44b8cf..dd3e7a9578 100644
--- a/source3/nsswitch/winbindd_group.c
+++ b/source3/nsswitch/winbindd_group.c
@@ -183,8 +183,6 @@ static BOOL fill_grent_mem(struct winbindd_domain *domain,
return result;
}
-#if 0
-
/* Return a group structure from a group name */
enum winbindd_result winbindd_getgrnam_from_group(struct winbindd_cli_state
@@ -212,9 +210,8 @@ enum winbindd_result winbindd_getgrnam_from_group(struct winbindd_cli_state
/* Reject names that don't have a domain - i.e name_domain contains
the entire name. */
- if (strequal(name_group, "")) {
+ if (strequal(name_group, ""))
return WINBINDD_ERROR;
- }
/* Get info for the domain */
@@ -224,10 +221,6 @@ enum winbindd_result winbindd_getgrnam_from_group(struct winbindd_cli_state
return WINBINDD_ERROR;
}
- if (!domain_handles_open(domain)) {
- return WINBINDD_ERROR;
- }
-
/* Check for cached group entry */
if (winbindd_fetch_group_cache_entry(name_domain, name_group,
@@ -267,9 +260,8 @@ enum winbindd_result winbindd_getgrnam_from_group(struct winbindd_cli_state
state->request.data.groupname, gid) ||
!fill_grent_mem(domain, group_rid, name_type,
&state->response.data.gr.num_gr_mem,
- &gr_mem, &gr_mem_len)) {
+ &gr_mem, &gr_mem_len))
return WINBINDD_ERROR;
- }
/* Group membership lives at start of extra data */
@@ -301,15 +293,14 @@ enum winbindd_result winbindd_getgrnam_from_gid(struct winbindd_cli_state
int extra_data_len, gr_mem_len;
char *gr_mem;
+ DEBUG(3, ("[%5d]: getgrgid %d\n", state->pid,
+ state->request.data.gid));
+
/* Bug out if the gid isn't in the winbind range */
if ((state->request.data.gid < server_state.gid_low) ||
- (state->request.data.gid > server_state.gid_high)) {
+ (state->request.data.gid > server_state.gid_high))
return WINBINDD_ERROR;
- }
-
- DEBUG(3, ("[%5d]: getgrgid %d\n", state->pid,
- state->request.data.gid));
/* Get rid from gid */
@@ -320,10 +311,6 @@ enum winbindd_result winbindd_getgrnam_from_gid(struct winbindd_cli_state
return WINBINDD_ERROR;
}
- if (!domain_handles_open(domain)) {
- return WINBINDD_ERROR;
- }
-
/* Try a cached entry */
if (winbindd_fetch_gid_cache_entry(domain->name,
@@ -345,10 +332,9 @@ enum winbindd_result winbindd_getgrnam_from_gid(struct winbindd_cli_state
return WINBINDD_ERROR;
}
- if (strcmp(lp_winbind_separator(),"\\")) {
+ if (strcmp(lp_winbind_separator(),"\\"))
string_sub(group_name, "\\", lp_winbind_separator(),
sizeof(fstring));
- }
if (!((name_type == SID_NAME_ALIAS) ||
(name_type == SID_NAME_DOM_GRP))) {
@@ -363,10 +349,8 @@ enum winbindd_result winbindd_getgrnam_from_gid(struct winbindd_cli_state
state->request.data.gid) ||
!fill_grent_mem(domain, group_rid, name_type,
&state->response.data.gr.num_gr_mem,
- &gr_mem, &gr_mem_len)) {
+ &gr_mem, &gr_mem_len))
return WINBINDD_ERROR;
- }
-
/* Group membership lives at start of extra data */
@@ -385,8 +369,6 @@ enum winbindd_result winbindd_getgrnam_from_gid(struct winbindd_cli_state
return WINBINDD_OK;
}
-#endif
-
/*
* set/get/endgrent functions
*/
@@ -446,8 +428,6 @@ enum winbindd_result winbindd_endgrent(struct winbindd_cli_state *state)
{
DEBUG(3, ("[%5d]: endgrent\n", state->pid));
- if (state == NULL) return WINBINDD_ERROR;
-
free_getent_state(state->getgrent_state);
state->getgrent_state = NULL;
diff --git a/source3/nsswitch/winbindd_util.c b/source3/nsswitch/winbindd_util.c
index a5e558f658..23f46f239a 100644
--- a/source3/nsswitch/winbindd_util.c
+++ b/source3/nsswitch/winbindd_util.c
@@ -29,34 +29,35 @@
static struct winbindd_domain *add_trusted_domain(char *domain_name,
DOM_SID *domain_sid)
{
- struct winbindd_domain *domain, *tmp;
-
- for (tmp = domain_list; tmp != NULL; tmp = tmp->next) {
- if (strcmp(domain_name, tmp->name) == 0) {
- DEBUG(3, ("domain %s already in domain list\n",
- domain_name));
- return tmp;
- }
- }
-
- DEBUG(1, ("adding domain %s\n", domain_name));
-
- /* Create new domain entry */
-
- if ((domain = (struct winbindd_domain *)malloc(sizeof(*domain))) == NULL)
- return NULL;
-
- /* Fill in fields */
-
- ZERO_STRUCTP(domain);
- fstrcpy(domain->name, domain_name);
- sid_copy(&domain->sid, domain_sid);
-
- /* Link to domain list */
-
- DLIST_ADD(domain_list, domain);
+ struct winbindd_domain *domain, *tmp;
+
+ for (tmp = domain_list; tmp != NULL; tmp = tmp->next) {
+ if (strcmp(domain_name, tmp->name) == 0) {
+ DEBUG(3, ("domain %s already in domain list\n",
+ domain_name));
+ return tmp;
+ }
+ }
+
+ DEBUG(1, ("adding domain %s\n", domain_name));
+
+ /* Create new domain entry */
+
+ if ((domain = (struct winbindd_domain *)
+ malloc(sizeof(*domain))) == NULL)
+ return NULL;
- return domain;
+ /* Fill in fields */
+
+ ZERO_STRUCTP(domain);
+ fstrcpy(domain->name, domain_name);
+ sid_copy(&domain->sid, domain_sid);
+
+ /* Link to domain list */
+
+ DLIST_ADD(domain_list, domain);
+
+ return domain;
}
/* Look up global info for the winbind daemon */
@@ -674,11 +675,8 @@ struct winbindd_domain *find_domain_from_sid(DOM_SID *sid)
/* Search through list */
for (tmp = domain_list; tmp != NULL; tmp = tmp->next) {
- if (sid_equal(sid, &tmp->sid)) {
- if (!tmp->got_domain_info)
- return NULL;
+ if (sid_equal(sid, &tmp->sid))
return tmp;
- }
}
/* Not found */