need a domain resolving function, but get_trusted_serverlist() will do.
authorLuke Leighton <lkcl@samba.org>
Thu, 2 Dec 1999 16:52:38 +0000 (16:52 +0000)
committerLuke Leighton <lkcl@samba.org>
Thu, 2 Dec 1999 16:52:38 +0000 (16:52 +0000)
this is horrible.
(This used to be commit 9df973fe711f322075d86d6792d6c0b8539c1d00)

source3/include/proto.h
source3/lib/util.c
source3/smbd/reply.c

index eb898c44de6156a513e469e15138f3e39bf203cc..ff74fd90e1fdbd34d3e704ab3e246855b9b0cb50 100644 (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  */
 
index 9bcbe1a9c7c1204ced51a52631ec4bad3657733b..b0d6e82970ee90e92a1658fc2f2666aff81146c2 100644 (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;
+}
index d5d0884436f101c244a8faf939d423bd77e8052e..5cf2ac2a7a70967232a653fb3b878b0adcdb10f1 100644 (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;