summaryrefslogtreecommitdiff
path: root/source3/winbindd/winbindd_passdb.c
diff options
context:
space:
mode:
Diffstat (limited to 'source3/winbindd/winbindd_passdb.c')
-rw-r--r--source3/winbindd/winbindd_passdb.c20
1 files changed, 18 insertions, 2 deletions
diff --git a/source3/winbindd/winbindd_passdb.c b/source3/winbindd/winbindd_passdb.c
index 8387565a74..5677c01be1 100644
--- a/source3/winbindd/winbindd_passdb.c
+++ b/source3/winbindd/winbindd_passdb.c
@@ -94,6 +94,7 @@ static NTSTATUS name_to_sid(struct winbindd_domain *domain,
DOM_SID *sid,
enum lsa_SidType *type)
{
+ const char *fullname;
uint32 flags = LOOKUP_NAME_ALL;
switch ( original_cmd ) {
@@ -107,12 +108,27 @@ static NTSTATUS name_to_sid(struct winbindd_domain *domain,
break;
}
- DEBUG(10, ("Finding name %s\n", name));
+ if (domain_name && domain_name[0] && strchr_m(name, '\\') == NULL) {
+ fullname = talloc_asprintf(mem_ctx, "%s\\%s",
+ domain_name, name);
+ if (fullname == NULL) {
+ return NT_STATUS_NO_MEMORY;
+ }
+ } else {
+ fullname = name;
+ }
+
+ DEBUG(10, ("Finding fullname %s\n", fullname));
- if ( !lookup_name( mem_ctx, name, flags, NULL, NULL, sid, type ) ) {
+ if ( !lookup_name( mem_ctx, fullname, flags, NULL, NULL, sid, type ) ) {
return NT_STATUS_NONE_MAPPED;
}
+ DEBUG(10, ("name_to_sid for %s returned %s (%s)\n",
+ fullname,
+ sid_string_dbg(sid),
+ sid_type_lookup((uint32)*type)));
+
return NT_STATUS_OK;
}