Use rpccli_lsa_QueryInfoPolicy() all over the place.
authorGünther Deschner <gd@samba.org>
Fri, 8 Feb 2008 01:12:30 +0000 (02:12 +0100)
committerGünther Deschner <gd@samba.org>
Fri, 8 Feb 2008 09:26:20 +0000 (10:26 +0100)
Guenther
(This used to be commit ce22abcea3446e4ad42e8e04654b9855b173c5a1)

source3/rpcclient/rpcclient.c
source3/utils/net_rpc.c
source3/utils/net_rpc_join.c
source3/winbindd/winbindd_cm.c

index 7b499918b068b40f5664b06fd64b6f77567441b9..4a9b4acb7d2a19f5a57395c62d6ec57b376423ad 100644 (file)
@@ -133,12 +133,10 @@ static void fetch_machine_sid(struct cli_state *cli)
 {
        POLICY_HND pol;
        NTSTATUS result = NT_STATUS_OK;
-       uint32 info_class = 5;
-       const char *domain_name = NULL;
        static bool got_domain_sid;
        TALLOC_CTX *mem_ctx;
-       DOM_SID *dom_sid = NULL;
        struct rpc_pipe_client *lsapipe = NULL;
+       union lsa_PolicyInformation *info = NULL;
 
        if (got_domain_sid) return;
 
@@ -159,14 +157,16 @@ static void fetch_machine_sid(struct cli_state *cli)
                goto error;
        }
 
-       result = rpccli_lsa_query_info_policy(lsapipe, mem_ctx, &pol, info_class, 
-                                          &domain_name, &dom_sid);
+       result = rpccli_lsa_QueryInfoPolicy(lsapipe, mem_ctx,
+                                           &pol,
+                                           LSA_POLICY_INFO_ACCOUNT_DOMAIN,
+                                           &info);
        if (!NT_STATUS_IS_OK(result)) {
                goto error;
        }
 
        got_domain_sid = True;
-       sid_copy( &domain_sid, dom_sid );
+       sid_copy(&domain_sid, info->account_domain.sid);
 
        rpccli_lsa_Close(lsapipe, mem_ctx, &pol);
        cli_rpc_pipe_close(lsapipe);
