Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
Joe Martin
OpenLDAP
Commits
85621c88
Commit
85621c88
authored
Dec 08, 2009
by
Pierangelo Masarati
Browse files
guard against simultaneous REP_ENTRY_MUSTRELEASE and REP_ENTRY_MODIFIABLE (related to ITS
#6423
)
parent
48b8970d
Changes
2
Hide whitespace changes
Inline
Side-by-side
servers/slapd/overlays/collect.c
View file @
85621c88
...
...
@@ -386,10 +386,18 @@ collect_response( Operation *op, SlapReply *rs )
* don't modify it directly. Make a copy and
* work with that instead.
*/
if
(
!
(
rs
->
sr_flags
&
REP_ENTRY_MODIFIABLE
))
{
rs
->
sr_entry
=
entry_dup
(
rs
->
sr_entry
);
rs
->
sr_flags
|=
REP_ENTRY_MODIFIABLE
|
REP_ENTRY_MUSTBEFREED
;
if
(
!
(
rs
->
sr_flags
&
REP_ENTRY_MODIFIABLE
)
)
{
Entry
*
e
;
e
=
entry_dup
(
rs
->
sr_entry
);
if
(
rs
->
sr_flags
&
REP_ENTRY_MUSTRELEASE
)
{
overlay_entry_release_ov
(
op
,
rs
->
sr_entry
,
0
,
on
);
rs
->
sr_flags
&=
~
REP_ENTRY_MUSTRELEASE
;
}
else
if
(
rs
->
sr_flags
&
REP_ENTRY_MUSTBEFREED
)
{
entry_free
(
rs
->
sr_entry
);
}
rs
->
sr_entry
=
e
;
rs
->
sr_flags
|=
REP_ENTRY_MODIFIABLE
|
REP_ENTRY_MUSTBEFREED
;
}
/* Loop for each attribute in this collectinfo */
...
...
servers/slapd/overlays/valsort.c
View file @
85621c88
...
...
@@ -297,9 +297,19 @@ valsort_response( Operation *op, SlapReply *rs )
a
=
attr_find
(
rs
->
sr_entry
->
e_attrs
,
vi
->
vi_ad
);
if
(
!
a
)
continue
;
if
((
rs
->
sr_flags
&
(
REP_ENTRY_MODIFIABLE
|
REP_ENTRY_MUSTBEFREED
))
!=
(
REP_ENTRY_MODIFIABLE
|
REP_ENTRY_MUSTBEFREED
))
{
rs
->
sr_entry
=
entry_dup
(
rs
->
sr_entry
);
if
((
rs
->
sr_flags
&
(
REP_ENTRY_MODIFIABLE
|
REP_ENTRY_MUSTBEFREED
)
)
!=
(
REP_ENTRY_MODIFIABLE
|
REP_ENTRY_MUSTBEFREED
)
)
{
Entry
*
e
;
e
=
entry_dup
(
rs
->
sr_entry
);
if
(
rs
->
sr_flags
&
REP_ENTRY_MUSTRELEASE
)
{
overlay_entry_release_ov
(
op
,
rs
->
sr_entry
,
0
,
on
);
rs
->
sr_flags
&=
~
REP_ENTRY_MUSTRELEASE
;
}
else
if
(
rs
->
sr_flags
&
REP_ENTRY_MUSTBEFREED
)
{
entry_free
(
rs
->
sr_entry
);
}
rs
->
sr_entry
=
e
;
rs
->
sr_flags
|=
REP_ENTRY_MODIFIABLE
|
REP_ENTRY_MUSTBEFREED
;
a
=
attr_find
(
rs
->
sr_entry
->
e_attrs
,
vi
->
vi_ad
);
}
...
...
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