diff options
author | Gerald Carter <jerry@samba.org> | 2003-06-21 04:05:01 +0000 |
---|---|---|
committer | Gerald Carter <jerry@samba.org> | 2003-06-21 04:05:01 +0000 |
commit | 93bcb9963bef53b91a0b16c6389cefdb7bea2b0e (patch) | |
tree | 25622225b6bab1d54e82d4871254eed7d2c110f5 /source3/nsswitch/wb_client.c | |
parent | f70cc4cdc188fd8bf9f8f84cb55d15c122e463dd (diff) | |
download | samba-93bcb9963bef53b91a0b16c6389cefdb7bea2b0e.tar.gz samba-93bcb9963bef53b91a0b16c6389cefdb7bea2b0e.tar.xz samba-93bcb9963bef53b91a0b16c6389cefdb7bea2b0e.zip |
merge of the netsamlogon caching code from APPLIANCE_HEAD
This replaces the universal group caching code (was originally
based on that code). Only applies to the the RPC code.
One comment: domain local groups don't show up in 'getent group'
that's easy to fix.
Code has been tested against 2k domain but doesn't change anything
with respect to NT4 domains.
netsamlogon caching works pretty much like the universal group
caching code did but has had much more testing and puts winbind
mostly back in sync between branches.
(This used to be commit aac01dc7bc95c20ee21c93f3581e2375d9a894e1)
Diffstat (limited to 'source3/nsswitch/wb_client.c')
-rw-r--r-- | source3/nsswitch/wb_client.c | 26 |
1 files changed, 2 insertions, 24 deletions
diff --git a/source3/nsswitch/wb_client.c b/source3/nsswitch/wb_client.c index 996d15180dc..b1765a8bd7d 100644 --- a/source3/nsswitch/wb_client.c +++ b/source3/nsswitch/wb_client.c @@ -269,11 +269,8 @@ static int wb_getgroups(const char *user, gid_t **groups) time consuming. If size is zero, list is not modified and the total number of groups for the user is returned. */ -int winbind_getgroups(const char *user, int size, gid_t *list) +int winbind_getgroups(const char *user, gid_t **list) { - gid_t *groups = NULL; - int result, i; - /* * Don't do the lookup if the name has no separator _and_ we are not in * 'winbind use default domain' mode. @@ -284,24 +281,5 @@ int winbind_getgroups(const char *user, int size, gid_t *list) /* Fetch list of groups */ - result = wb_getgroups(user, &groups); - - if (size == 0) - goto done; - - if (result > size) { - result = -1; - errno = EINVAL; /* This is what getgroups() does */ - goto done; - } - - /* Copy list of groups across */ - - for (i = 0; i < result; i++) { - list[i] = groups[i]; - } - - done: - SAFE_FREE(groups); - return result; + return wb_getgroups(user, list); } |