From 04611d9ebc1c54c6ec6ee3a6a365035dd477283c Mon Sep 17 00:00:00 2001 From: Joseph Sutton Date: Mon, 30 Oct 2023 14:51:17 +1300 Subject: [PATCH] libcli/security: Add sids_contains_sid() Signed-off-by: Joseph Sutton Reviewed-by: Andrew Bartlett --- libcli/security/dom_sid.h | 3 +++ libcli/security/util_sid.c | 22 ++++++++++++++++++++++ 2 files changed, 25 insertions(+) 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. -- 2.47.3