]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
Use pidl for _svcctl_GetServiceDisplayNameW().
authorGünther Deschner <gd@samba.org>
Mon, 18 Feb 2008 12:43:12 +0000 (13:43 +0100)
committerGünther Deschner <gd@samba.org>
Mon, 18 Feb 2008 12:43:12 +0000 (13:43 +0100)
Guenther

source/rpc_server/srv_svcctl.c
source/rpc_server/srv_svcctl_nt.c

index a134df85972d1ee0efb68f8fec313d25c013cc4b..84c986dbfb2247ee6ee6aa7f436329467f093f29 100644 (file)
@@ -69,23 +69,7 @@ static bool api_svcctl_open_service(pipes_struct *p)
 
 static bool api_svcctl_get_display_name(pipes_struct *p)
 {
-       SVCCTL_Q_GET_DISPLAY_NAME q_u;
-       SVCCTL_R_GET_DISPLAY_NAME 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(!svcctl_io_q_get_display_name("", &q_u, data, 0))
-               return False;
-
-       r_u.status = _svcctl_get_display_name(p, &q_u, &r_u);
-
-       if(!svcctl_io_r_get_display_name("", &r_u, rdata, 0))
-               return False;
-
-       return True;
+       return proxy_svcctl_call(p, NDR_SVCCTL_GETSERVICEDISPLAYNAMEW);
 }
 
 /*******************************************************************
index 40f3584e3e66e0f5be482174aa92c987ac964b91..bdd0f4ffe33f1792823313b0bf117b6df6a91b19 100644 (file)
@@ -332,23 +332,30 @@ WERROR _svcctl_CloseServiceHandle(pipes_struct *p, struct svcctl_CloseServiceHan
 }
 
 /********************************************************************
+ _svcctl_GetServiceDisplayNameW
 ********************************************************************/
 
-WERROR _svcctl_get_display_name(pipes_struct *p, SVCCTL_Q_GET_DISPLAY_NAME *q_u, SVCCTL_R_GET_DISPLAY_NAME *r_u)
+WERROR _svcctl_GetServiceDisplayNameW(pipes_struct *p,
+                                     struct svcctl_GetServiceDisplayNameW *r)
 {
-       fstring service;
+       const char *service;
        const char *display_name;
-       SERVICE_INFO *info = find_service_info_by_hnd( p, &q_u->handle );
+       SERVICE_INFO *info = find_service_info_by_hnd( p, r->in.handle );
 
        /* can only use an SCM handle here */
 
        if ( !info || (info->type != SVC_HANDLE_IS_SCM) )
                return WERR_BADFID;
 
-       rpcstr_pull(service, q_u->servicename.buffer, sizeof(service), q_u->servicename.uni_str_len*2, 0);
+       service = r->in.service_name;
 
        display_name = svcctl_lookup_dispname(p->mem_ctx, service, p->pipe_user.nt_user_token );
-       init_svcctl_r_get_display_name( r_u, display_name ? display_name : "");
+       if (!display_name) {
+               display_name = "";
+       }
+
+       *r->out.display_name = display_name;
+       *r->out.display_name_length = strlen(display_name);
 
        return WERR_OK;
 }
@@ -981,12 +988,6 @@ WERROR _svcctl_StartServiceW(pipes_struct *p, struct svcctl_StartServiceW *r)
        return WERR_NOT_SUPPORTED;
 }
 
-WERROR _svcctl_GetServiceDisplayNameW(pipes_struct *p, struct svcctl_GetServiceDisplayNameW *r)
-{
-       p->rng_fault_state = True;
-       return WERR_NOT_SUPPORTED;
-}
-
 WERROR _svcctl_GetServiceKeyNameW(pipes_struct *p, struct svcctl_GetServiceKeyNameW *r)
 {
        p->rng_fault_state = True;