Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
openldap
OpenLDAP
Commits
d40e5a36
Commit
d40e5a36
authored
May 07, 2004
by
Pierangelo Masarati
Browse files
fix DN_SEPARATOR() and clarify its use
parent
b34cf024
Changes
10
Hide whitespace changes
Inline
Side-by-side
servers/slapd/acl.c
View file @
d40e5a36
...
...
@@ -551,7 +551,7 @@ acl_get(
continue
;
if
(
patlen
>
0
)
{
if
(
!
N
DN_SEPARATOR
(
e
->
e_ndn
[
dnlen
-
patlen
-
1
]
)
)
if
(
!
DN_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
&&
!
N
DN_SEPARATOR
(
e
->
e_ndn
[
dnlen
-
patlen
-
1
]
)
)
if
(
dnlen
>
patlen
&&
!
DN_SEPARATOR
(
e
->
e_ndn
[
dnlen
-
patlen
-
1
]
)
)
continue
;
}
else
if
(
a
->
acl_dn_style
==
ACL_STYLE_CHILDREN
)
{
if
(
dnlen
<=
patlen
)
continue
;
if
(
!
N
DN_SEPARATOR
(
e
->
e_ndn
[
dnlen
-
patlen
-
1
]
)
)
if
(
!
DN_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
(
!
N
DN_SEPARATOR
(
val
->
bv_val
[
vdnlen
-
patlen
-
1
]
)
)
if
(
!
DN_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
&&
!
N
DN_SEPARATOR
(
val
->
bv_val
[
vdnlen
-
patlen
-
1
]
)
)
if
(
vdnlen
>
patlen
&&
!
DN_SEPARATOR
(
val
->
bv_val
[
vdnlen
-
patlen
-
1
]
)
)
continue
;
}
else
if
(
a
->
acl_dn_style
==
ACL_STYLE_CHILDREN
)
{
if
(
vdnlen
<=
patlen
)
continue
;
if
(
!
N
DN_SEPARATOR
(
val
->
bv_val
[
vdnlen
-
patlen
-
1
]
)
)
if
(
!
DN_SEPARATOR
(
val
->
bv_val
[
vdnlen
-
patlen
-
1
]
)
)
continue
;
}
...
...
@@ -880,7 +880,7 @@ acl_mask(
goto
dn_match_cleanup
;
}
if
(
!
N
DN_SEPARATOR
(
op
->
o_ndn
.
bv_val
[
odnlen
-
patlen
-
1
]
)
)
{
if
(
!
DN_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
&&
!
N
DN_SEPARATOR
(
op
->
o_ndn
.
bv_val
[
odnlen
-
patlen
-
1
]
)
)
{
if
(
odnlen
>
patlen
&&
!
DN_SEPARATOR
(
op
->
o_ndn
.
bv_val
[
odnlen
-
patlen
-
1
]
)
)
{
goto
dn_match_cleanup
;
}
...
...
@@ -899,7 +899,7 @@ acl_mask(
goto
dn_match_cleanup
;
}
if
(
!
N
DN_SEPARATOR
(
op
->
o_ndn
.
bv_val
[
odnlen
-
patlen
-
1
]
)
)
{
if
(
!
DN_SEPARATOR
(
op
->
o_ndn
.
bv_val
[
odnlen
-
patlen
-
1
]
)
)
{
goto
dn_match_cleanup
;
}
}
...
...
servers/slapd/aclparse.c
View file @
d40e5a36
...
...
@@ -196,7 +196,7 @@ check_scope( BackendDB *be, AccessControl *a )
int
rdnlen
=
-
1
,
sep
=
0
;
if
(
patlen
>
0
)
{
if
(
!
N
DN_SEPARATOR
(
dn
.
bv_val
[
dn
.
bv_len
-
patlen
-
1
]
)
)
if
(
!
DN_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
&&
!
N
DN_SEPARATOR
(
a
->
acl_dn_pat
.
bv_val
[
patlen
-
dn
.
bv_len
-
1
]
)
)
{
if
(
dn
.
bv_len
<
patlen
&&
!
DN_SEPARATOR
(
a
->
acl_dn_pat
.
bv_val
[
patlen
-
dn
.
bv_len
-
1
]
)
)
{
return
ACL_SCOPE_ERR
;
}
...
...
servers/slapd/back-bdb/cache.c
View file @
d40e5a36
...
...
@@ -336,9 +336,9 @@ bdb_cache_find_ndn(
/* Advance to next lower RDN */
for
(
ptr
=
ei
.
bei_nrdn
.
bv_val
-
2
;
ptr
>
ndn
->
bv_val
&&
!
N
DN_SEPARATOR
(
*
ptr
);
ptr
--
)
/* empty */
;
&&
!
DN_SEPARATOR
(
*
ptr
);
ptr
--
)
/* empty */
;
if
(
ptr
>=
ndn
->
bv_val
)
{
if
(
N
DN_SEPARATOR
(
*
ptr
))
ptr
++
;
if
(
DN_SEPARATOR
(
*
ptr
))
ptr
++
;
ei
.
bei_nrdn
.
bv_len
=
ei
.
bei_nrdn
.
bv_val
-
ptr
-
1
;
ei
.
bei_nrdn
.
bv_val
=
ptr
;
}
...
...
servers/slapd/back-ldap/suffixmassage.c
View file @
d40e5a36
...
...
@@ -134,11 +134,10 @@ ldap_back_dn_massage(
if
(
diff
<
0
)
{
/* alias is longer than dn */
continue
;
}
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 */
}
else
if
(
diff
>
0
&&
(
!
DN_SEPARATOR
(
dn
->
bv_val
[
diff
-
1
])))
{
/* FIXME: DN_SEPARATOR() is intended to work
* on a normalized/pretty DN, so that ';'
* is never used as a DN separator */
continue
;
/* At a DN Separator */
}
...
...
servers/slapd/back-meta/search.c
View file @
d40e5a36
...
...
@@ -749,7 +749,7 @@ is_one_level_rdn(
)
{
for
(
;
from
--
;
)
{
if
(
N
DN_SEPARATOR
(
rdn
[
from
]
)
)
{
if
(
DN_SEPARATOR
(
rdn
[
from
]
)
)
{
return
0
;
}
}
...
...
servers/slapd/backend.c
View file @
d40e5a36
...
...
@@ -670,7 +670,7 @@ select_backend(
* need not look at escaping
*/
if
(
len
&&
len
<
dnlen
&&
!
N
DN_SEPARATOR
(
dn
->
bv_val
[(
dnlen
-
len
)
-
1
]
))
!
DN_SEPARATOR
(
dn
->
bv_val
[(
dnlen
-
len
)
-
1
]
))
{
continue
;
}
...
...
servers/slapd/dn.c
View file @
d40e5a36
...
...
@@ -690,7 +690,7 @@ dnParent(
return
;
}
assert
(
N
DN_SEPARATOR
(
p
[
0
]
)
);
assert
(
DN_SEPARATOR
(
p
[
0
]
)
);
p
++
;
assert
(
ATTR_LEADCHAR
(
p
[
0
]
)
);
...
...
@@ -882,7 +882,7 @@ dnIsSuffix(
}
/* no rdn separator or escaped rdn separator */
if
(
d
>
1
&&
!
N
DN_SEPARATOR
(
dn
->
bv_val
[
d
-
1
]
)
)
{
if
(
d
>
1
&&
!
DN_SEPARATOR
(
dn
->
bv_val
[
d
-
1
]
)
)
{
return
0
;
}
...
...
servers/slapd/limits.c
View file @
d40e5a36
...
...
@@ -163,7 +163,7 @@ limits_get(
}
}
else
{
/* check for unescaped rdn separator */
if
(
!
N
DN_SEPARATOR
(
ndn
->
bv_val
[
d
-
1
]
)
)
{
if
(
!
DN_SEPARATOR
(
ndn
->
bv_val
[
d
-
1
]
)
)
{
break
;
}
}
...
...
servers/slapd/overlays/rwmdn.c
View file @
d40e5a36
...
...
@@ -138,11 +138,10 @@ rwm_dn_massage(
if
(
diff
<
0
)
{
/* alias is longer than dn */
continue
;
}
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 */
}
else
if
(
diff
>
0
&&
(
!
DN_SEPARATOR
(
dn
->
bv_val
[
diff
-
1
])))
{
/* FIXME: DN_SEPARATOR() is intended to work
* on a normalized/pretty DN, so that ';'
* is never used as a DN separator */
continue
;
/* At a DN Separator */
}
...
...
servers/slapd/slap.h
View file @
d40e5a36
...
...
@@ -133,8 +133,10 @@ LDAP_BEGIN_DECL
|| (c) == '(' || (c) == ')' || !ASCII_PRINTABLE(c) )
#define DN_ESCAPE(c) ((c) == SLAP_ESCAPE_CHAR)
#define NDN_SEPARATOR(c) ((c) == ',')
#define DN_SEPARATOR(c) (NDN_SEPARATOR(c) || (c) == ';')
/* NOTE: for consistency, this macro must only operate
* on normalized/pretty DN, such that ';' is never used
* as RDN separator, and all occurrences of ';' must be escaped */
#define DN_SEPARATOR(c) ((c) == ',')
#define RDN_ATTRTYPEANDVALUE_SEPARATOR(c) ((c) == '+')
/* RFC 2253 */
#define RDN_SEPARATOR(c) (DN_SEPARATOR(c) || RDN_ATTRTYPEANDVALUE_SEPARATOR(c))
#define RDN_NEEDSESCAPE(c) ((c) == '\\' || (c) == '"')
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment