ITS#7146 fix prev commit

This commit is contained in:
Howard Chu 2012-02-02 03:26:53 -08:00
parent 9d3b1af2ff
commit 3423b56690
2 changed files with 11 additions and 5 deletions

View file

@ -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;
}

View file

@ -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)