void *util_ldap_search_node_copy(util_ald_cache_t *cache, void *c) { util_search_node_t *node = (util_search_node_t *)c; util_search_node_t *newnode = util_ald_alloc(cache, sizeof(util_search_node_t)); /* safety check */ if (newnode) { /* copy vals */ if (node->vals) { int k = node->numvals; int i = 0; if (!(newnode->vals = util_ald_alloc(cache, sizeof(char *) * (k+1)))) { util_ldap_search_node_free(cache, newnode); return NULL; } newnode->numvals = node->numvals; for (;k;k--) { if (node->vals[i]) { if (!(newnode->vals[i] = util_ald_strdup(cache, node->vals[i]))) { util_ldap_search_node_free(cache, newnode); return NULL; } } else newnode->vals[i] = NULL; i++; } } else { newnode->vals = NULL; } if (!(newnode->username = util_ald_strdup(cache, node->username)) || !(newnode->dn = util_ald_strdup(cache, node->dn)) ) { util_ldap_search_node_free(cache, newnode); return NULL; } if(node->bindpw) { if(!(newnode->bindpw = util_ald_strdup(cache, node->bindpw))) { util_ldap_search_node_free(cache, newnode); return NULL; } } else { newnode->bindpw = NULL; } newnode->lastbind = node->lastbind; } return (void *)newnode; }
void *util_ldap_dn_compare_node_copy(util_ald_cache_t *cache, void *c) { util_dn_compare_node_t *n = (util_dn_compare_node_t *)c; util_dn_compare_node_t *node = (util_dn_compare_node_t *)util_ald_alloc(cache, sizeof(util_dn_compare_node_t)); if (node) { if (!(node->reqdn = util_ald_strdup(cache, n->reqdn)) || !(node->dn = util_ald_strdup(cache, n->dn))) { util_ldap_dn_compare_node_free(cache, node); return NULL; } return node; } else { return NULL; } }
void *util_ldap_compare_node_copy(util_ald_cache_t *cache, void *c) { util_compare_node_t *n = (util_compare_node_t *)c; util_compare_node_t *node = (util_compare_node_t *)util_ald_alloc(cache, sizeof(util_compare_node_t)); if (node) { if (!(node->dn = util_ald_strdup(cache, n->dn)) || !(node->attrib = util_ald_strdup(cache, n->attrib)) || !(node->value = util_ald_strdup(cache, n->value))) { util_ldap_compare_node_free(cache, node); return NULL; } node->lastcompare = n->lastcompare; node->result = n->result; return node; } else { return NULL; } }
void *util_ldap_compare_node_copy(util_ald_cache_t *cache, void *c) { util_compare_node_t *n = c; util_compare_node_t *node = util_ald_alloc(cache, sizeof *node); if (node) { if (!(node->dn = util_ald_strdup(cache, n->dn)) || !(node->attrib = util_ald_strdup(cache, n->attrib)) || !(node->value = util_ald_strdup(cache, n->value)) || ((n->subgroupList) && !(node->subgroupList = util_ald_sgl_dup(cache, n->subgroupList)))) { util_ldap_compare_node_free(cache, node); return NULL; } node->lastcompare = n->lastcompare; node->result = n->result; node->sgl_processed = n->sgl_processed; return node; } else { return NULL; } }
void *util_ldap_url_node_copy(util_ald_cache_t *cache, void *c) { util_url_node_t *n = (util_url_node_t *)c; util_url_node_t *node = (util_url_node_t *)util_ald_alloc(cache, sizeof(util_url_node_t)); if (node) { if (!(node->url = util_ald_strdup(cache, n->url))) { util_ald_free(cache, node->url); return NULL; } node->search_cache = n->search_cache; node->compare_cache = n->compare_cache; node->dn_compare_cache = n->dn_compare_cache; return node; } else { return NULL; } }