Explorar o código

Bug 630097 - (cov#12143) NULL dereference in cos cache code

The tmpDn pointer is deferenced before checking if it is NULL. We
need to check if it is NULL first.
Nathan Kinder %!s(int64=15) %!d(string=hai) anos
pai
achega
3571d7a585
Modificáronse 1 ficheiros con 8 adicións e 2 borrados
  1. 8 2
      ldap/servers/plugins/cos/cos_cache.c

+ 8 - 2
ldap/servers/plugins/cos/cos_cache.c

@@ -1383,7 +1383,7 @@ static int cos_cache_add_defn(
 	int ret = 0;
 	int ret = 0;
 	int tmplCount = 0;
 	int tmplCount = 0;
 	cosDefinitions *theDef = 0;
 	cosDefinitions *theDef = 0;
-	cosAttrValue *pTmpTmplDn = *tmpDn;
+	cosAttrValue *pTmpTmplDn = 0;
 	cosAttrValue *pDummyAttrVal = 0;
 	cosAttrValue *pDummyAttrVal = 0;
 	cosAttrValue *pAttrsIter = 0;
 	cosAttrValue *pAttrsIter = 0;
 	cosAttributes *pDummyAttributes = 0;
 	cosAttributes *pDummyAttributes = 0;
@@ -1396,9 +1396,15 @@ static int cos_cache_add_defn(
 		ret = -1;
 		ret = -1;
 		goto out;
 		goto out;
 	}
 	}
-
 	pSpecsIter = *spec;
 	pSpecsIter = *spec;
 
 
+	if (!tmpDn) {
+		LDAPDebug( LDAP_DEBUG_ANY, "missing tmpDn\n",0,0,0);
+		ret = -1;
+		goto out;
+	}
+	pTmpTmplDn = *tmpDn;
+
 	/* we don't want cosspecifiers that can be supplied by the same scheme */
 	/* we don't want cosspecifiers that can be supplied by the same scheme */
 	while( pSpecsIter )
 	while( pSpecsIter )
 	{
 	{