diff options
author | Gerald Carter <jerry@samba.org> | 2005-06-15 03:10:36 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 10:57:15 -0500 |
commit | 899bc3a07df4ce1f77efc1abce7c3a2e855069e5 (patch) | |
tree | 10137c0407ec23950eba1005ea609801e6870503 | |
parent | 2851e43e4881485b0af418975eca8f01ab27ca3b (diff) | |
download | samba-899bc3a07df4ce1f77efc1abce7c3a2e855069e5.tar.gz samba-899bc3a07df4ce1f77efc1abce7c3a2e855069e5.tar.bz2 samba-899bc3a07df4ce1f77efc1abce7c3a2e855069e5.zip |
r7603: * fix a bug in the SERVICE_ALL_ACCESS security mask
* add calls to start and stop a service (to be filled
in by the backend routines in services/svc_*.c
(This used to be commit 793d28a946d83beb2576c5c8ce808d32c71c880a)
-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; } |