summaryrefslogtreecommitdiff
path: root/source3/passdb
diff options
context:
space:
mode:
authorVolker Lendecke <vlendec@samba.org>2005-11-26 22:28:41 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 11:05:36 -0500
commit10bc204efb9a56d1f1f53326d4354e39851e635a (patch)
tree1714615ba456d2a65dee19ccf61872bdbd79bdff /source3/passdb
parent046a8873b9001662eff7bbdf549d2a511216c092 (diff)
downloadsamba-10bc204efb9a56d1f1f53326d4354e39851e635a.tar.gz
samba-10bc204efb9a56d1f1f53326d4354e39851e635a.tar.bz2
samba-10bc204efb9a56d1f1f53326d4354e39851e635a.zip
r11923: Add samr_lookup_rids for the builtin domain. Doing it this way feels a bit
wrong, but so far we don't have proper multi-domain support in passdb yet... Volker (This used to be commit c917cfc320f0250d23fda3525a7632bc01643707)
Diffstat (limited to 'source3/passdb')
-rw-r--r--source3/passdb/pdb_interface.c37
1 files changed, 26 insertions, 11 deletions
diff --git a/source3/passdb/pdb_interface.c b/source3/passdb/pdb_interface.c
index 9605349781..875e264bf0 100644
--- a/source3/passdb/pdb_interface.c
+++ b/source3/passdb/pdb_interface.c
@@ -1652,24 +1652,38 @@ NTSTATUS pdb_default_lookup_rids(struct pdb_methods *methods,
BOOL have_mapped = False;
BOOL have_unmapped = False;
- if (!sid_equal(domain_sid, get_global_sam_sid())) {
- /* TODO: Sooner or later we need to look up BUILTIN rids as
- * well. -- vl */
+ if (sid_check_is_builtin(domain_sid)) {
+
+ for (i=0; i<num_rids; i++) {
+ fstring name;
+
+ if (lookup_builtin_rid(rids[i], name)) {
+ attrs[i] = SID_NAME_ALIAS;
+ names[i] = talloc_strdup(names, name);
+ if (names[i] == NULL) {
+ return NT_STATUS_NO_MEMORY;
+ }
+ DEBUG(5,("lookup_rids: %s:%d\n",
+ names[i], attrs[i]));
+ have_mapped = True;
+ } else {
+ have_unmapped = True;
+ attrs[i] = SID_NAME_UNKNOWN;
+ }
+ }
goto done;
}
+ /* Should not happen, but better check once too many */
+ if (!sid_check_is_domain(domain_sid)) {
+ return NT_STATUS_INVALID_HANDLE;
+ }
+
for (i = 0; i < num_rids; i++) {
fstring tmpname;
- fstring domname;
- DOM_SID sid;
enum SID_NAME_USE type;
- attrs[i] = SID_NAME_UNKNOWN;
-
- sid_copy(&sid, domain_sid);
- sid_append_rid(&sid, rids[i]);
-
- if (lookup_sid(&sid, domname, tmpname, &type)) {
+ if (lookup_global_sam_rid(rids[i], tmpname, &type)) {
attrs[i] = (uint32)type;
names[i] = talloc_strdup(names, tmpname);
if (names[i] == NULL)
@@ -1678,6 +1692,7 @@ NTSTATUS pdb_default_lookup_rids(struct pdb_methods *methods,
have_mapped = True;
} else {
have_unmapped = True;
+ attrs[i] = SID_NAME_UNKNOWN;
}
}