summaryrefslogtreecommitdiffstats
path: root/source/libcli/security/dom_sid.c
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2004-11-26 12:30:39 +0000
committerAndrew Tridgell <tridge@samba.org>2004-11-26 12:30:39 +0000
commit1b3fe5daacf0d5a28adba104b2c71a326ed63bc6 (patch)
tree0528a3e27ecb1e1a9842d5ffae6c1406e308cb1a /source/libcli/security/dom_sid.c
parent394680236248cac4cd6c85d45f1218a9025aacdd (diff)
downloadsamba-1b3fe5daacf0d5a28adba104b2c71a326ed63bc6.tar.gz
samba-1b3fe5daacf0d5a28adba104b2c71a326ed63bc6.tar.xz
samba-1b3fe5daacf0d5a28adba104b2c71a326ed63bc6.zip
r3979: added server side code for lsa_LookupSids2() and fixed authority_name
return code to include our own domain. editing of ACLs via the w2k3 GUI works nicely (and faster) with these changes
Diffstat (limited to 'source/libcli/security/dom_sid.c')
-rw-r--r--source/libcli/security/dom_sid.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/source/libcli/security/dom_sid.c b/source/libcli/security/dom_sid.c
index 001618bb076..dbd03108e49 100644
--- a/source/libcli/security/dom_sid.c
+++ b/source/libcli/security/dom_sid.c
@@ -239,3 +239,29 @@ struct dom_sid *dom_sid_add_rid(TALLOC_CTX *mem_ctx,
sid->num_auths++;
return sid;
}
+
+
+/*
+ return True if the 2nd sid is in the domain given by the first sid
+*/
+BOOL dom_sid_in_domain(const struct dom_sid *domain_sid,
+ const struct dom_sid *sid)
+{
+ int i;
+
+ if (!domain_sid || !sid) {
+ return False;
+ }
+
+ if (domain_sid->num_auths > sid->num_auths) {
+ return False;
+ }
+
+ for (i = domain_sid->num_auths-1; i >= 0; --i) {
+ if (domain_sid->sub_auths[i] != sid->sub_auths[i]) {
+ return False;
+ }
+ }
+
+ return dom_sid_compare_auth(domain_sid, sid) == 0;
+}