a7203a
From 13b185182aeb48562cf63251b84bcf910b57a0fc Mon Sep 17 00:00:00 2001
a7203a
From: Tomas Krizek <tkrizek@redhat.com>
a7203a
Date: Mon, 27 Mar 2017 19:41:05 +0200
a7203a
Subject: [PATCH] Coverity: fix REVERSE_INULL for pevent->inst
a7203a
MIME-Version: 1.0
a7203a
Content-Type: text/plain; charset=UTF-8
a7203a
Content-Transfer-Encoding: 8bit
a7203a
a7203a
With the DynDB API changes, the ldap instance is acquired
a7203a
differently. Previously, obtaining the instance could fail when
a7203a
LDAP was disconnecting, thus the NULL check was necessary in the
a7203a
cleanup part.
a7203a
a7203a
Now, inst is obtained directly from the API. I'm not sure what is
a7203a
the exact behaviour in edge cases such as LDAP disconnecting, so
a7203a
I perform the NULL check a bit earlier, just to be safe.
a7203a
a7203a
Reviewed-By: Petr Menšík <pemensik@redhat.com>
a7203a
---
a7203a
 src/ldap_helper.c | 43 ++++++++++++++++++++++---------------------
a7203a
 1 file changed, 22 insertions(+), 21 deletions(-)
a7203a
a7203a
diff --git a/src/ldap_helper.c b/src/ldap_helper.c
a7203a
index 1fa0ec9adfa2b9ca589587244da03cc6f0584919..9e0174a785d41e2a809130b348345870ca880978 100644
a7203a
--- a/src/ldap_helper.c
a7203a
+++ b/src/ldap_helper.c
a7203a
@@ -3714,6 +3714,7 @@ update_zone(isc_task_t *task, isc_event_t *event)
a7203a
 	mctx = pevent->mctx;
a7203a
 	dns_name_init(&prevname, NULL);
a7203a
 
a7203a
+	REQUIRE(inst != NULL);
a7203a
 	INSIST(task == inst->task); /* For task-exclusive mode */
a7203a
 
a7203a
 	if (SYNCREPL_DEL(pevent->chgtype)) {
a7203a
@@ -3730,12 +3731,11 @@ update_zone(isc_task_t *task, isc_event_t *event)
a7203a
 	}
a7203a
 
a7203a
 cleanup:
a7203a
-	if (inst != NULL) {
a7203a
-		sync_concurr_limit_signal(inst->sctx);
a7203a
-		sync_event_signal(inst->sctx, pevent);
a7203a
-		if (dns_name_dynamic(&prevname))
a7203a
-			dns_name_free(&prevname, inst->mctx);
a7203a
-	}
a7203a
+	sync_concurr_limit_signal(inst->sctx);
a7203a
+	sync_event_signal(inst->sctx, pevent);
a7203a
+	if (dns_name_dynamic(&prevname))
a7203a
+		dns_name_free(&prevname, inst->mctx);
a7203a
+
a7203a
 	if (result != ISC_R_SUCCESS)
a7203a
 		log_error_r("update_zone (syncrepl) failed for %s. "
a7203a
 			    "Zones can be outdated, run `rndc reload`",
a7203a
@@ -3760,14 +3760,14 @@ update_config(isc_task_t * task, isc_event_t *event)
a7203a
 
a7203a
 	mctx = pevent->mctx;
a7203a
 
a7203a
+	REQUIRE(inst != NULL);
a7203a
 	INSIST(task == inst->task); /* For task-exclusive mode */
a7203a
 	CHECK(ldap_parse_configentry(entry, inst));
a7203a
 
a7203a
 cleanup:
a7203a
-	if (inst != NULL) {
a7203a
-		sync_concurr_limit_signal(inst->sctx);
a7203a
-		sync_event_signal(inst->sctx, pevent);
a7203a
-	}
a7203a
+	sync_concurr_limit_signal(inst->sctx);
a7203a
+	sync_event_signal(inst->sctx, pevent);
a7203a
+
a7203a
 	if (result != ISC_R_SUCCESS)
a7203a
 		log_error_r("update_config (syncrepl) failed for %s. "
a7203a
 			    "Configuration can be outdated, run `rndc reload`",
a7203a
@@ -3790,14 +3790,14 @@ update_serverconfig(isc_task_t * task, isc_event_t *event)
a7203a
 
a7203a
 	mctx = pevent->mctx;
a7203a
 
a7203a
+	REQUIRE(inst != NULL);
a7203a
 	INSIST(task == inst->task); /* For task-exclusive mode */
a7203a
 	CHECK(ldap_parse_serverconfigentry(entry, inst));
a7203a
 
a7203a
 cleanup:
a7203a
-	if (inst != NULL) {
a7203a
-		sync_concurr_limit_signal(inst->sctx);
a7203a
-		sync_event_signal(inst->sctx, pevent);
a7203a
-	}
a7203a
+	sync_concurr_limit_signal(inst->sctx);
a7203a
+	sync_event_signal(inst->sctx, pevent);
a7203a
+
a7203a
 	if (result != ISC_R_SUCCESS)
a7203a
 		log_error_r("update_serverconfig (syncrepl) failed for %s. "
a7203a
 			    "Configuration can be outdated, run `rndc reload`",
a7203a
@@ -3860,6 +3860,7 @@ update_record(isc_task_t *task, isc_event_t *event)
a7203a
 	dns_name_init(&prevname, NULL);
a7203a
 	dns_name_init(&prevorigin, NULL);
a7203a
 
a7203a
+	REQUIRE(inst != NULL);
a7203a
 	CHECK(zr_get_zone_ptr(inst->zone_register, &entry->zone_name, &raw, &secure));
a7203a
 	zone_found = ISC_TRUE;
a7203a
 
a7203a
@@ -4020,13 +4021,12 @@ cleanup:
a7203a
 			    ldap_entry_logname(entry), pevent->chgtype);
a7203a
 	}
a7203a
 
a7203a
-	if (inst != NULL) {
a7203a
-		sync_concurr_limit_signal(inst->sctx);
a7203a
-		if (dns_name_dynamic(&prevname))
a7203a
-			dns_name_free(&prevname, inst->mctx);
a7203a
-		if (dns_name_dynamic(&prevorigin))
a7203a
-			dns_name_free(&prevorigin, inst->mctx);
a7203a
-	}
a7203a
+	sync_concurr_limit_signal(inst->sctx);
a7203a
+	if (dns_name_dynamic(&prevname))
a7203a
+		dns_name_free(&prevname, inst->mctx);
a7203a
+	if (dns_name_dynamic(&prevorigin))
a7203a
+		dns_name_free(&prevorigin, inst->mctx);
a7203a
+
a7203a
 	if (raw != NULL)
a7203a
 		dns_zone_detach(&raw;;
a7203a
 	if (secure != NULL)
a7203a
@@ -4106,6 +4106,7 @@ syncrepl_update(ldap_instance_t *inst, ldap_entry_t **entryp, int chgtype)
a7203a
 	isc_task_t *task = NULL;
a7203a
 	isc_boolean_t synchronous;
a7203a
 
a7203a
+	REQUIRE(inst != NULL);
a7203a
 	REQUIRE(entryp != NULL);
a7203a
 	entry = *entryp;
a7203a
 	REQUIRE(entry->class != LDAP_ENTRYCLASS_NONE);
a7203a
-- 
a7203a
2.9.3
a7203a