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)
committerGünther Deschner <gd@samba.org>
Fri, 26 Sep 2014 03:55:34 +0000 (05:55 +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>
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 c683e2c530a98c739ccc6dbb5f1394086003b72f..06b4895eedbe0bef800344df261a9f917aed1c75 100644 (file)
@@ -1914,6 +1914,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.
  *