mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-12-29 19:19:35 -05:00
more on fixing escaped semicolon in normalized DN
This commit is contained in:
parent
80449c42d9
commit
b34cf02488
8 changed files with 24 additions and 18 deletions
|
|
@ -551,7 +551,7 @@ acl_get(
|
|||
continue;
|
||||
|
||||
if ( patlen > 0 ) {
|
||||
if ( !DN_SEPARATOR( e->e_ndn[dnlen - patlen - 1] ) )
|
||||
if ( !NDN_SEPARATOR( e->e_ndn[dnlen - patlen - 1] ) )
|
||||
continue;
|
||||
sep = 1;
|
||||
}
|
||||
|
|
@ -561,13 +561,13 @@ acl_get(
|
|||
continue;
|
||||
|
||||
} else if ( a->acl_dn_style == ACL_STYLE_SUBTREE ) {
|
||||
if ( dnlen > patlen && !DN_SEPARATOR( e->e_ndn[dnlen - patlen - 1] ) )
|
||||
if ( dnlen > patlen && !NDN_SEPARATOR( e->e_ndn[dnlen - patlen - 1] ) )
|
||||
continue;
|
||||
|
||||
} else if ( a->acl_dn_style == ACL_STYLE_CHILDREN ) {
|
||||
if ( dnlen <= patlen )
|
||||
continue;
|
||||
if ( !DN_SEPARATOR( e->e_ndn[dnlen - patlen - 1] ) )
|
||||
if ( !NDN_SEPARATOR( e->e_ndn[dnlen - patlen - 1] ) )
|
||||
continue;
|
||||
}
|
||||
|
||||
|
|
@ -652,7 +652,7 @@ acl_get(
|
|||
} else if ( a->acl_dn_style == ACL_STYLE_ONE ) {
|
||||
int rdnlen = -1;
|
||||
|
||||
if ( !DN_SEPARATOR( val->bv_val[vdnlen - patlen - 1] ) )
|
||||
if ( !NDN_SEPARATOR( val->bv_val[vdnlen - patlen - 1] ) )
|
||||
continue;
|
||||
|
||||
rdnlen = dn_rdnlen( NULL, val );
|
||||
|
|
@ -660,14 +660,14 @@ acl_get(
|
|||
continue;
|
||||
|
||||
} else if ( a->acl_dn_style == ACL_STYLE_SUBTREE ) {
|
||||
if ( vdnlen > patlen && !DN_SEPARATOR( val->bv_val[vdnlen - patlen - 1] ) )
|
||||
if ( vdnlen > patlen && !NDN_SEPARATOR( val->bv_val[vdnlen - patlen - 1] ) )
|
||||
continue;
|
||||
|
||||
} else if ( a->acl_dn_style == ACL_STYLE_CHILDREN ) {
|
||||
if ( vdnlen <= patlen )
|
||||
continue;
|
||||
|
||||
if ( !DN_SEPARATOR( val->bv_val[vdnlen - patlen - 1] ) )
|
||||
if ( !NDN_SEPARATOR( val->bv_val[vdnlen - patlen - 1] ) )
|
||||
continue;
|
||||
}
|
||||
|
||||
|
|
@ -880,7 +880,7 @@ acl_mask(
|
|||
goto dn_match_cleanup;
|
||||
}
|
||||
|
||||
if ( !DN_SEPARATOR( op->o_ndn.bv_val[odnlen - patlen - 1] ) ) {
|
||||
if ( !NDN_SEPARATOR( op->o_ndn.bv_val[odnlen - patlen - 1] ) ) {
|
||||
goto dn_match_cleanup;
|
||||
}
|
||||
|
||||
|
|
@ -890,7 +890,7 @@ acl_mask(
|
|||
}
|
||||
|
||||
} else if ( b->a_dn_style == ACL_STYLE_SUBTREE ) {
|
||||
if ( odnlen > patlen && !DN_SEPARATOR( op->o_ndn.bv_val[odnlen - patlen - 1] ) ) {
|
||||
if ( odnlen > patlen && !NDN_SEPARATOR( op->o_ndn.bv_val[odnlen - patlen - 1] ) ) {
|
||||
goto dn_match_cleanup;
|
||||
}
|
||||
|
||||
|
|
@ -899,7 +899,7 @@ acl_mask(
|
|||
goto dn_match_cleanup;
|
||||
}
|
||||
|
||||
if ( !DN_SEPARATOR( op->o_ndn.bv_val[odnlen - patlen - 1] ) ) {
|
||||
if ( !NDN_SEPARATOR( op->o_ndn.bv_val[odnlen - patlen - 1] ) ) {
|
||||
goto dn_match_cleanup;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -196,7 +196,7 @@ check_scope( BackendDB *be, AccessControl *a )
|
|||
int rdnlen = -1, sep = 0;
|
||||
|
||||
if ( patlen > 0 ) {
|
||||
if ( !DN_SEPARATOR( dn.bv_val[ dn.bv_len - patlen - 1 ] ) )
|
||||
if ( !NDN_SEPARATOR( dn.bv_val[ dn.bv_len - patlen - 1 ] ) )
|
||||
return ACL_SCOPE_ERR;
|
||||
sep = 1;
|
||||
}
|
||||
|
|
@ -227,7 +227,7 @@ check_scope( BackendDB *be, AccessControl *a )
|
|||
break;
|
||||
}
|
||||
|
||||
if ( dn.bv_len < patlen && !DN_SEPARATOR( a->acl_dn_pat.bv_val[ patlen -dn.bv_len - 1 ] ) ) {
|
||||
if ( dn.bv_len < patlen && !NDN_SEPARATOR( a->acl_dn_pat.bv_val[ patlen -dn.bv_len - 1 ] ) ) {
|
||||
return ACL_SCOPE_ERR;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -134,7 +134,10 @@ ldap_back_dn_massage(
|
|||
if ( diff < 0 ) {
|
||||
/* alias is longer than dn */
|
||||
continue;
|
||||
} else if ( diff > 0 && ( !DN_SEPARATOR(dn->bv_val[diff-1]))) {
|
||||
} else if ( diff > 0 && ( !NDN_SEPARATOR(dn->bv_val[diff-1]))) {
|
||||
/* FIXME: should use DN_SEPARATOR() instead of
|
||||
* NDN_SEPARATOR(), but the latter may fail if
|
||||
* an escaped ';' is present */
|
||||
/* boundary is not at a DN separator */
|
||||
continue;
|
||||
/* At a DN Separator */
|
||||
|
|
|
|||
|
|
@ -749,7 +749,7 @@ is_one_level_rdn(
|
|||
)
|
||||
{
|
||||
for ( ; from--; ) {
|
||||
if ( DN_SEPARATOR( rdn[ from ] ) ) {
|
||||
if ( NDN_SEPARATOR( rdn[ from ] ) ) {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -670,7 +670,7 @@ select_backend(
|
|||
* need not look at escaping
|
||||
*/
|
||||
if ( len && len < dnlen &&
|
||||
!DN_SEPARATOR( dn->bv_val[(dnlen-len)-1] ))
|
||||
!NDN_SEPARATOR( dn->bv_val[(dnlen-len)-1] ))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -690,7 +690,7 @@ dnParent(
|
|||
return;
|
||||
}
|
||||
|
||||
assert( DN_SEPARATOR( p[ 0 ] ) );
|
||||
assert( NDN_SEPARATOR( p[ 0 ] ) );
|
||||
p++;
|
||||
|
||||
assert( ATTR_LEADCHAR( p[ 0 ] ) );
|
||||
|
|
@ -882,7 +882,7 @@ dnIsSuffix(
|
|||
}
|
||||
|
||||
/* no rdn separator or escaped rdn separator */
|
||||
if ( d > 1 && !DN_SEPARATOR( dn->bv_val[ d - 1 ] ) ) {
|
||||
if ( d > 1 && !NDN_SEPARATOR( dn->bv_val[ d - 1 ] ) ) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -163,7 +163,7 @@ limits_get(
|
|||
}
|
||||
} else {
|
||||
/* check for unescaped rdn separator */
|
||||
if ( !DN_SEPARATOR( ndn->bv_val[d-1] ) ) {
|
||||
if ( !NDN_SEPARATOR( ndn->bv_val[d-1] ) ) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -138,7 +138,10 @@ rwm_dn_massage(
|
|||
if ( diff < 0 ) {
|
||||
/* alias is longer than dn */
|
||||
continue;
|
||||
} else if ( diff > 0 && ( !DN_SEPARATOR(dn->bv_val[diff-1]))) {
|
||||
} else if ( diff > 0 && ( !NDN_SEPARATOR(dn->bv_val[diff-1]))) {
|
||||
/* FIXME: should use DN_SEPARATOR() instead of
|
||||
* NDN_SEPARATOR(), but the latter may fail if
|
||||
* an escaped ';' is present */
|
||||
/* boundary is not at a DN separator */
|
||||
continue;
|
||||
/* At a DN Separator */
|
||||
|
|
|
|||
Loading…
Reference in a new issue