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