summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source4/librpc/idl/winreg.idl2
-rw-r--r--source4/torture/rpc/winreg.c18
2 files changed, 18 insertions, 2 deletions
diff --git a/source4/librpc/idl/winreg.idl b/source4/librpc/idl/winreg.idl
index a0211ad1a2..d8f50990db 100644
--- a/source4/librpc/idl/winreg.idl
+++ b/source4/librpc/idl/winreg.idl
@@ -273,7 +273,7 @@ import "lsa.idl", "initshutdown.idl", "security.idl";
/* Function: 0x15 */
WERROR winreg_SetKeySecurity(
[in,ref] policy_handle *handle,
- [in] winreg_AccessMask access_mask,
+ [in] security_secinfo sec_info,
[in,ref] KeySecurityData *sd
);
diff --git a/source4/torture/rpc/winreg.c b/source4/torture/rpc/winreg.c
index d9514ad9bb..4b00c03260 100644
--- a/source4/torture/rpc/winreg.c
+++ b/source4/torture/rpc/winreg.c
@@ -228,6 +228,7 @@ static bool test_SetKeySecurity(struct dcerpc_pipe *p,
struct winreg_SetKeySecurity r;
struct KeySecurityData *sdata = NULL;
DATA_BLOB sdblob;
+ uint32_t sec_info;
ZERO_STRUCT(r);
@@ -245,8 +246,23 @@ static bool test_SetKeySecurity(struct dcerpc_pipe *p,
sdata->size = sdblob.length;
sdata->len = sdblob.length;
+ sec_info = SECINFO_UNPROTECTED_SACL | SECINFO_UNPROTECTED_DACL;
+
+ if (sd->owner_sid) {
+ sec_info |= SECINFO_OWNER;
+ }
+ if (sd->group_sid) {
+ sec_info |= SECINFO_GROUP;
+ }
+ if (sd->sacl) {
+ sec_info |= SECINFO_SACL;
+ }
+ if (sd->dacl) {
+ sec_info |= SECINFO_DACL;
+ }
+
r.in.handle = handle;
- r.in.access_mask = SEC_FLAG_MAXIMUM_ALLOWED;
+ r.in.sec_info = sec_info;
r.in.sd = sdata;
torture_assert_ntstatus_ok(tctx,