From c0bbed43c75a7b2f61656460b758a73ed40d0817 Mon Sep 17 00:00:00 2001
From: Howard Chu <hyc@openldap.org>
Date: Thu, 2 Feb 2012 03:26:53 -0800
Subject: [PATCH] ITS#7146 fix prev commit

---
 servers/slapd/back-mdb/attr.c     |  6 ++++++
 servers/slapd/back-mdb/id2entry.c | 10 +++++-----
 2 files changed, 11 insertions(+), 5 deletions(-)

diff --git a/servers/slapd/back-mdb/attr.c b/servers/slapd/back-mdb/attr.c
index e57c5d7145..8faf17a59c 100644
--- a/servers/slapd/back-mdb/attr.c
+++ b/servers/slapd/back-mdb/attr.c
@@ -556,6 +556,12 @@ int mdb_ad_read( struct mdb_info *mdb, MDB_txn *txn )
 		if ( rc ) {
 			rc = slap_bv2undef_ad( &bdata, &mdb->mi_ads[i], &text, 0 );
 		} else {
+			if ( ad->ad_index >= MDB_MAXADS ) {
+				Debug( LDAP_DEBUG_ANY,
+					"mdb_adb_read: too many AttributeDescriptions in use\n",
+					0, 0, 0 );
+				return LDAP_OTHER;
+			}
 			mdb->mi_adxs[ad->ad_index] = i;
 			mdb->mi_ads[i] = ad;
 		}
diff --git a/servers/slapd/back-mdb/id2entry.c b/servers/slapd/back-mdb/id2entry.c
index cdc2e051a2..863ccf6c1f 100644
--- a/servers/slapd/back-mdb/id2entry.c
+++ b/servers/slapd/back-mdb/id2entry.c
@@ -500,6 +500,11 @@ static int mdb_entry_partsize(struct mdb_info *mdb, MDB_txn *txn, Entry *e,
 	for (a=e->e_attrs; a; a=a->a_next) {
 		/* For AttributeDesc, we only store the attr index */
 		nat++;
+		if (a->a_desc->ad_index >= MDB_MAXADS) {
+			Debug( LDAP_DEBUG_ANY, "mdb_entry_partsize: too many AttributeDescriptions used\n",
+				0, 0, 0 );
+			return LDAP_OTHER;
+		}
 		if (!mdb->mi_adxs[a->a_desc->ad_index]) {
 			int rc = mdb_ad_get(mdb, txn, a->a_desc);
 			if (rc)
@@ -569,11 +574,6 @@ static int mdb_entry_encode(Operation *op, Entry *e, MDB_val *data, Ecount *eh)
 	ptr = (unsigned char *)(lp + eh->offset);
 
 	for (a=e->e_attrs; a; a=a->a_next) {
-		if (a->a_desc->ad_index >= MDB_MAXADS) {
-			Debug( LDAP_DEBUG_ANY, "mdb_entry_encode: too many AttributeDescriptions used\n",
-				0, 0, 0 );
-			return LDAP_OTHER;
-		}
 		*lp++ = mdb->mi_adxs[a->a_desc->ad_index];
 		l = a->a_numvals;
 		if (a->a_nvals != a->a_vals)
-- 
GitLab