s3-svcctl: use security descriptor marshall helper in svcctl_set_secdesc().
authorGünther Deschner <gd@samba.org>
Thu, 5 Feb 2009 01:54:05 +0000 (02:54 +0100)
committerGünther Deschner <gd@samba.org>
Thu, 5 Feb 2009 11:15:13 +0000 (12:15 +0100)
Guenther

source3/services/services_db.c

index e41524851fb86f37a27bd52282dc6e59a1eb7a21..6d1b5d5b952dde365c0c0d73ba0a8b052311755b 100644 (file)
@@ -567,7 +567,8 @@ bool svcctl_set_secdesc( TALLOC_CTX *ctx, const char *name, SEC_DESC *sec_desc,
        WERROR wresult;
        char *path = NULL;
        REGVAL_CTR *values = NULL;
-       prs_struct ps;
+       DATA_BLOB blob;
+       NTSTATUS status;
        bool ret = False;
 
        /* now add the security descriptor */
@@ -593,21 +594,18 @@ bool svcctl_set_secdesc( TALLOC_CTX *ctx, const char *name, SEC_DESC *sec_desc,
 
        /* stream the printer security descriptor */
 
-       if (!prs_init( &ps, RPC_MAX_PDU_FRAG_LEN, key, MARSHALL)) {
-               DEBUG(0,("svcctl_set_secdesc: prs_init() failed!\n"));
+       status = marshall_sec_desc(ctx, sec_desc, &blob.data, &blob.length);
+       if (!NT_STATUS_IS_OK(status)) {
+               DEBUG(0,("svcctl_set_secdesc: ndr_push_struct_blob() failed!\n"));
                TALLOC_FREE( key );
                return False;
        }
 
-       if ( sec_io_desc("sec_desc", &sec_desc, &ps, 0 ) ) {
-               uint32 offset = prs_offset( &ps );
-               regval_ctr_addvalue( values, "Security", REG_BINARY, prs_data_p(&ps), offset );
-               ret = store_reg_values( key, values );
-       }
+       regval_ctr_addvalue( values, "Security", REG_BINARY, (const char *)blob.data, blob.length);
+       ret = store_reg_values( key, values );
 
        /* cleanup */
 
-       prs_mem_free( &ps );
        TALLOC_FREE( key);
 
        return ret;