mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-03-07 14:18:15 +08:00
normalize values only if required
This commit is contained in:
parent
19dc49180d
commit
172e93bfc9
@ -158,9 +158,6 @@ extern int suffix_massage_config( struct rewrite_info *info,
|
||||
extern int ldap_dnattr_rewrite( struct rewrite_info *rwinfo, BerVarray a_vals, void *cookie );
|
||||
#endif /* ENABLE_REWRITE */
|
||||
|
||||
int ldap_build_entry( Operation *op, LDAPMessage *e, Entry *ent,
|
||||
struct berval *bdn, int private );
|
||||
|
||||
LDAP_END_DECL
|
||||
|
||||
#endif /* SLAPD_LDAP_H */
|
||||
|
@ -50,6 +50,12 @@
|
||||
|
||||
#include "lutil.h"
|
||||
|
||||
static int
|
||||
ldap_build_entry( Operation *op, LDAPMessage *e, Entry *ent,
|
||||
struct berval *bdn, int flags );
|
||||
#define LDAP_BUILD_ENTRY_PRIVATE 0x01
|
||||
#define LDAP_BUILD_ENTRY_NORMALIZE 0x02
|
||||
|
||||
static struct berval dummy = { 0, NULL };
|
||||
|
||||
int
|
||||
@ -234,7 +240,8 @@ fail:;
|
||||
Entry ent;
|
||||
struct berval bdn;
|
||||
e = ldap_first_entry(lc->ld,res);
|
||||
if ( ldap_build_entry(op, e, &ent, &bdn, 1) == LDAP_SUCCESS ) {
|
||||
if ( ldap_build_entry(op, e, &ent, &bdn,
|
||||
LDAP_BUILD_ENTRY_PRIVATE) == LDAP_SUCCESS ) {
|
||||
Attribute *a;
|
||||
rs->sr_entry = &ent;
|
||||
rs->sr_attrs = op->oq_search.rs_attrs;
|
||||
@ -379,13 +386,13 @@ finish:;
|
||||
return rc;
|
||||
}
|
||||
|
||||
int
|
||||
static int
|
||||
ldap_build_entry(
|
||||
Operation *op,
|
||||
LDAPMessage *e,
|
||||
Entry *ent,
|
||||
struct berval *bdn,
|
||||
int private
|
||||
int flags
|
||||
)
|
||||
{
|
||||
struct ldapinfo *li = (struct ldapinfo *) op->o_bd->be_private;
|
||||
@ -395,6 +402,10 @@ ldap_build_entry(
|
||||
struct berval *bv;
|
||||
const char *text;
|
||||
int last;
|
||||
int private = flags & LDAP_BUILD_ENTRY_PRIVATE;
|
||||
#ifdef SLAP_NVALUES
|
||||
int normalize = flags & LDAP_BUILD_ENTRY_NORMALIZE;
|
||||
#endif /* SLAP_NVALUES */
|
||||
|
||||
/* safe assumptions ... */
|
||||
assert( ent );
|
||||
@ -618,6 +629,7 @@ ldap_build_entry(
|
||||
next_attr:;
|
||||
|
||||
#ifdef SLAP_NVALUES
|
||||
if ( normalize ) {
|
||||
if ( last && attr->a_desc->ad_type->sat_equality &&
|
||||
attr->a_desc->ad_type->sat_equality->smr_normalize ) {
|
||||
int i;
|
||||
@ -635,6 +647,9 @@ next_attr:;
|
||||
} else {
|
||||
attr->a_nvals = attr->a_vals;
|
||||
}
|
||||
} else {
|
||||
attr->a_nvals = NULL;
|
||||
}
|
||||
#endif
|
||||
*attrp = attr;
|
||||
attrp = &attr->a_next;
|
||||
@ -753,7 +768,7 @@ ldap_back_entry_get(
|
||||
|
||||
*ent = ch_calloc(1,sizeof(Entry));
|
||||
|
||||
rc = ldap_build_entry(op, e, *ent, &bdn, 0);
|
||||
rc = ldap_build_entry(op, e, *ent, &bdn, LDAP_BUILD_ENTRY_NORMALIZE);
|
||||
|
||||
if (rc != LDAP_SUCCESS) {
|
||||
ch_free(*ent);
|
||||
|
Loading…
Reference in New Issue
Block a user