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