summaryrefslogtreecommitdiffstats
path: root/source3/passdb/pdb_wbc_sam.c
diff options
context:
space:
mode:
authorGarming Sam <garming@catalyst.net.nz>2014-11-25 14:45:26 +1300
committerGarming Sam <garming@samba.org>2014-12-03 04:21:09 +0100
commit7979c6cc50eaa792e5094866878c63df36e715c3 (patch)
tree114195414f6efaa628aaeb4e8c21f07199a02a0e /source3/passdb/pdb_wbc_sam.c
parent3b90bfb1089e6a4b7e05e7ed62bb642521f57917 (diff)
downloadsamba-7979c6cc50eaa792e5094866878c63df36e715c3.tar.gz
samba-7979c6cc50eaa792e5094866878c63df36e715c3.tar.xz
samba-7979c6cc50eaa792e5094866878c63df36e715c3.zip
idmap: unify passdb *id_to_sid methods
Instead of passing down gid or uid, a pointer to a unixid is now sent down. This acts as an in-out variable so that the idmap functions can correctly receive ID_TYPE_BOTH, filling in cache details correctly rather than forcing the cache to store ID_TYPE_UID or ID_TYPE_GID. BUG: https://bugzilla.samba.org/show_bug.cgi?id=10720 Change-Id: I11409a0f498e61a3c0a6ae606dd7af1135e6b066 Pair-programmed-with: Andrew Bartlett <abarlet@samba.org> Signed-off-by: Garming Sam <garming@catalyst.net.nz> Reviewed-by: Andrew Bartlett <abartlet@samba.org> Reviewed-by: Stefan Metzmacher <metze@samba.org>
Diffstat (limited to 'source3/passdb/pdb_wbc_sam.c')
-rw-r--r--source3/passdb/pdb_wbc_sam.c23
1 files changed, 13 insertions, 10 deletions
diff --git a/source3/passdb/pdb_wbc_sam.c b/source3/passdb/pdb_wbc_sam.c
index 23436496cd..b20a35a4fa 100644
--- a/source3/passdb/pdb_wbc_sam.c
+++ b/source3/passdb/pdb_wbc_sam.c
@@ -40,6 +40,7 @@
#include "passdb.h"
#include "lib/winbind_util.h"
#include "passdb/pdb_wbc_sam.h"
+#include "idmap.h"
/***************************************************************************
Default implementations of some functions.
@@ -72,16 +73,19 @@ static NTSTATUS pdb_wbc_sam_getsampwsid(struct pdb_methods *methods, struct samu
return _pdb_wbc_sam_getsampw(methods, user, winbind_getpwsid(sid));
}
-static bool pdb_wbc_sam_uid_to_sid(struct pdb_methods *methods, uid_t uid,
- struct dom_sid *sid)
+static bool pdb_wbc_sam_id_to_sid(struct pdb_methods *methods, struct unixid *id,
+ struct dom_sid *sid)
{
- return winbind_uid_to_sid(sid, uid);
-}
+ switch (id->type) {
+ case ID_TYPE_UID:
+ return winbind_uid_to_sid(sid, id->id);
-static bool pdb_wbc_sam_gid_to_sid(struct pdb_methods *methods, gid_t gid,
- struct dom_sid *sid)
-{
- return winbind_gid_to_sid(sid, gid);
+ case ID_TYPE_GID:
+ return winbind_gid_to_sid(sid, id->id);
+
+ default:
+ return false;
+ }
}
static NTSTATUS pdb_wbc_sam_enum_group_members(struct pdb_methods *methods,
@@ -426,8 +430,7 @@ static NTSTATUS pdb_init_wbc_sam(struct pdb_methods **pdb_method, const char *lo
(*pdb_method)->lookup_rids = pdb_wbc_sam_lookup_rids;
(*pdb_method)->get_account_policy = pdb_wbc_sam_get_account_policy;
(*pdb_method)->set_account_policy = pdb_wbc_sam_set_account_policy;
- (*pdb_method)->uid_to_sid = pdb_wbc_sam_uid_to_sid;
- (*pdb_method)->gid_to_sid = pdb_wbc_sam_gid_to_sid;
+ (*pdb_method)->id_to_sid = pdb_wbc_sam_id_to_sid;
(*pdb_method)->search_groups = pdb_wbc_sam_search_groups;
(*pdb_method)->search_aliases = pdb_wbc_sam_search_aliases;