s3:srv_ntsvcs_nt: make fill_svc_config() use svcctl_get_string_value()
authorMichael Adam <obnox@samba.org>
Mon, 20 Sep 2010 08:30:30 +0000 (10:30 +0200)
committerMichael Adam <obnox@samba.org>
Tue, 21 Sep 2010 04:53:31 +0000 (06:53 +0200)
instead of using legacy svcctl_fetch_regvalues()

source3/rpc_server/srv_svcctl_nt.c

index 74f9d813beb43c41889be258a4ab6c349a8ebd3d..daf5f60710ca283df1be82582e67ec7cb314aad9 100644 (file)
@@ -644,27 +644,21 @@ static WERROR fill_svc_config( TALLOC_CTX *ctx, const char *name,
                               struct QUERY_SERVICE_CONFIG *config,
                               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 */
@@ -686,7 +680,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;
 }