Use pidl for _samr_Connect2().
authorGünther Deschner <gd@samba.org>
Mon, 4 Feb 2008 15:23:46 +0000 (16:23 +0100)
committerGünther Deschner <gd@samba.org>
Mon, 4 Feb 2008 16:53:51 +0000 (17:53 +0100)
Guenther
(This used to be commit 35a691c2595883a7f15d039839de11798b9a7ceb)

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

index 5fb16fe14a25787ab9e1d37d32c11b78065e2d4a..5e83687ad300be411201bd1600d003d05a38caf7 100644 (file)
@@ -470,29 +470,7 @@ static bool api_samr_connect_anon(pipes_struct *p)
 
 static bool api_samr_connect(pipes_struct *p)
 {
-       SAMR_Q_CONNECT q_u;
-       SAMR_R_CONNECT r_u;
-       prs_struct *data = &p->in_data.data;
-       prs_struct *rdata = &p->out_data.rdata;
-
-       ZERO_STRUCT(q_u);
-       ZERO_STRUCT(r_u);
-
-       /* grab the samr open policy */
-       if(!samr_io_q_connect("", &q_u, data, 0)) {
-               DEBUG(0,("api_samr_connect: unable to unmarshall SAMR_Q_CONNECT.\n"));
-               return False;
-       }
-
-       r_u.status = _samr_connect(p, &q_u, &r_u);
-
-       /* store the response in the SMB stream */
-       if(!samr_io_r_connect("", &r_u, rdata, 0)) {
-               DEBUG(0,("api_samr_connect: unable to marshall SAMR_R_CONNECT.\n"));
-               return False;
-       }
-
-       return True;
+       return proxy_samr_call(p, NDR_SAMR_CONNECT2);
 }
 
 /*******************************************************************
index b4eab90996612ccf437c3f91b20436f2d2326b82..d69e2d1cdcff392b9bb1ae36e876251e375caa9c 100644 (file)
@@ -2695,54 +2695,52 @@ NTSTATUS _samr_Connect(pipes_struct *p,
 }
 
 /*******************************************************************
- samr_reply_connect
+ _samr_Connect2
  ********************************************************************/
 
-NTSTATUS _samr_connect(pipes_struct *p, SAMR_Q_CONNECT *q_u, SAMR_R_CONNECT *r_u)
+NTSTATUS _samr_Connect2(pipes_struct *p,
+                       struct samr_Connect2 *r)
 {
        struct samr_info *info = NULL;
        SEC_DESC *psd = NULL;
        uint32    acc_granted;
-       uint32    des_access = q_u->access_mask;
+       uint32    des_access = r->in.access_mask;
        NTSTATUS  nt_status;
        size_t    sd_size;
 
 
-       DEBUG(5,("_samr_connect: %d\n", __LINE__));
+       DEBUG(5,("_samr_Connect2: %d\n", __LINE__));
 
        /* Access check */
 
        if (!pipe_access_check(p)) {
-               DEBUG(3, ("access denied to samr_connect\n"));
-               r_u->status = NT_STATUS_ACCESS_DENIED;
-               return r_u->status;
+               DEBUG(3, ("access denied to _samr_Connect2\n"));
+               return NT_STATUS_ACCESS_DENIED;
        }
 
        make_samr_object_sd(p->mem_ctx, &psd, &sd_size, &sam_generic_mapping, NULL, 0);
        se_map_generic(&des_access, &sam_generic_mapping);
        
        nt_status = access_check_samr_object(psd, p->pipe_user.nt_user_token, 
-               NULL, 0, des_access, &acc_granted, "_samr_connect");
+               NULL, 0, des_access, &acc_granted, "_samr_Connect2");
        
        if ( !NT_STATUS_IS_OK(nt_status) ) 
                return nt_status;
 
-       r_u->status = NT_STATUS_OK;
-
        /* associate the user's SID and access granted with the new handle. */
        if ((info = get_samr_info_by_sid(NULL)) == NULL)
                return NT_STATUS_NO_MEMORY;
 
        info->acc_granted = acc_granted;
-       info->status = q_u->access_mask;
+       info->status = r->in.access_mask; /* this looks so wrong... - gd */
 
        /* get a (unique) handle.  open a policy on it. */
-       if (!create_policy_hnd(p, &r_u->connect_pol, free_samr_info, (void *)info))
+       if (!create_policy_hnd(p, r->out.connect_handle, free_samr_info, (void *)info))
                return NT_STATUS_OBJECT_NAME_NOT_FOUND;
 
-       DEBUG(5,("_samr_connect: %d\n", __LINE__));
+       DEBUG(5,("_samr_Connect2: %d\n", __LINE__));
 
-       return r_u->status;
+       return nt_status;
 }
 
 /*******************************************************************
@@ -5473,16 +5471,6 @@ NTSTATUS _samr_OemChangePasswordUser2(pipes_struct *p,
 /****************************************************************
 ****************************************************************/
 
-NTSTATUS _samr_Connect2(pipes_struct *p,
-                       struct samr_Connect2 *r)
-{
-       p->rng_fault_state = true;
-       return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-/****************************************************************
-****************************************************************/
-
 NTSTATUS _samr_SetUserInfo2(pipes_struct *p,
                            struct samr_SetUserInfo2 *r)
 {