mirror of
https://github.com/samba-team/samba.git
synced 2025-02-03 13:47:25 +03:00
Make our 'get DNS domain name' code try a bit harder - if gethostname() doesn't
include a domain portion, do a gethostbyname() lookup on that name. Use this name in our PolicyPrimaryDomainInformation reply (_lsa_query_info2) that Win2k uses when trying to trust us as a trusted domain. (We need to do a better mapping between our Netbios and Win2k domain names, but this will do for now - particularly annoying is the way this possibly needs to map with our kerberos realm). Andrew Bartlett (This used to be commit 3be03271030208a69da29c6e2a7b92cdbaa8c6aa)
This commit is contained in:
parent
69321d1fc4
commit
8de48f3093
@ -1012,6 +1012,7 @@ BOOL get_mydomname(fstring my_domname)
|
||||
{
|
||||
pstring hostname;
|
||||
char *p;
|
||||
struct hostent *hp;
|
||||
|
||||
*hostname = 0;
|
||||
/* get my host name */
|
||||
@ -1023,17 +1024,31 @@ BOOL get_mydomname(fstring my_domname)
|
||||
/* Ensure null termination. */
|
||||
hostname[sizeof(hostname)-1] = '\0';
|
||||
|
||||
|
||||
p = strchr_m(hostname, '.');
|
||||
|
||||
if (!p)
|
||||
if (p) {
|
||||
p++;
|
||||
|
||||
if (my_domname)
|
||||
fstrcpy(my_domname, p);
|
||||
}
|
||||
|
||||
if (!(hp = sys_gethostbyname(hostname))) {
|
||||
return False;
|
||||
|
||||
p++;
|
||||
}
|
||||
|
||||
if (my_domname)
|
||||
fstrcpy(my_domname, p);
|
||||
p = strchr_m(hp->h_name, '.');
|
||||
|
||||
return True;
|
||||
if (p) {
|
||||
p++;
|
||||
|
||||
if (my_domname)
|
||||
fstrcpy(my_domname, p);
|
||||
return True;
|
||||
}
|
||||
|
||||
return False;
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
@ -52,7 +52,7 @@ static void free_lsa_info(void *ptr)
|
||||
{
|
||||
struct lsa_info *lsa = (struct lsa_info *)ptr;
|
||||
|
||||
SAFE_FREE(lsa);
|
||||
SAFE_FRE(lsa);
|
||||
}
|
||||
|
||||
/***************************************************************************
|
||||
@ -1222,6 +1222,7 @@ NTSTATUS _lsa_query_info2(pipes_struct *p, LSA_Q_QUERY_INFO2 *q_u, LSA_R_QUERY_I
|
||||
char *forest_name = NULL;
|
||||
DOM_SID *sid = NULL;
|
||||
GUID guid;
|
||||
fstring dnsdomname;
|
||||
|
||||
ZERO_STRUCT(guid);
|
||||
r_u->status = NT_STATUS_OK;
|
||||
@ -1241,8 +1242,15 @@ NTSTATUS _lsa_query_info2(pipes_struct *p, LSA_Q_QUERY_INFO2 *q_u, LSA_R_QUERY_I
|
||||
case ROLE_DOMAIN_BDC:
|
||||
nb_name = lp_workgroup();
|
||||
/* ugly temp hack for these next two */
|
||||
dns_name = lp_realm();
|
||||
forest_name = lp_realm();
|
||||
|
||||
/* This should be a 'netbios domain -> DNS domain' mapping */
|
||||
dnsdomname[0] = '\0';
|
||||
get_mydomname(dnsdomname);
|
||||
strlower(dnsdomname);
|
||||
|
||||
dns_name = dnsdomname;
|
||||
forest_name = dnsdomname;
|
||||
|
||||
sid = get_global_sam_sid();
|
||||
secrets_fetch_domain_guid(lp_workgroup(), &guid);
|
||||
break;
|
||||
|
Loading…
x
Reference in New Issue
Block a user