diff --git a/servers/slapd/acl.c b/servers/slapd/acl.c
index 9f7be5ef59408a6e4802c5047251bc588d55da37..02bf54eeae1db4da9bc8e5a18f4d67c42c627b81 100644
--- a/servers/slapd/acl.c
+++ b/servers/slapd/acl.c
@@ -1348,7 +1348,14 @@ acl_check_modlist(
 		case LDAP_MOD_ADD:
 			assert( mlist->sml_bvalues != NULL );
 
-			for ( bv = mlist->sml_bvalues; bv->bv_val != NULL; bv++ ) {
+#ifdef SLAP_NVALUES
+			for ( bv = mlist->sml_nvalues
+					? mlist->sml_nvalues : mlist->sml_values;
+				bv->bv_val != NULL; bv++ )
+#else
+			for ( bv = mlist->sml_bvalues; bv->bv_val != NULL; bv++ )
+#endif
+			{
 				if ( ! access_allowed( be, conn, op, e,
 					mlist->sml_desc, bv, ACL_WRITE, &state ) )
 				{
@@ -1366,7 +1373,14 @@ acl_check_modlist(
 				}
 				break;
 			}
-			for ( bv = mlist->sml_bvalues; bv->bv_val != NULL; bv++ ) {
+#ifdef SLAP_NVALUES
+			for ( bv = mlist->sml_nvalues
+					? mlist->sml_nvalues : mlist->sml_values;
+				bv->bv_val != NULL; bv++ )
+#else
+			for ( bv = mlist->sml_bvalues; bv->bv_val != NULL; bv++ )
+#endif
+			{
 				if ( ! access_allowed( be, conn, op, e,
 					mlist->sml_desc, bv, ACL_WRITE, &state ) )
 				{