From: Andreas Schneider Date: Wed, 24 Sep 2014 07:23:58 +0000 (+0200) Subject: s3-libads: Add function to search for an element in an array. X-Git-Tag: samba-4.0.23~55 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4e2e567feb583aed0107c13910ddeaeeaf12186b;p=thirdparty%2Fsamba.git s3-libads: Add function to search for an element in an array. BUG: https://bugzilla.samba.org/show_bug.cgi?id=9984 Signed-off-by: Andreas Schneider Reviewed-by: Guenther Deschner (cherry picked from commit e1ee4c8bc7018db7787dd9a0be6d3aa40a477ee2) --- diff --git a/source3/libads/ads_proto.h b/source3/libads/ads_proto.h index 6a2280734df..1e34247e2fe 100644 --- a/source3/libads/ads_proto.h +++ b/source3/libads/ads_proto.h @@ -88,6 +88,8 @@ ADS_STATUS ads_add_strlist(TALLOC_CTX *ctx, ADS_MODLIST *mods, uint32 ads_get_kvno(ADS_STRUCT *ads, const char *account_name); uint32_t ads_get_machine_kvno(ADS_STRUCT *ads, const char *machine_name); +bool ads_element_in_array(const char **el_array, size_t num_el, const char *el); + ADS_STATUS ads_get_service_principal_names(TALLOC_CTX *mem_ctx, ADS_STRUCT *ads, const char *machine_name, diff --git a/source3/libads/ldap.c b/source3/libads/ldap.c index b2287266ce0..dfec70e40af 100644 --- a/source3/libads/ldap.c +++ b/source3/libads/ldap.c @@ -1908,6 +1908,37 @@ ADS_STATUS ads_clear_service_principal_names(ADS_STRUCT *ads, const char *machin return ret; } +/** + * @brief Search for an element in a string array. + * + * @param[in] el_array The string array to search. + * + * @param[in] num_el The number of elements in the string array. + * + * @param[in] el The string to search. + * + * @return True if found, false if not. + */ +bool ads_element_in_array(const char **el_array, size_t num_el, const char *el) +{ + size_t i; + + if (el_array == NULL || num_el == 0 || el == NULL) { + return false; + } + + for (i = 0; i < num_el && el_array[i] != NULL; i++) { + int cmp; + + cmp = strcasecmp_m(el_array[i], el); + if (cmp == 0) { + return true; + } + } + + return false; +} + /** * @brief This gets the service principal names of an existing computer account. *