s3-libads: Add function to search for an element in an array.
authorAndreas Schneider <asn@samba.org>
Wed, 24 Sep 2014 07:23:58 +0000 (09:23 +0200)
committerKarolin Seeger <kseeger@samba.org>
Thu, 9 Oct 2014 19:23:05 +0000 (21:23 +0200)
BUG: https://bugzilla.samba.org/show_bug.cgi?id=9984

Signed-off-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Guenther Deschner <gd@samba.org>
(cherry picked from commit e1ee4c8bc7018db7787dd9a0be6d3aa40a477ee2)

source3/libads/ads_proto.h
source3/libads/ldap.c

index 6a2280734dffbc2410aeda3446deacbde221766c..1e34247e2fe49e0173f3ce2c480431aafa3fb930 100644 (file)
@@ -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,
index 51a08835d2ef3b3baa3337024963479b12458fc5..8d104c2f595175b54e339ed59e077ffba4ca6d1a 100644 (file)
@@ -1926,6 +1926,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.
  *