1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-15 23:24:37 +03:00

need a domain resolving function, but get_trusted_serverlist() will do.

this is horrible.
This commit is contained in:
Luke Leighton -
parent 12e2b97321
commit 9df973fe71
3 changed files with 41 additions and 30 deletions

View File

@ -484,6 +484,7 @@ int set_maxfiles(int requested_max);
void reg_get_subkey(char *full_keyname, char *key_name, char *subkey_name);
BOOL reg_split_key(const char *full_keyname, uint32 *reg_type, char *key_name);
BOOL become_user_permanently(uid_t uid, gid_t gid);
char *get_trusted_serverlist(const char* domain);
/*The following definitions come from lib/util_array.c */

View File

@ -3228,3 +3228,37 @@ BOOL become_user_permanently(uid_t uid, gid_t gid)
return(True);
}
char *get_trusted_serverlist(const char* domain)
{
pstring tmp;
static char *server_list = NULL;
static pstring srv_list;
char *trusted_list = lp_trusted_domains();
if (strequal(lp_workgroup(), domain))
{
DEBUG(10,("local domain server list: %s\n", server_list));
pstrcpy(srv_list, lp_passwordserver());
return srv_list;
}
if (!next_token(&trusted_list, tmp, NULL, sizeof(tmp)))
{
return NULL;
}
do
{
fstring trust_dom;
split_at_first_component(tmp, trust_dom, '=', srv_list);
if (strequal(domain, trust_dom))
{
return srv_list;
DEBUG(10,("trusted: %s\n", server_list));
}
} while (next_token(NULL, tmp, NULL, sizeof(tmp)));
return NULL;
}

View File

@ -507,49 +507,25 @@ static BOOL check_domain_security(char *orig_user, char *domain,
uint16 acct_type = 0;
char *server_list = NULL;
pstring srv_list;
char *trusted_list = lp_trusted_domains();
if (lp_security() == SEC_SHARE || lp_security() == SEC_SERVER)
{
return False;
}
if (lp_security() == SEC_DOMAIN)
if (lp_security() == SEC_DOMAIN && strequal(domain, global_myworkgroup))
{
fstrcpy(acct_name, global_myname);
acct_type = SEC_CHAN_WKSTA;
if (strequal(lp_workgroup(), domain))
{
DEBUG(10,("local domain server list: %s\n", server_list));
pstrcpy(srv_list, lp_passwordserver());
server_list = srv_list;
}
}
if (server_list == NULL)
else
{
pstring tmp;
if (next_token(&trusted_list, tmp, NULL, sizeof(tmp)))
{
do
{
fstring trust_dom;
split_at_first_component(tmp, trust_dom, '=', srv_list);
if (strequal(domain, trust_dom))
{
DEBUG(10,("trusted domain server list: %s\n", server_list));
fstrcpy(acct_name, global_myworkgroup);
acct_type = SEC_CHAN_DOMAIN;
server_list = srv_list;
break;
}
} while (next_token(NULL, tmp, NULL, sizeof(tmp)));
}
fstrcpy(acct_name, global_myworkgroup);
acct_type = SEC_CHAN_DOMAIN;
}
server_list = get_trusted_serverlist(domain);
if (server_list == NULL)
{
return False;