+
+int contains_member(LDAP *ldap_handle, char *dn_path, char *group_name,
+ char *UserOu, char *user_name)
+{
+ char search_filter[1024];
+ char *attr_array[3];
+ LK_ENTRY *group_base;
+ int group_count;
+ int rc;
+ char temp[256];
+
+ if(ActiveDirectory)
+ {
+ sprintf(temp, "CN=%s,%s,%s", user_name, UserOu, dn_path);
+ }
+ else
+ {
+ if(!strcmp(UserOu, user_ou))
+ sprintf(temp, "uid=%s,%s,%s", user_name, UserOu, dn_path);
+ else
+ sprintf(temp, "CN=%s,%s,%s", user_name, UserOu, dn_path);
+ }
+
+ group_base = NULL;
+ group_count = 0;
+
+ sprintf(search_filter, "(&(objectClass=group)(cn=%s)(member=%s))",
+ group_name, temp);
+
+ attr_array[0] = "mitMoiraId";
+ attr_array[1] = NULL;
+
+ if ((rc = linklist_build(ldap_handle, dn_path, search_filter,
+ attr_array, &group_base, &group_count,
+ LDAP_SCOPE_SUBTREE)) != 0)
+ {
+ com_err(whoami, 0, "Unable to check group %s for membership of %s : %s",
+ group_name, user_name, ldap_err2string(rc));
+ return(-1);
+ }
+
+ if (group_count)
+ {
+ com_err(whoami, 0, "Group %s contains member %s", group_name, user_name);
+ rc = 1;
+ }
+ else
+ {
+ com_err(whoami, 0, "Group %s does not contain member %s", group_name, user_name);
+ rc = 0;
+ }
+
+ linklist_free(group_base);
+ group_count = 0;
+ group_base = NULL;
+
+ return(rc);
+}