index e8a4da792a49befca3a1a7722cdd553486ce6e8f..26d63a890f1ccc5e53a70e41d5ebb47cb0d26244 100644 (file)
@@ -62,8 +62,8 @@ NTSTATUS net_get_remote_domain_sid(struct cli_state *cli, TALLOC_CTX *mem_ctx,
        struct rpc_pipe_client *lsa_pipe;
        POLICY_HND pol;
        NTSTATUS result = NT_STATUS_OK;
-       uint32 info_class = 5;
-       
+       union lsa_PolicyInformation *info = NULL;
+
        lsa_pipe = cli_rpc_pipe_open_noauth(cli, PI_LSARPC, &result);
        if (!lsa_pipe) {
                d_fprintf(stderr, "Could not initialise lsa pipe\n");
@@ -79,15 +79,19 @@ NTSTATUS net_get_remote_domain_sid(struct cli_state *cli, TALLOC_CTX *mem_ctx,
                return result;
        }
 
-       result = rpccli_lsa_query_info_policy(lsa_pipe, mem_ctx, &pol,
-                                             info_class, domain_name,
-                                             domain_sid);
+       result = rpccli_lsa_QueryInfoPolicy(lsa_pipe, mem_ctx,
+                                           &pol,
+                                           LSA_POLICY_INFO_ACCOUNT_DOMAIN,
+                                           &info);
        if (!NT_STATUS_IS_OK(result)) {
                d_fprintf(stderr, "lsaquery failed: %s\n",
                          nt_errstr(result));
                return result;
        }
 
+       *domain_name = info->account_domain.name.string;
+       *domain_sid = info->account_domain.sid;
+
        rpccli_lsa_Close(lsa_pipe, mem_ctx, &pol);
        cli_rpc_pipe_close(lsa_pipe);
 
@@ -5836,10 +5840,10 @@ static int rpc_trustdom_establish(int argc, const char **argv)
        DOM_SID *domain_sid;
 
        char* domain_name;
-       const char* domain_name_pol;
        char* acct_name;
        fstring pdc_name;
        char *dc_name;
+       union lsa_PolicyInformation *info = NULL;
 
        /*
         * Connect to \\server\ipc$ as 'our domain' account with password
@@ -5941,10 +5945,11 @@ static int rpc_trustdom_establish(int argc, const char **argv)
        }
 
        /* Querying info level 5 */
-       
-       nt_status = rpccli_lsa_query_info_policy(pipe_hnd, mem_ctx, &connect_hnd,
-                                             5 /* info level */,
-                                             &domain_name_pol, &domain_sid);
+
+       nt_status = rpccli_lsa_QueryInfoPolicy(pipe_hnd, mem_ctx,
+                                              &connect_hnd,
+                                              LSA_POLICY_INFO_ACCOUNT_DOMAIN,
+                                              &info);
        if (NT_STATUS_IS_ERR(nt_status)) {
                DEBUG(0, ("LSA Query Info failed. Returned error was %s\n",
                        nt_errstr(nt_status)));
@@ -5953,6 +5958,8 @@ static int rpc_trustdom_establish(int argc, const char **argv)
                return -1;
        }
 
+       domain_sid = info->account_domain.sid;
+
        /* There should be actually query info level 3 (following nt serv behaviour),
           but I still don't know if it's _really_ necessary */
                        
@@ -6139,6 +6146,7 @@ static int rpc_trustdom_vampire(int argc, const char **argv)
        const char *domain_name = NULL;
        DOM_SID *queried_dom_sid;
        POLICY_HND connect_hnd;
+       union lsa_PolicyInformation *info = NULL;
 
        /* trusted domains listing variables */
        unsigned int num_domains, enum_ctx = 0;
@@ -6146,7 +6154,6 @@ static int rpc_trustdom_vampire(int argc, const char **argv)
        DOM_SID *domain_sids;
        char **trusted_dom_names;
        fstring pdc_name;
-       const char *dummy;
 
        /*
         * Listing trusted domains (stored in secrets.tdb, if local)
@@ -6197,9 +6204,10 @@ static int rpc_trustdom_vampire(int argc, const char **argv)
        };
 
        /* query info level 5 to obtain sid of a domain being queried */
-       nt_status = rpccli_lsa_query_info_policy(
-               pipe_hnd, mem_ctx, &connect_hnd, 5 /* info level */, 
-               &dummy, &queried_dom_sid);
+       nt_status = rpccli_lsa_QueryInfoPolicy(pipe_hnd, mem_ctx,
+                                              &connect_hnd,
+                                              LSA_POLICY_INFO_ACCOUNT_DOMAIN,
+                                              &info);
 
        if (NT_STATUS_IS_ERR(nt_status)) {
                DEBUG(0, ("LSA Query Info failed. Returned error was %s\n",
@@ -6209,6 +6217,8 @@ static int rpc_trustdom_vampire(int argc, const char **argv)
                return -1;
        }
 
+       queried_dom_sid = info->account_domain.sid;
+
        /*
         * Keep calling LsaEnumTrustdom over opened pipe until
         * the end of enumeration is reached
@@ -6279,15 +6289,15 @@ static int rpc_trustdom_list(int argc, const char **argv)
        fstring padding;
        int ascii_dom_name_len;
        POLICY_HND connect_hnd;
-       
+       union lsa_PolicyInformation *info = NULL;
+
        /* trusted domains listing variables */
        unsigned int num_domains, enum_ctx = 0;
        int i, pad_len, col_len = 20;
        DOM_SID *domain_sids;
        char **trusted_dom_names;
        fstring pdc_name;
-       const char *dummy;
-       
+
        /* trusting domains listing variables */
        POLICY_HND domain_hnd;
        char **trusting_dom_names;
@@ -6342,9 +6352,10 @@ static int rpc_trustdom_list(int argc, const char **argv)
        };
        
        /* query info level 5 to obtain sid of a domain being queried */
-       nt_status = rpccli_lsa_query_info_policy(
-               pipe_hnd, mem_ctx, &connect_hnd, 5 /* info level */, 
-               &dummy, &queried_dom_sid);
+       nt_status = rpccli_lsa_QueryInfoPolicy(pipe_hnd, mem_ctx,
+                                              &connect_hnd,
+                                              LSA_POLICY_INFO_ACCOUNT_DOMAIN,
+                                              &info);
 
        if (NT_STATUS_IS_ERR(nt_status)) {
                DEBUG(0, ("LSA Query Info failed. Returned error was %s\n",
@@ -6353,7 +6364,9 @@ static int rpc_trustdom_list(int argc, const char **argv)
                talloc_destroy(mem_ctx);
                return -1;
        }
-               
+
+       queried_dom_sid = info->account_domain.sid;
+
        /*
         * Keep calling LsaEnumTrustdom over opened pipe until
         * the end of enumeration is reached
index d678029c466cdff2bf2b27cc1a4d1a862eca9ba8..939a7246f7830b6370cdbea4282263ca2fc81e70 100644 (file)
@@ -169,6 +169,7 @@ int net_rpc_join_newstyle(int argc, const char **argv)
        struct lsa_String lsa_acct_name;
        uint32 acct_flags=0;
        uint32_t access_granted = 0;
+       union lsa_PolicyInformation *info = NULL;
 
        /* check what type of join */
        if (argc >= 0) {
@@ -218,10 +219,15 @@ int net_rpc_join_newstyle(int argc, const char **argv)
                                          &lsa_pol),
                      "error opening lsa policy handle");
 
-       CHECK_RPC_ERR(rpccli_lsa_query_info_policy(pipe_hnd, mem_ctx, &lsa_pol,
-                                               5, &domain, &domain_sid),
+       CHECK_RPC_ERR(rpccli_lsa_QueryInfoPolicy(pipe_hnd, mem_ctx,
+                                                &lsa_pol,
+                                                LSA_POLICY_INFO_ACCOUNT_DOMAIN,
+                                                &info),
                      "error querying info policy");
 
+       domain = info->account_domain.name.string;
+       domain_sid = info->account_domain.sid;
+
        rpccli_lsa_Close(pipe_hnd, mem_ctx, &lsa_pol);
        cli_rpc_pipe_close(pipe_hnd); /* Done with this pipe */
 
index ea48dbde72941d687af993a403c1c7eac3b57ef7..dbdab65f70843aa2bc4d51c8ab7d934798204cbd 100644 (file)
@@ -1837,9 +1837,6 @@ static void set_dc_type_and_flags_connect( struct winbindd_domain *domain )
        struct rpc_pipe_client  *cli;
        POLICY_HND pol;
        union dssetup_DsRoleInfo info;
-
-       const char *domain_name = NULL;
-       DOM_SID *dom_sid = NULL;
        union lsa_PolicyInformation *lsa_info = NULL;
 
        if (!connection_ok(domain)) {
@@ -1958,20 +1955,26 @@ no_dssetup:
                result = rpccli_lsa_open_policy(cli, mem_ctx, True, 
                                                SEC_RIGHTS_MAXIMUM_ALLOWED,
                                                &pol);
-                       
-               if (!NT_STATUS_IS_OK(result))
+
+               if (!NT_STATUS_IS_OK(result)) {
                        goto done;
-                       
-               result = rpccli_lsa_query_info_policy(cli, mem_ctx, 
-                                                     &pol, 5, &domain_name, 
-                                                     &dom_sid);
-                       
+               }
+
+               result = rpccli_lsa_QueryInfoPolicy(cli, mem_ctx,
+                                                   &pol,
+                                                   LSA_POLICY_INFO_ACCOUNT_DOMAIN,
+                                                   &lsa_info);
+
                if (NT_STATUS_IS_OK(result)) {
-                       if (domain_name)
-                               fstrcpy(domain->name, domain_name);
 
-                       if (dom_sid) 
-                               sid_copy(&domain->sid, dom_sid);
+                       if (lsa_info->account_domain.name.string) {
+                               fstrcpy(domain->name,
+                                       lsa_info->account_domain.name.string);
+                       }
+
+                       if (lsa_info->account_domain.sid) {
+                               sid_copy(&domain->sid, lsa_info->account_domain.sid);
+                       }
                }
        }
 done: