Blob Blame Raw
From 602e9ef126808491be5d33d9c4faa9c86e63730a Mon Sep 17 00:00:00 2001
From: Noriko Hosoi <nhosoi@redhat.com>
Date: Sun, 25 Jan 2015 22:05:12 -0800
Subject: [PATCH] Ticket 47988: Schema learning mechanism, in replication,
 unable to extend an existing definition

Description: Covscan FORWARD_NULL fix introduced by commit
commit 51e05df9c37c66206041f026c9a67ec17bc9ea4a

1. ldap/servers/slapd/schema.c:2490: var_deref_op: Dereferencing null pointer "mod->mod_vals.modv_bvals".
2. ldap/servers/slapd/schema.c:2603: var_deref_op: Dereferencing null pointer "mod->mod_vals.modv_bvals".

Added NULL check on mod->mod_bvalues to the for loop stop condition.

(cherry picked from commit cfa8e4daef9253df0bd8a348f302299bda16b37c)
(cherry picked from commit 1e2bf2b1ee6cd4c08a171edfedb10ee6bb1c3420)
---
 ldap/servers/slapd/schema.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/ldap/servers/slapd/schema.c b/ldap/servers/slapd/schema.c
index 05329a6..a251aa7 100644
--- a/ldap/servers/slapd/schema.c
+++ b/ldap/servers/slapd/schema.c
@@ -2487,7 +2487,7 @@ schema_delete_objectclasses( Slapi_Entry *entryBefore, LDAPMod *mod,
 	}
   }
 
-  for (i = 0; mod->mod_bvalues[i]; i++) {
+  for (i = 0; mod->mod_bvalues && mod->mod_bvalues[i]; i++) {
 	if ( LDAP_SUCCESS != ( rc = parse_oc_str (
 				(const char *)mod->mod_bvalues[i]->bv_val, &delete_oc,
 				errorbuf, errorbufsize, 0, 0, schema_ds4x_compat, NULL))) {
@@ -2600,7 +2600,7 @@ schema_delete_attributes ( Slapi_Entry *entryBefore, LDAPMod *mod,
 	  }
   }
 
-  for (i = 0; mod->mod_bvalues[i]; i++) {
+  for (i = 0; mod->mod_bvalues && mod->mod_bvalues[i]; i++) {
 	attr_ldif =(char *)  mod->mod_bvalues[i]->bv_val;
 
 	/* normalize the attr ldif */
-- 
1.9.3