summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/cache.c2
-rw-r--r--src/ldap_driver.c17
2 files changed, 7 insertions, 12 deletions
diff --git a/src/cache.c b/src/cache.c
index bd6ba7c..de99ad9 100644
--- a/src/cache.c
+++ b/src/cache.c
@@ -175,6 +175,8 @@ cached_ldap_rdatalist_get(isc_mem_t *mctx, ldap_cache_t *cache,
REQUIRE(cache != NULL);
+ INIT_LIST(*rdatalist);
+
if (cache->rbt == NULL)
return ldapdb_rdatalist_get(mctx, ldap_inst, name, origin,
rdatalist);
diff --git a/src/ldap_driver.c b/src/ldap_driver.c
index 12b1db3..1839025 100644
--- a/src/ldap_driver.c
+++ b/src/ldap_driver.c
@@ -98,7 +98,7 @@ ldapdbnode_create(isc_mem_t *mctx, dns_name_t *owner, ldapdbnode_t **nodep)
node->magic = LDAPDBNODE_MAGIC;
- ISC_LIST_INIT(node->rdatalist);
+ INIT_LIST(node->rdatalist);
*nodep = node;
@@ -318,22 +318,15 @@ findnode(dns_db_t *db, dns_name_t *name, isc_boolean_t create,
ldapdb->ldap_cache, ldapdb->ldap_inst,
name, &ldapdb->common.origin,
&rdatalist);
-
- if (result == ISC_R_NOMEMORY)
- return ISC_R_NOMEMORY;
-
if (create == ISC_FALSE) {
- /* No partial matches are allowed in this function */
- if (result == DNS_R_PARTIALMATCH) {
- result = ISC_R_NOTFOUND;
+ if (result != ISC_R_SUCCESS)
+ goto cleanup;
+ } else {
+ if (result != ISC_R_NOTFOUND && result != ISC_R_SUCCESS)
goto cleanup;
- } else if (result != ISC_R_SUCCESS) {
- return result;
- }
}
CHECK(ldapdbnode_create(ldapdb->common.mctx, name, &node));
-
memcpy(&node->rdatalist, &rdatalist, sizeof(rdatalist));
*nodep = node;