diff options
-rw-r--r-- | source3/include/rpc_secdes.h | 3 | ||||
-rw-r--r-- | source3/include/rpc_svcctl.h | 2 | ||||
-rw-r--r-- | source3/rpc_server/srv_svcctl_nt.c | 6 | ||||
-rw-r--r-- | source3/services/svc_rcinit.c | 2 | ||||
-rw-r--r-- | source3/services/svc_spoolss.c | 2 |
5 files changed, 9 insertions, 6 deletions
diff --git a/source3/include/rpc_secdes.h b/source3/include/rpc_secdes.h index fe95706d03..a14caf36c1 100644 --- a/source3/include/rpc_secdes.h +++ b/source3/include/rpc_secdes.h @@ -518,7 +518,8 @@ typedef struct standard_mapping { #define SERVICE_ALL_ACCESS \ ( STANDARD_RIGHTS_REQUIRED_ACCESS | \ SERVICE_READ_ACCESS | \ - SERVICE_EXECUTE_ACCESS ) + SERVICE_EXECUTE_ACCESS | \ + SC_RIGHT_SVC_CHANGE_CONFIG ) diff --git a/source3/include/rpc_svcctl.h b/source3/include/rpc_svcctl.h index ede5d65565..8ce2cbe404 100644 --- a/source3/include/rpc_svcctl.h +++ b/source3/include/rpc_svcctl.h @@ -204,7 +204,7 @@ typedef struct Service_info_struct { typedef struct { /* functions for enumerating subkeys and values */ - WERROR (*stop_service)( void ); + WERROR (*stop_service)( SERVICE_STATUS *status ); WERROR (*start_service) ( void ); WERROR (*service_status)( SERVICE_STATUS *status ); } SERVICE_CONTROL_OPS; diff --git a/source3/rpc_server/srv_svcctl_nt.c b/source3/rpc_server/srv_svcctl_nt.c index e9f60e887c..c557036800 100644 --- a/source3/rpc_server/srv_svcctl_nt.c +++ b/source3/rpc_server/srv_svcctl_nt.c @@ -496,6 +496,8 @@ WERROR _svcctl_start_service(pipes_struct *p, SVCCTL_Q_START_SERVICE *q_u, SVCCT if ( !(info->access_granted & SC_RIGHT_SVC_START) ) return WERR_ACCESS_DENIED; + return info->ops->start_service(); + return WERR_OK; } @@ -518,6 +520,8 @@ WERROR _svcctl_control_service(pipes_struct *p, SVCCTL_Q_CONTROL_SERVICE *q_u, S if ( !(info->access_granted & SC_RIGHT_SVC_STOP) ) return WERR_ACCESS_DENIED; + return info->ops->stop_service( &r_u->svc_status ); + #if 0 SERVICE_INFO *service_info; POLICY_HND *handle; @@ -582,8 +586,6 @@ WERROR _svcctl_control_service(pipes_struct *p, SVCCTL_Q_CONTROL_SERVICE *q_u, S DEBUG(10, ("_svcctl_query_service_config: Should call the commFound service [%s], [%s]\n",service_info->servicename,service_info->filename)); #endif - - return WERR_OK; } /******************************************************************** diff --git a/source3/services/svc_rcinit.c b/source3/services/svc_rcinit.c index a4046b3511..c856ae2a99 100644 --- a/source3/services/svc_rcinit.c +++ b/source3/services/svc_rcinit.c @@ -171,7 +171,7 @@ BOOL get_LSB_data(char *fname,Service_info *si ) /********************************************************************* *********************************************************************/ -static WERROR rcinit_stop( void ) +static WERROR rcinit_stop( SERVICE_STATUS *service_status ) { return WERR_OK; } diff --git a/source3/services/svc_spoolss.c b/source3/services/svc_spoolss.c index 991bc0fbfd..bd2f7173f1 100644 --- a/source3/services/svc_spoolss.c +++ b/source3/services/svc_spoolss.c @@ -25,7 +25,7 @@ /********************************************************************* *********************************************************************/ -static WERROR spoolss_stop( void ) +static WERROR spoolss_stop( SERVICE_STATUS *service_status ) { return WERR_OK; } |