diff --git a/servers/slapd/value.c b/servers/slapd/value.c
index 3da4bc511f40110db4272b94cc2e17742293404c..8988171b4388a6adbf8b88696466818e0ce5b290 100644
--- a/servers/slapd/value.c
+++ b/servers/slapd/value.c
@@ -235,7 +235,6 @@ int value_find_ex(
 		}
 	}
 
-	rc = LDAP_NO_SUCH_ATTRIBUTE;
 	for ( i = 0; vals[i].bv_val != NULL; i++ ) {
 		int match;
 		const char *text;
@@ -244,10 +243,11 @@ int value_find_ex(
 			&vals[i], nval.bv_val == NULL ? val : &nval, &text );
 
 		if( rc == LDAP_SUCCESS && match == 0 ) {
-			break;
+			sl_free( nval.bv_val, ctx );
+			return rc;
 		}
 	}
 
 	sl_free( nval.bv_val, ctx );
-	return rc;
+	return LDAP_NO_SUCH_ATTRIBUTE;
 }