return false;
}
+ DEBUG(10, ("lookup_name called with [%s]\n", full_name));
+
p = strchr_m(full_name, '\\');
if (p != NULL) {
if ((flags & LOOKUP_NAME_DOMAIN) &&
strequal(domain, get_global_sam_name()))
{
+ DEBUG(10, ("%s is our own domain\n", domain));
/* It's our own domain, lookup the name in passdb */
if (lookup_global_sam_name(name, flags, &rid, &type)) {
if ((flags & LOOKUP_NAME_BUILTIN) &&
strequal(domain, builtin_domain_name()))
{
+ DEBUG(10, ("%s is the builtin domain\n", domain));
+
if (strlen(name) == 0) {
/* Swap domain and name */
tmp = name; name = domain; domain = tmp;
if ((domain[0] != '\0') &&
(flags & ~(LOOKUP_NAME_DOMAIN|LOOKUP_NAME_ISOLATED)) &&
(winbind_lookup_name(domain, name, &sid, &type))) {
+ DEBUG(10, ("%s\\%s was looked up by winbind\n", domain, name));
goto ok;
}
return false;
}
+ DEBUG(10, ("guesswork for domain [%s] begins\n", domain));
+
/* Now the guesswork begins, we haven't been given an explicit
* domain. Try the sequence as documented on
* http://msdn.microsoft.com/library/en-us/secmgmt/security/lsalookupnames.asp
if ((flags & LOOKUP_NAME_WKN) &&
lookup_wellknown_name(tmp_ctx, name, &sid, &domain))
{
+ DEBUG(10, ("%s is a well known name\n", full_name));
type = SID_NAME_WKN_GRP;
goto ok;
}
if ((flags & (LOOKUP_NAME_BUILTIN|LOOKUP_NAME_REMOTE)) &&
strequal(name, builtin_domain_name()))
{
+ DEBUG(10, ("%s is a builtin name\n", full_name));
/* Swap domain and name */
tmp = name; name = domain; domain = tmp;
sid_copy(&sid, &global_sid_Builtin);
TALLOC_FREE(tmp_ctx);
return false;
}
+ DEBUG(10, ("%s is a global sam name\n", full_name));
/* Swap domain and name */
tmp = name; name = domain; domain = tmp;
type = SID_NAME_DOMAIN;
TALLOC_FREE(tmp_ctx);
return false;
}
+ DEBUG(10, ("%s is our primary domain name\n", full_name));
/* Swap domain and name */
tmp = name; name = domain; domain = tmp;
type = SID_NAME_DOMAIN;
if ((flags & LOOKUP_NAME_REMOTE) && IS_DC &&
(pdb_get_trusteddom_pw(name, NULL, &sid, NULL)))
{
+ DEBUG(10, ("%s is a trusted domain name\n", full_name));
/* Swap domain and name */
tmp = name; name = domain; domain = tmp;
type = SID_NAME_DOMAIN;
if ((flags & LOOKUP_NAME_BUILTIN) &&
lookup_builtin_name(name, &rid))
{
+ DEBUG(10, ("%s is a builtin alias\n", full_name));
domain = talloc_strdup(tmp_ctx, builtin_domain_name());
sid_compose(&sid, &global_sid_Builtin, rid);
type = SID_NAME_ALIAS;
if ((flags & LOOKUP_NAME_DOMAIN) &&
lookup_global_sam_name(name, flags, &rid, &type))
{
+ DEBUG(10, ("%s is a global sam name\n", full_name));
domain = talloc_strdup(tmp_ctx, get_global_sam_name());
sid_compose(&sid, get_global_sam_sid(), rid);
goto ok;
if (!IS_DC &&
(winbind_lookup_name(lp_workgroup(), name, &sid, &type))) {
+ DEBUG(10, ("%s was converted by winbind with our workgroup "
+ "name\n", full_name));
domain = talloc_strdup(tmp_ctx, lp_workgroup());
goto ok;
}