libcli/security Provide a common, top level libcli/security/security.h
[kai/samba.git] / source3 / rpc_server / srv_svcctl_nt.c
index d664306e4d26e4c968da7a47a40594eb2c778940..2a7ef816456f29e7776d7d2ff533481e478e8e7f 100644 (file)
@@ -24,8 +24,9 @@
 
 #include "includes.h"
 #include "../librpc/gen_ndr/srv_svcctl.h"
-#include "services.h"
-#include "registry.h"
+#include "services/services.h"
+#include "../libcli/security/security.h"
+#include "../librpc/gen_ndr/ndr_security.h"
 
 #undef DBGC_CLASS
 #define DBGC_CLASS DBGC_RPC_SRV
@@ -121,7 +122,7 @@ static struct service_control_op* find_service_by_name( const char *name )
 /********************************************************************
 ********************************************************************/
 
-static NTSTATUS svcctl_access_check( SEC_DESC *sec_desc, NT_USER_TOKEN *token,
+static NTSTATUS svcctl_access_check( struct security_descriptor *sec_desc, struct security_token *token,
                                      uint32 access_desired, uint32 *access_granted )
 {
        if ( geteuid() == sec_initial_uid() ) {
@@ -135,12 +136,12 @@ static NTSTATUS svcctl_access_check( SEC_DESC *sec_desc, NT_USER_TOKEN *token,
 /********************************************************************
 ********************************************************************/
 
-static SEC_DESC* construct_scm_sd( TALLOC_CTX *ctx )
+static struct security_descriptor* construct_scm_sd( TALLOC_CTX *ctx )
 {
        struct security_ace ace[2];
        size_t i = 0;
-       SEC_DESC *sd;
-       SEC_ACL *theacl;
+       struct security_descriptor *sd;
+       struct security_acl *theacl;
        size_t sd_size;
 
        /* basic access for Everyone */
@@ -171,7 +172,8 @@ static SEC_DESC* construct_scm_sd( TALLOC_CTX *ctx )
  Find a registry key handle and return a SERVICE_INFO
  *****************************************************************/
 
-static SERVICE_INFO *find_service_info_by_hnd(pipes_struct *p, struct policy_handle *hnd)
+static SERVICE_INFO *find_service_info_by_hnd(struct pipes_struct *p,
+                                             struct policy_handle *hnd)
 {
        SERVICE_INFO *service_info = NULL;
 
@@ -186,8 +188,11 @@ static SERVICE_INFO *find_service_info_by_hnd(pipes_struct *p, struct policy_han
 /******************************************************************
  *****************************************************************/
 
-static WERROR create_open_service_handle( pipes_struct *p, struct policy_handle *handle, uint32 type,
-                                          const char *service, uint32 access_granted )
+static WERROR create_open_service_handle(struct pipes_struct *p,
+                                        struct policy_handle *handle,
+                                        uint32_t type,
+                                        const char *service,
+                                        uint32_t access_granted)
 {
        SERVICE_INFO *info = NULL;
        WERROR result = WERR_OK;
@@ -252,10 +257,10 @@ done:
  _svcctl_OpenSCManagerW
 ********************************************************************/
 
-WERROR _svcctl_OpenSCManagerW(pipes_struct *p,
+WERROR _svcctl_OpenSCManagerW(struct pipes_struct *p,
                              struct svcctl_OpenSCManagerW *r)
 {
-       SEC_DESC *sec_desc;
+       struct security_descriptor *sec_desc;
        uint32 access_granted = 0;
        NTSTATUS status;
 
@@ -277,10 +282,10 @@ WERROR _svcctl_OpenSCManagerW(pipes_struct *p,
  _svcctl_OpenServiceW
 ********************************************************************/
 
-WERROR _svcctl_OpenServiceW(pipes_struct *p,
+WERROR _svcctl_OpenServiceW(struct pipes_struct *p,
                            struct svcctl_OpenServiceW *r)
 {
-       SEC_DESC *sec_desc;
+       struct security_descriptor *sec_desc;
        uint32 access_granted = 0;
        NTSTATUS status;
        const char *service = NULL;
@@ -315,7 +320,7 @@ WERROR _svcctl_OpenServiceW(pipes_struct *p,
  _svcctl_CloseServiceHandle
 ********************************************************************/
 
-WERROR _svcctl_CloseServiceHandle(pipes_struct *p,
+WERROR _svcctl_CloseServiceHandle(struct pipes_struct *p,
                                  struct svcctl_CloseServiceHandle *r)
 {
        if ( !close_policy_hnd( p, r->in.handle ) )
@@ -330,7 +335,7 @@ WERROR _svcctl_CloseServiceHandle(pipes_struct *p,
  _svcctl_GetServiceDisplayNameW
 ********************************************************************/
 
-WERROR _svcctl_GetServiceDisplayNameW(pipes_struct *p,
+WERROR _svcctl_GetServiceDisplayNameW(struct pipes_struct *p,
                                      struct svcctl_GetServiceDisplayNameW *r)
 {
        const char *service;
@@ -360,7 +365,7 @@ WERROR _svcctl_GetServiceDisplayNameW(pipes_struct *p,
  _svcctl_QueryServiceStatus
 ********************************************************************/
 
-WERROR _svcctl_QueryServiceStatus(pipes_struct *p,
+WERROR _svcctl_QueryServiceStatus(struct pipes_struct *p,
                                  struct svcctl_QueryServiceStatus *r)
 {
        SERVICE_INFO *info = find_service_info_by_hnd( p, r->in.handle );
@@ -381,7 +386,7 @@ WERROR _svcctl_QueryServiceStatus(pipes_struct *p,
 /********************************************************************
 ********************************************************************/
 
-static int enumerate_status( TALLOC_CTX *ctx, struct ENUM_SERVICE_STATUSW **status, NT_USER_TOKEN *token )
+static int enumerate_status( TALLOC_CTX *ctx, struct ENUM_SERVICE_STATUSW **status, struct security_token *token )
 {
        int num_services = 0;
        int i;
@@ -415,7 +420,7 @@ static int enumerate_status( TALLOC_CTX *ctx, struct ENUM_SERVICE_STATUSW **stat
  _svcctl_EnumServicesStatusW
 ********************************************************************/
 
-WERROR _svcctl_EnumServicesStatusW(pipes_struct *p,
+WERROR _svcctl_EnumServicesStatusW(struct pipes_struct *p,
                                   struct svcctl_EnumServicesStatusW *r)
 {
        struct ENUM_SERVICE_STATUSW *services = NULL;
@@ -424,7 +429,7 @@ WERROR _svcctl_EnumServicesStatusW(pipes_struct *p,
        size_t buffer_size = 0;
        WERROR result = WERR_OK;
        SERVICE_INFO *info = find_service_info_by_hnd( p, r->in.handle );
-       NT_USER_TOKEN *token = p->server_info->ptok;
+       struct security_token *token = p->server_info->ptok;
        DATA_BLOB blob = data_blob_null;
 
        /* perform access checks */
@@ -484,7 +489,7 @@ WERROR _svcctl_EnumServicesStatusW(pipes_struct *p,
  _svcctl_StartServiceW
 ********************************************************************/
 
-WERROR _svcctl_StartServiceW(pipes_struct *p,
+WERROR _svcctl_StartServiceW(struct pipes_struct *p,
                             struct svcctl_StartServiceW *r)
 {
        SERVICE_INFO *info = find_service_info_by_hnd( p, r->in.handle );
@@ -504,7 +509,7 @@ WERROR _svcctl_StartServiceW(pipes_struct *p,
  _svcctl_ControlService
 ********************************************************************/
 
-WERROR _svcctl_ControlService(pipes_struct *p,
+WERROR _svcctl_ControlService(struct pipes_struct *p,
                              struct svcctl_ControlService *r)
 {
        SERVICE_INFO *info = find_service_info_by_hnd( p, r->in.handle );
@@ -537,7 +542,7 @@ WERROR _svcctl_ControlService(pipes_struct *p,
  _svcctl_EnumDependentServicesW
 ********************************************************************/
 
-WERROR _svcctl_EnumDependentServicesW(pipes_struct *p,
+WERROR _svcctl_EnumDependentServicesW(struct pipes_struct *p,
                                      struct svcctl_EnumDependentServicesW *r)
 {
        SERVICE_INFO *info = find_service_info_by_hnd( p, r->in.service );
@@ -575,7 +580,7 @@ WERROR _svcctl_EnumDependentServicesW(pipes_struct *p,
  _svcctl_QueryServiceStatusEx
 ********************************************************************/
 
-WERROR _svcctl_QueryServiceStatusEx(pipes_struct *p,
+WERROR _svcctl_QueryServiceStatusEx(struct pipes_struct *p,
                                    struct svcctl_QueryServiceStatusEx *r)
 {
        SERVICE_INFO *info = find_service_info_by_hnd( p, r->in.handle );
@@ -636,29 +641,23 @@ WERROR _svcctl_QueryServiceStatusEx(pipes_struct *p,
 
 static WERROR fill_svc_config( TALLOC_CTX *ctx, const char *name,
                               struct QUERY_SERVICE_CONFIG *config,
-                              NT_USER_TOKEN *token )
+                              struct security_token *token )
 {
-       struct regval_ctr *values;
-       struct regval_blob *val;
-
-       /* retrieve the registry values for this service */
-
-       if ( !(values = svcctl_fetch_regvalues( name, token )) )
-               return WERR_REG_CORRUPT;
+       TALLOC_CTX *mem_ctx = talloc_stackframe();
+       const char *result = NULL;
 
        /* now fill in the individual values */
 
-       if ( (val = regval_ctr_getvalue( values, "DisplayName" )) != NULL )
-               config->displayname = regval_sz(val);
-       else
-               config->displayname = name;
+       config->displayname = svcctl_lookup_dispname(mem_ctx, name, token);
 
-       if ( (val = regval_ctr_getvalue( values, "ObjectName" )) != NULL ) {
-               config->startname = regval_sz(val);
+       result = svcctl_get_string_value(mem_ctx, name, "ObjectName", token);
+       if (result != NULL) {
+               config->startname = result;
        }
 
-       if ( (val = regval_ctr_getvalue( values, "ImagePath" )) != NULL ) {
-               config->executablepath = regval_sz(val);
+       result = svcctl_get_string_value(mem_ctx, name, "ImagePath", token);
+       if (result != NULL) {
+               config->executablepath = result;
        }
 
        /* a few hard coded values */
@@ -680,7 +679,7 @@ static WERROR fill_svc_config( TALLOC_CTX *ctx, const char *name,
                config->start_type = SVCCTL_DEMAND_START;
 
 
-       TALLOC_FREE( values );
+       talloc_free(mem_ctx);
 
        return WERR_OK;
 }
@@ -689,7 +688,7 @@ static WERROR fill_svc_config( TALLOC_CTX *ctx, const char *name,
  _svcctl_QueryServiceConfigW
 ********************************************************************/
 
-WERROR _svcctl_QueryServiceConfigW(pipes_struct *p,
+WERROR _svcctl_QueryServiceConfigW(struct pipes_struct *p,
                                   struct svcctl_QueryServiceConfigW *r)
 {
        SERVICE_INFO *info = find_service_info_by_hnd( p, r->in.handle );
@@ -729,7 +728,7 @@ WERROR _svcctl_QueryServiceConfigW(pipes_struct *p,
  _svcctl_QueryServiceConfig2W
 ********************************************************************/
 
-WERROR _svcctl_QueryServiceConfig2W(pipes_struct *p,
+WERROR _svcctl_QueryServiceConfig2W(struct pipes_struct *p,
                                    struct svcctl_QueryServiceConfig2W *r)
 {
        SERVICE_INFO *info = find_service_info_by_hnd( p, r->in.handle );
@@ -812,7 +811,7 @@ WERROR _svcctl_QueryServiceConfig2W(pipes_struct *p,
  _svcctl_LockServiceDatabase
 ********************************************************************/
 
-WERROR _svcctl_LockServiceDatabase(pipes_struct *p,
+WERROR _svcctl_LockServiceDatabase(struct pipes_struct *p,
                                   struct svcctl_LockServiceDatabase *r)
 {
        SERVICE_INFO *info = find_service_info_by_hnd( p, r->in.handle );
@@ -834,7 +833,7 @@ WERROR _svcctl_LockServiceDatabase(pipes_struct *p,
  _svcctl_UnlockServiceDatabase
 ********************************************************************/
 
-WERROR _svcctl_UnlockServiceDatabase(pipes_struct *p,
+WERROR _svcctl_UnlockServiceDatabase(struct pipes_struct *p,
                                     struct svcctl_UnlockServiceDatabase *r)
 {
        SERVICE_INFO *info = find_service_info_by_hnd( p, r->in.lock );
@@ -850,11 +849,11 @@ WERROR _svcctl_UnlockServiceDatabase(pipes_struct *p,
  _svcctl_QueryServiceObjectSecurity
 ********************************************************************/
 
-WERROR _svcctl_QueryServiceObjectSecurity(pipes_struct *p,
+WERROR _svcctl_QueryServiceObjectSecurity(struct pipes_struct *p,
                                          struct svcctl_QueryServiceObjectSecurity *r)
 {
        SERVICE_INFO *info = find_service_info_by_hnd( p, r->in.handle );
-       SEC_DESC *sec_desc;
+       struct security_descriptor *sec_desc;
        NTSTATUS status;
        uint8_t *buffer = NULL;
        size_t len = 0;
@@ -867,12 +866,12 @@ WERROR _svcctl_QueryServiceObjectSecurity(pipes_struct *p,
 
        /* check access reights (according to MSDN) */
 
-       if ( !(info->access_granted & STD_RIGHT_READ_CONTROL_ACCESS) )
+       if ( !(info->access_granted & SEC_STD_READ_CONTROL) )
                return WERR_ACCESS_DENIED;
 
-       /* TODO: handle something besides DACL_SECURITY_INFORMATION */
+       /* TODO: handle something besides SECINFO_DACL */
 
-       if ( (r->in.security_flags & DACL_SECURITY_INFORMATION) != DACL_SECURITY_INFORMATION )
+       if ( (r->in.security_flags & SECINFO_DACL) != SECINFO_DACL )
                return WERR_INVALID_PARAM;
 
        /* lookup the security descriptor and marshall it up for a reply */
@@ -901,11 +900,11 @@ WERROR _svcctl_QueryServiceObjectSecurity(pipes_struct *p,
  _svcctl_SetServiceObjectSecurity
 ********************************************************************/
 
-WERROR _svcctl_SetServiceObjectSecurity(pipes_struct *p,
+WERROR _svcctl_SetServiceObjectSecurity(struct pipes_struct *p,
                                        struct svcctl_SetServiceObjectSecurity *r)
 {
        SERVICE_INFO *info = find_service_info_by_hnd( p, r->in.handle );
-       SEC_DESC *sec_desc = NULL;
+       struct security_descriptor *sec_desc = NULL;
        uint32 required_access;
        NTSTATUS status;
 
@@ -920,16 +919,16 @@ WERROR _svcctl_SetServiceObjectSecurity(pipes_struct *p,
        /* check the access on the open handle */
 
        switch ( r->in.security_flags ) {
-               case DACL_SECURITY_INFORMATION:
-                       required_access = STD_RIGHT_WRITE_DAC_ACCESS;
+               case SECINFO_DACL:
+                       required_access = SEC_STD_WRITE_DAC;
                        break;
 
-               case OWNER_SECURITY_INFORMATION:
-               case GROUP_SECURITY_INFORMATION:
-                       required_access = STD_RIGHT_WRITE_OWNER_ACCESS;
+               case SECINFO_OWNER:
+               case SECINFO_GROUP:
+                       required_access = SEC_STD_WRITE_OWNER;
                        break;
 
-               case SACL_SECURITY_INFORMATION:
+               case SECINFO_SACL:
                        return WERR_INVALID_PARAM;
                default:
                        return WERR_INVALID_PARAM;
@@ -950,177 +949,204 @@ WERROR _svcctl_SetServiceObjectSecurity(pipes_struct *p,
 
        /* store the new SD */
 
-       if ( !svcctl_set_secdesc( p->mem_ctx, info->name, sec_desc,
-                                 p->server_info->ptok) )
+       if (!svcctl_set_secdesc(info->name, sec_desc, p->server_info->ptok))
                return WERR_ACCESS_DENIED;
 
        return WERR_OK;
 }
 
 
-WERROR _svcctl_DeleteService(pipes_struct *p, struct svcctl_DeleteService *r)
+WERROR _svcctl_DeleteService(struct pipes_struct *p,
+                            struct svcctl_DeleteService *r)
 {
        p->rng_fault_state = True;
        return WERR_NOT_SUPPORTED;
 }
 
-WERROR _svcctl_SetServiceStatus(pipes_struct *p, struct svcctl_SetServiceStatus *r)
+WERROR _svcctl_SetServiceStatus(struct pipes_struct *p,
+                               struct svcctl_SetServiceStatus *r)
 {
        p->rng_fault_state = True;
        return WERR_NOT_SUPPORTED;
 }
 
-WERROR _svcctl_NotifyBootConfigStatus(pipes_struct *p, struct svcctl_NotifyBootConfigStatus *r)
+WERROR _svcctl_NotifyBootConfigStatus(struct pipes_struct *p,
+                                     struct svcctl_NotifyBootConfigStatus *r)
 {
        p->rng_fault_state = True;
        return WERR_NOT_SUPPORTED;
 }
 
-WERROR _svcctl_SCSetServiceBitsW(pipes_struct *p, struct svcctl_SCSetServiceBitsW *r)
+WERROR _svcctl_SCSetServiceBitsW(struct pipes_struct *p,
+                                struct svcctl_SCSetServiceBitsW *r)
 {
        p->rng_fault_state = True;
        return WERR_NOT_SUPPORTED;
 }
 
-WERROR _svcctl_ChangeServiceConfigW(pipes_struct *p, struct svcctl_ChangeServiceConfigW *r)
+WERROR _svcctl_ChangeServiceConfigW(struct pipes_struct *p,
+                                   struct svcctl_ChangeServiceConfigW *r)
 {
        p->rng_fault_state = True;
        return WERR_NOT_SUPPORTED;
 }
 
-WERROR _svcctl_CreateServiceW(pipes_struct *p, struct svcctl_CreateServiceW *r)
+WERROR _svcctl_CreateServiceW(struct pipes_struct *p,
+                             struct svcctl_CreateServiceW *r)
 {
        p->rng_fault_state = True;
        return WERR_NOT_SUPPORTED;
 }
 
-WERROR _svcctl_QueryServiceLockStatusW(pipes_struct *p, struct svcctl_QueryServiceLockStatusW *r)
+WERROR _svcctl_QueryServiceLockStatusW(struct pipes_struct *p,
+                                      struct svcctl_QueryServiceLockStatusW *r)
 {
        p->rng_fault_state = True;
        return WERR_NOT_SUPPORTED;
 }
 
-WERROR _svcctl_GetServiceKeyNameW(pipes_struct *p, struct svcctl_GetServiceKeyNameW *r)
+WERROR _svcctl_GetServiceKeyNameW(struct pipes_struct *p,
+                                 struct svcctl_GetServiceKeyNameW *r)
 {
        p->rng_fault_state = True;
        return WERR_NOT_SUPPORTED;
 }
 
-WERROR _svcctl_SCSetServiceBitsA(pipes_struct *p, struct svcctl_SCSetServiceBitsA *r)
+WERROR _svcctl_SCSetServiceBitsA(struct pipes_struct *p,
+                                struct svcctl_SCSetServiceBitsA *r)
 {
        p->rng_fault_state = True;
        return WERR_NOT_SUPPORTED;
 }
 
-WERROR _svcctl_ChangeServiceConfigA(pipes_struct *p, struct svcctl_ChangeServiceConfigA *r)
+WERROR _svcctl_ChangeServiceConfigA(struct pipes_struct *p,
+                                   struct svcctl_ChangeServiceConfigA *r)
 {
        p->rng_fault_state = True;
        return WERR_NOT_SUPPORTED;
 }
 
-WERROR _svcctl_CreateServiceA(pipes_struct *p, struct svcctl_CreateServiceA *r)
+WERROR _svcctl_CreateServiceA(struct pipes_struct *p,
+                             struct svcctl_CreateServiceA *r)
 {
        p->rng_fault_state = True;
        return WERR_NOT_SUPPORTED;
 }
 
-WERROR _svcctl_EnumDependentServicesA(pipes_struct *p, struct svcctl_EnumDependentServicesA *r)
+WERROR _svcctl_EnumDependentServicesA(struct pipes_struct *p,
+                                     struct svcctl_EnumDependentServicesA *r)
 {
        p->rng_fault_state = True;
        return WERR_NOT_SUPPORTED;
 }
 
-WERROR _svcctl_EnumServicesStatusA(pipes_struct *p, struct svcctl_EnumServicesStatusA *r)
+WERROR _svcctl_EnumServicesStatusA(struct pipes_struct *p,
+                                  struct svcctl_EnumServicesStatusA *r)
 {
        p->rng_fault_state = True;
        return WERR_NOT_SUPPORTED;
 }
 
-WERROR _svcctl_OpenSCManagerA(pipes_struct *p, struct svcctl_OpenSCManagerA *r)
+WERROR _svcctl_OpenSCManagerA(struct pipes_struct *p,
+                             struct svcctl_OpenSCManagerA *r)
 {
        p->rng_fault_state = True;
        return WERR_NOT_SUPPORTED;
 }
 
-WERROR _svcctl_OpenServiceA(pipes_struct *p, struct svcctl_OpenServiceA *r)
+WERROR _svcctl_OpenServiceA(struct pipes_struct *p,
+                           struct svcctl_OpenServiceA *r)
 {
        p->rng_fault_state = True;
        return WERR_NOT_SUPPORTED;
 }
 
-WERROR _svcctl_QueryServiceConfigA(pipes_struct *p, struct svcctl_QueryServiceConfigA *r)
+WERROR _svcctl_QueryServiceConfigA(struct pipes_struct *p,
+                                  struct svcctl_QueryServiceConfigA *r)
 {
        p->rng_fault_state = True;
        return WERR_NOT_SUPPORTED;
 }
 
-WERROR _svcctl_QueryServiceLockStatusA(pipes_struct *p, struct svcctl_QueryServiceLockStatusA *r)
+WERROR _svcctl_QueryServiceLockStatusA(struct pipes_struct *p,
+                                      struct svcctl_QueryServiceLockStatusA *r)
 {
        p->rng_fault_state = True;
        return WERR_NOT_SUPPORTED;
 }
 
-WERROR _svcctl_StartServiceA(pipes_struct *p, struct svcctl_StartServiceA *r)
+WERROR _svcctl_StartServiceA(struct pipes_struct *p,
+                            struct svcctl_StartServiceA *r)
 {
        p->rng_fault_state = True;
        return WERR_NOT_SUPPORTED;
 }
 
-WERROR _svcctl_GetServiceDisplayNameA(pipes_struct *p, struct svcctl_GetServiceDisplayNameA *r)
+WERROR _svcctl_GetServiceDisplayNameA(struct pipes_struct *p,
+                                     struct svcctl_GetServiceDisplayNameA *r)
 {
        p->rng_fault_state = True;
        return WERR_NOT_SUPPORTED;
 }
 
-WERROR _svcctl_GetServiceKeyNameA(pipes_struct *p, struct svcctl_GetServiceKeyNameA *r)
+WERROR _svcctl_GetServiceKeyNameA(struct pipes_struct *p,
+                                 struct svcctl_GetServiceKeyNameA *r)
 {
        p->rng_fault_state = True;
        return WERR_NOT_SUPPORTED;
 }
 
-WERROR _svcctl_GetCurrentGroupeStateW(pipes_struct *p, struct svcctl_GetCurrentGroupeStateW *r)
+WERROR _svcctl_GetCurrentGroupeStateW(struct pipes_struct *p,
+                                     struct svcctl_GetCurrentGroupeStateW *r)
 {
        p->rng_fault_state = True;
        return WERR_NOT_SUPPORTED;
 }
 
-WERROR _svcctl_EnumServiceGroupW(pipes_struct *p, struct svcctl_EnumServiceGroupW *r)
+WERROR _svcctl_EnumServiceGroupW(struct pipes_struct *p,
+                                struct svcctl_EnumServiceGroupW *r)
 {
        p->rng_fault_state = True;
        return WERR_NOT_SUPPORTED;
 }
 
-WERROR _svcctl_ChangeServiceConfig2A(pipes_struct *p, struct svcctl_ChangeServiceConfig2A *r)
+WERROR _svcctl_ChangeServiceConfig2A(struct pipes_struct *p,
+                                    struct svcctl_ChangeServiceConfig2A *r)
 {
        p->rng_fault_state = True;
        return WERR_NOT_SUPPORTED;
 }
 
-WERROR _svcctl_ChangeServiceConfig2W(pipes_struct *p, struct svcctl_ChangeServiceConfig2W *r)
+WERROR _svcctl_ChangeServiceConfig2W(struct pipes_struct *p,
+                                    struct svcctl_ChangeServiceConfig2W *r)
 {
        p->rng_fault_state = True;
        return WERR_NOT_SUPPORTED;
 }
 
-WERROR _svcctl_QueryServiceConfig2A(pipes_struct *p, struct svcctl_QueryServiceConfig2A *r)
+WERROR _svcctl_QueryServiceConfig2A(struct pipes_struct *p,
+                                   struct svcctl_QueryServiceConfig2A *r)
 {
        p->rng_fault_state = True;
        return WERR_NOT_SUPPORTED;
 }
 
-WERROR _EnumServicesStatusExA(pipes_struct *p, struct EnumServicesStatusExA *r)
+WERROR _EnumServicesStatusExA(struct pipes_struct *p,
+                             struct EnumServicesStatusExA *r)
 {
        p->rng_fault_state = True;
        return WERR_NOT_SUPPORTED;
 }
 
-WERROR _EnumServicesStatusExW(pipes_struct *p, struct EnumServicesStatusExW *r)
+WERROR _EnumServicesStatusExW(struct pipes_struct *p,
+                             struct EnumServicesStatusExW *r)
 {
        p->rng_fault_state = True;
        return WERR_NOT_SUPPORTED;
 }
 
-WERROR _svcctl_SCSendTSMessage(pipes_struct *p, struct svcctl_SCSendTSMessage *r)
+WERROR _svcctl_SCSendTSMessage(struct pipes_struct *p,
+                              struct svcctl_SCSendTSMessage *r)
 {
        p->rng_fault_state = True;
        return WERR_NOT_SUPPORTED;