Use pidl for _samr_LookupDomain().
authorGünther Deschner <gd@samba.org>
Tue, 5 Feb 2008 00:29:49 +0000 (01:29 +0100)
committerGünther Deschner <gd@samba.org>
Tue, 5 Feb 2008 09:09:50 +0000 (10:09 +0100)
Guenther
(This used to be commit 9bc106ba56d3a965a5fcd76ce18ccd30baa06eb4)

source3/rpc_server/srv_samr.c
source3/rpc_server/srv_samr_nt.c

index 012503b3e705b50e82daa5f704c017036e7d76ce..8c71e5ea1ee92316147d490a1a3a35914cf7917b 100644 (file)
@@ -507,27 +507,7 @@ static bool api_samr_connect5(pipes_struct *p)
 
 static bool api_samr_lookup_domain(pipes_struct *p)
 {
-       SAMR_Q_LOOKUP_DOMAIN q_u;
-       SAMR_R_LOOKUP_DOMAIN r_u;
-       prs_struct *data = &p->in_data.data;
-       prs_struct *rdata = &p->out_data.rdata;
-  
-       ZERO_STRUCT(q_u);
-       ZERO_STRUCT(r_u);
-
-       if(!samr_io_q_lookup_domain("", &q_u, data, 0)) {
-               DEBUG(0,("api_samr_lookup_domain: Unable to unmarshall SAMR_Q_LOOKUP_DOMAIN.\n"));
-               return False;
-       }
-
-       r_u.status = _samr_lookup_domain(p, &q_u, &r_u);
-       
-       if(!samr_io_r_lookup_domain("", &r_u, rdata, 0)){
-               DEBUG(0,("api_samr_lookup_domain: Unable to marshall SAMR_R_LOOKUP_DOMAIN.\n"));
-               return False;
-       }
-       
-       return True;
+       return proxy_samr_call(p, NDR_SAMR_LOOKUPDOMAIN);
 }
 
 /**********************************************************************
index 08df3c6e076da4ed87915752766b843f2c59ce03..10a32675e272af8d18bee678dbc56f44f08a2b35 100644 (file)
@@ -2847,47 +2847,50 @@ NTSTATUS _samr_Connect5(pipes_struct *p,
 }
 
 /**********************************************************************
api_samr_lookup_domain
_samr_LookupDomain
  **********************************************************************/
-
-NTSTATUS _samr_lookup_domain(pipes_struct *p, SAMR_Q_LOOKUP_DOMAIN *q_u, SAMR_R_LOOKUP_DOMAIN *r_u)
+NTSTATUS _samr_LookupDomain(pipes_struct *p,
+                           struct samr_LookupDomain *r)
 {
+       NTSTATUS status = NT_STATUS_OK;
        struct samr_info *info;
-       fstring domain_name;
-       DOM_SID sid;
-
-       r_u->status = NT_STATUS_OK;
+       const char *domain_name;
+       DOM_SID *sid = NULL;
 
-       if (!find_policy_by_hnd(p, &q_u->connect_pol, (void**)(void *)&info))
+       if (!find_policy_by_hnd(p, r->in.connect_handle, (void**)(void *)&info))
                return NT_STATUS_INVALID_HANDLE;
 
        /* win9x user manager likes to use SA_RIGHT_SAM_ENUM_DOMAINS here.  
           Reverted that change so we will work with RAS servers again */
 
-       if (!NT_STATUS_IS_OK(r_u->status = access_check_samr_function(info->acc_granted, 
-               SA_RIGHT_SAM_OPEN_DOMAIN, "_samr_lookup_domain"))) 
-       {
-               return r_u->status;
+       status = access_check_samr_function(info->acc_granted,
+                                           SA_RIGHT_SAM_OPEN_DOMAIN,
+                                           "_samr_LookupDomain");
+       if (!NT_STATUS_IS_OK(status)) {
+               return status;
        }
 
-       rpcstr_pull(domain_name, q_u->uni_domain.buffer, sizeof(domain_name), q_u->uni_domain.uni_str_len*2, 0);
+       domain_name = r->in.domain_name->string;
 
-       ZERO_STRUCT(sid);
+       sid = TALLOC_ZERO_P(p->mem_ctx, struct dom_sid2);
+       if (!sid) {
+               return NT_STATUS_NO_MEMORY;
+       }
 
        if (strequal(domain_name, builtin_domain_name())) {
-               sid_copy(&sid, &global_sid_Builtin);
+               sid_copy(sid, &global_sid_Builtin);
        } else {
-               if (!secrets_fetch_domain_sid(domain_name, &sid)) {
-                       r_u->status = NT_STATUS_NO_SUCH_DOMAIN;
+               if (!secrets_fetch_domain_sid(domain_name, sid)) {
+                       status = NT_STATUS_NO_SUCH_DOMAIN;
                }
        }
 
        DEBUG(2,("Returning domain sid for domain %s -> %s\n", domain_name,
-                sid_string_dbg(&sid)));
+                sid_string_dbg(sid)));
 
-       init_samr_r_lookup_domain(r_u, &sid, r_u->status);
+       *r->out.sid = sid;
 
-       return r_u->status;
+       return status;
 }
 
 /******************************************************************
@@ -5084,16 +5087,6 @@ NTSTATUS _samr_Shutdown(pipes_struct *p,
 /****************************************************************
 ****************************************************************/
 
-NTSTATUS _samr_LookupDomain(pipes_struct *p,
-                           struct samr_LookupDomain *r)
-{
-       p->rng_fault_state = true;
-       return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-/****************************************************************
-****************************************************************/
-
 NTSTATUS _samr_EnumDomains(pipes_struct *p,
                           struct samr_EnumDomains *r)
 {