diff options
author | Jeremy Allison <jra@samba.org> | 2000-09-13 22:01:15 +0000 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2000-09-13 22:01:15 +0000 |
commit | 29f41d0d95661fbc31ae1d9669fd7fb439169f90 (patch) | |
tree | b64942cfbc7fa59795fc7d5952f7ac1199161717 | |
parent | 79c94f37d0434150d84858e67c8677650106d76c (diff) | |
download | samba-29f41d0d95661fbc31ae1d9669fd7fb439169f90.tar.gz samba-29f41d0d95661fbc31ae1d9669fd7fb439169f90.tar.xz samba-29f41d0d95661fbc31ae1d9669fd7fb439169f90.zip |
Ensure old DACL and SACL are preserved if the new SD is a 'set' only.
Jeremy.
-rw-r--r-- | source/printing/nt_printing.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/source/printing/nt_printing.c b/source/printing/nt_printing.c index 734cf7f8a85..255418a0ed3 100644 --- a/source/printing/nt_printing.c +++ b/source/printing/nt_printing.c @@ -1982,6 +1982,7 @@ uint32 nt_printing_setsec(char *printername, SEC_DESC_BUF *secdesc_ctr) if (!secdesc_ctr->sec->owner_sid || !secdesc_ctr->sec->grp_sid) { DOM_SID *owner_sid, *group_sid; + SEC_ACL *dacl, *sacl; SEC_DESC *psd = NULL; size_t size; @@ -1997,13 +1998,21 @@ uint32 nt_printing_setsec(char *printername, SEC_DESC_BUF *secdesc_ctr) secdesc_ctr->sec->grp_sid : old_secdesc_ctr->sec->grp_sid; + dacl = secdesc_ctr->sec->dacl ? + secdesc_ctr->sec->dacl : + old_secdesc_ctr->sec->dacl; + + sacl = secdesc_ctr->sec->sacl ? + secdesc_ctr->sec->sacl : + old_secdesc_ctr->sec->sacl; + /* Make a deep copy of the security descriptor */ psd = make_sec_desc(secdesc_ctr->sec->revision, secdesc_ctr->sec->type, owner_sid, group_sid, - secdesc_ctr->sec->sacl, - secdesc_ctr->sec->dacl, + sacl, + dacl, &size); new_secdesc_ctr = make_sec_desc_buf(size, psd); |