From: Joseph Sutton Date: Mon, 30 Oct 2023 01:51:17 +0000 (+1300) Subject: libcli/security: Add sids_contains_sid() X-Git-Tag: talloc-2.4.2~929 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=04611d9ebc1c54c6ec6ee3a6a365035dd477283c;p=thirdparty%2Fsamba.git libcli/security: Add sids_contains_sid() Signed-off-by: Joseph Sutton Reviewed-by: Andrew Bartlett --- diff --git a/libcli/security/dom_sid.h b/libcli/security/dom_sid.h index 534b4808ce5..058200d0fe4 100644 --- a/libcli/security/dom_sid.h +++ b/libcli/security/dom_sid.h @@ -141,6 +141,9 @@ void del_sid_from_array(const struct dom_sid *sid, struct dom_sid **sids, bool add_rid_to_array_unique(TALLOC_CTX *mem_ctx, uint32_t rid, uint32_t **pp_rids, size_t *p_num); bool is_null_sid(const struct dom_sid *sid); +bool sids_contains_sid(const struct dom_sid *sids, + const uint32_t num_sids, + const struct dom_sid *sid); bool sids_contains_sid_attrs(const struct auth_SidAttr *sids, const uint32_t num_sids, const struct dom_sid *sid, diff --git a/libcli/security/util_sid.c b/libcli/security/util_sid.c index b3408b37a46..8b548199261 100644 --- a/libcli/security/util_sid.c +++ b/libcli/security/util_sid.c @@ -511,6 +511,28 @@ bool is_null_sid(const struct dom_sid *sid) return dom_sid_equal(sid, &null_sid); } +/** + * Return true if an array of SIDs contains a certain SID. + * + * @param [in] sids The SID array. + * @param [in] num_sids The size of the SID array. + * @param [in] sid The SID in question. + * @returns true if the array contains the SID. + */ +bool sids_contains_sid(const struct dom_sid *sids, + const uint32_t num_sids, + const struct dom_sid *sid) +{ + uint32_t i; + + for (i = 0; i < num_sids; i++) { + if (dom_sid_equal(&sids[i], sid)) { + return true; + } + } + return false; +} + /** * Return true if an array of auth_SidAttr contains a certain SID with certain * attributes.