diff options
author | Andrew Tridgell <tridge@samba.org> | 2001-12-19 08:37:03 +0000 |
---|---|---|
committer | Andrew Tridgell <tridge@samba.org> | 2001-12-19 08:37:03 +0000 |
commit | 279276c9ca0106e4191e170a442b871543c034ac (patch) | |
tree | 94745d054a0a75a0f42c96557f301423ea5ad51f /source3/lib/util_sid.c | |
parent | 085d62b38cc9869dbab1356c105520ab2347939d (diff) | |
download | samba-279276c9ca0106e4191e170a442b871543c034ac.tar.gz samba-279276c9ca0106e4191e170a442b871543c034ac.tar.xz samba-279276c9ca0106e4191e170a442b871543c034ac.zip |
fixed sid_compare_domain()
(This used to be commit c11c27b2812ceb06a52afbb7662f82a8676b1707)
Diffstat (limited to 'source3/lib/util_sid.c')
-rw-r--r-- | source3/lib/util_sid.c | 32 |
1 files changed, 29 insertions, 3 deletions
diff --git a/source3/lib/util_sid.c b/source3/lib/util_sid.c index 1e0feac049c..009cc7742af 100644 --- a/source3/lib/util_sid.c +++ b/source3/lib/util_sid.c @@ -358,6 +358,16 @@ char *sid_to_string(fstring sidstr_out, DOM_SID *sid) return sidstr_out; } +/* + useful function for debug lines +*/ +const char *sid_string_static(DOM_SID *sid) +{ + static fstring sid_str; + sid_to_string(sid_str, sid); + return sid_str; +} + /***************************************************************** Convert a string to a SID. Returns True on success, False on fail. *****************************************************************/ @@ -531,9 +541,9 @@ BOOL sid_parse(char *inbuf, size_t len, DOM_SID *sid) /***************************************************************** - Compare the domain portion of two sids. + Compare the auth portion of two sids. *****************************************************************/ -int sid_compare_domain(const DOM_SID *sid1, const DOM_SID *sid2) +int sid_compare_auth(const DOM_SID *sid1, const DOM_SID *sid2) { int i; @@ -570,9 +580,25 @@ int sid_compare(const DOM_SID *sid1, const DOM_SID *sid2) if (sid1->sub_auths[i] != sid2->sub_auths[i]) return sid1->sub_auths[i] - sid2->sub_auths[i]; - return sid_compare_domain(sid1, sid2); + return sid_compare_auth(sid1, sid2); } +/***************************************************************** +see if 2 SIDs are in the same domain +this just compares the leading sub-auths +*****************************************************************/ +int sid_compare_domain(const DOM_SID *sid1, const DOM_SID *sid2) +{ + int n, i; + + n = MIN(sid1->num_auths, sid2->num_auths); + + for (i = n-1; i >= 0; --i) + if (sid1->sub_auths[i] != sid2->sub_auths[i]) + return sid1->sub_auths[i] - sid2->sub_auths[i]; + + return sid_compare_auth(sid1, sid2); +} /***************************************************************** Compare two sids. |