diff options
-rw-r--r-- | src/cache.c | 2 | ||||
-rw-r--r-- | src/ldap_driver.c | 17 |
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; |