mirror of
https://git.openldap.org/openldap/openldap.git
synced 2024-12-21 03:10:25 +08:00
allow LDAPv2 DN to be enclosed in <>
This commit is contained in:
parent
891fef5c5b
commit
7969841074
@ -713,7 +713,7 @@ ldap_bv2dn( struct berval *bv, LDAPDN *dn, unsigned flags )
|
||||
}
|
||||
|
||||
int
|
||||
ldap_bv2dn_x( struct berval *bv, LDAPDN *dn, unsigned flags, void *ctx )
|
||||
ldap_bv2dn_x( struct berval *bvin, LDAPDN *dn, unsigned flags, void *ctx )
|
||||
{
|
||||
const char *p;
|
||||
int rc = LDAP_DECODING_ERROR;
|
||||
@ -722,13 +722,17 @@ ldap_bv2dn_x( struct berval *bv, LDAPDN *dn, unsigned flags, void *ctx )
|
||||
LDAPDN newDN = NULL;
|
||||
LDAPRDN newRDN = NULL, tmpDN_[TMP_RDN_SLOTS], *tmpDN = tmpDN_;
|
||||
int num_slots = TMP_RDN_SLOTS;
|
||||
char *str = bv->bv_val;
|
||||
char *end = str + bv->bv_len;
|
||||
char *str, *end;
|
||||
struct berval bvtmp, *bv = &bvtmp;
|
||||
|
||||
assert( bv );
|
||||
assert( bv->bv_val );
|
||||
assert( bvin );
|
||||
assert( bvin->bv_val );
|
||||
assert( dn );
|
||||
|
||||
*bv = *bvin;
|
||||
str = bv->bv_val;
|
||||
end = str + bv->bv_len;
|
||||
|
||||
#ifdef NEW_LOGGING
|
||||
LDAP_LOG ( OPERATION, ARGS, "ldap_bv2dn(%s,%u)\n%s", str, flags, "" );
|
||||
#else
|
||||
@ -740,10 +744,23 @@ ldap_bv2dn_x( struct berval *bv, LDAPDN *dn, unsigned flags, void *ctx )
|
||||
switch ( LDAP_DN_FORMAT( flags ) ) {
|
||||
case LDAP_DN_FORMAT_LDAP:
|
||||
case LDAP_DN_FORMAT_LDAPV3:
|
||||
case LDAP_DN_FORMAT_LDAPV2:
|
||||
case LDAP_DN_FORMAT_DCE:
|
||||
break;
|
||||
|
||||
/* allow DN enclosed in brackets */
|
||||
case LDAP_DN_FORMAT_LDAPV2:
|
||||
if ( str[0] == '<' ) {
|
||||
if ( bv->bv_len < 2 || end[ -1 ] != '>' ) {
|
||||
rc = LDAP_DECODING_ERROR;
|
||||
goto parsing_error;
|
||||
}
|
||||
bv->bv_val++;
|
||||
bv->bv_len -= 2;
|
||||
str++;
|
||||
end--;
|
||||
}
|
||||
break;
|
||||
|
||||
/* unsupported in str2dn */
|
||||
case LDAP_DN_FORMAT_UFN:
|
||||
case LDAP_DN_FORMAT_AD_CANONICAL:
|
||||
|
Loading…
Reference in New Issue
Block a user