Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
David Barchiesi
OpenLDAP
Commits
9401bd38
Commit
9401bd38
authored
Oct 26, 2008
by
Pierangelo Masarati
Browse files
normalize rewritten DN-valued attrs (ITS#5772)
parent
f29d1b14
Changes
3
Hide whitespace changes
Inline
Side-by-side
servers/slapd/overlays/rwm.c
View file @
9401bd38
...
...
@@ -1225,7 +1225,7 @@ remove_oc:;
||
(
mapping
!=
NULL
&&
mapping
->
m_src_ad
->
ad_type
->
sat_syntax
==
slap_schema
.
si_syn_distinguishedName
)
)
{
dc
.
ctx
=
"searchAttrDN"
;
rc
=
rwm_dnattr_result_rewrite
(
&
dc
,
(
*
ap
)
->
a_vals
);
rc
=
rwm_dnattr_result_rewrite
(
&
dc
,
(
*
ap
)
->
a_vals
,
(
*
ap
)
->
a_nvals
);
if
(
rc
!=
LDAP_SUCCESS
)
{
goto
cleanup_attr
;
}
...
...
servers/slapd/overlays/rwm.h
View file @
9401bd38
...
...
@@ -175,7 +175,7 @@ rwm_referral_rewrite(
void
*
cookie
,
BerVarray
a_vals
,
BerVarray
*
pa_nvals
);
extern
int
rwm_dnattr_result_rewrite
(
dncookie
*
dc
,
BerVarray
a_vals
);
extern
int
rwm_dnattr_result_rewrite
(
dncookie
*
dc
,
BerVarray
a_vals
,
BerVarray
a_nvals
);
extern
int
rwm_referral_result_rewrite
(
dncookie
*
dc
,
BerVarray
a_vals
);
LDAP_END_DECL
...
...
servers/slapd/overlays/rwmmap.c
View file @
9401bd38
...
...
@@ -1178,7 +1178,8 @@ rwm_referral_result_rewrite(
int
rwm_dnattr_result_rewrite
(
dncookie
*
dc
,
BerVarray
a_vals
)
BerVarray
a_vals
,
BerVarray
a_nvals
)
{
int
i
,
last
;
...
...
@@ -1186,11 +1187,11 @@ rwm_dnattr_result_rewrite(
last
--
;
for
(
i
=
0
;
!
BER_BVISNULL
(
&
a_vals
[
i
]
);
i
++
)
{
struct
berval
dn
;
struct
berval
pdn
,
n
dn
;
int
rc
;
dn
=
a_vals
[
i
];
rc
=
rwm_dn_massage_pretty
(
dc
,
&
a_vals
[
i
],
&
dn
);
p
dn
=
a_vals
[
i
];
rc
=
rwm_dn_massage_pretty
_normalize
(
dc
,
&
a_vals
[
i
],
&
pdn
,
&
n
dn
);
switch
(
rc
)
{
case
LDAP_UNWILLING_TO_PERFORM
:
/*
...
...
@@ -1198,19 +1199,27 @@ rwm_dnattr_result_rewrite(
* legal to trim values when adding/modifying;
* it should be when searching (e.g. ACLs).
*/
assert
(
a_vals
[
i
].
bv_val
!=
a_nvals
[
i
].
bv_val
);
ch_free
(
a_vals
[
i
].
bv_val
);
ch_free
(
a_nvals
[
i
].
bv_val
);
if
(
last
>
i
)
{
a_vals
[
i
]
=
a_vals
[
last
];
a_nvals
[
i
]
=
a_nvals
[
last
];
}
BER_BVZERO
(
&
a_vals
[
last
]
);
BER_BVZERO
(
&
a_nvals
[
last
]
);
last
--
;
break
;
default:
/* leave attr untouched if massage failed */
if
(
!
BER_BVISNULL
(
&
dn
)
&&
a_vals
[
i
].
bv_val
!=
dn
.
bv_val
)
{
if
(
!
BER_BVISNULL
(
&
p
dn
)
&&
a_vals
[
i
].
bv_val
!=
p
dn
.
bv_val
)
{
ch_free
(
a_vals
[
i
].
bv_val
);
a_vals
[
i
]
=
dn
;
a_vals
[
i
]
=
pdn
;
}
if
(
!
BER_BVISNULL
(
&
ndn
)
&&
a_nvals
[
i
].
bv_val
!=
ndn
.
bv_val
)
{
ch_free
(
a_nvals
[
i
].
bv_val
);
a_nvals
[
i
]
=
ndn
;
}
break
;
}
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new 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