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
Tero Saarni
OpenLDAP
Commits
f32c8b4d
Commit
f32c8b4d
authored
Feb 02, 2009
by
Quanah Gibson-Mount
Browse files
ITS#5916
parent
efc96b2d
Changes
6
Hide whitespace changes
Inline
Side-by-side
CHANGES
View file @
f32c8b4d
...
...
@@ -5,6 +5,7 @@ OpenLDAP 2.4.14 Engineering
Added libldap TLS_PROTOCOL_MIN (ITS#5655)
Added libldap GnuTLS support for TLS_CIPHER_SUITE (ITS#5887)
Added libldap GnuTLS setting random file (ITS#5462)
Added libldap alias dereferencing in C API (ITS#5916)
Fixed libldap avl to macroize constants (ITS#5909)
Fixed libldap deref handling (ITS#5768)
Fixed libldap peer cert memory leak (ITS#5849)
...
...
@@ -34,6 +35,7 @@ OpenLDAP 2.4.14 Engineering
Fixed slapd-hdb idlcache with empty suffix (ITS#5859)
Fixed slapd-ldap idassert-bind validity checking (ITS#5863)
Fixed slapd-ldap/meta RFC4525 increment support (ITS#5912)
Fixed slapd-ldap/meta search dereferencing (ITS#5916)
Fixed slapd-ldif numerous bugs (ITS#5408)
Fixed slapd-ldif rename on same DN (ITS#5319)
Fixed slapd-ldif deadlock (ITS#5329)
...
...
include/ldap_pvt.h
View file @
f32c8b4d
...
...
@@ -304,6 +304,34 @@ LDAP_F( int )
ldap_bv2escaped_filter_value_x
LDAP_P
((
struct
berval
*
in
,
struct
berval
*
out
,
int
inplace
,
void
*
ctx
));
LDAP_F
(
int
)
ldap_pvt_search
LDAP_P
((
struct
ldap
*
ld
,
LDAP_CONST
char
*
base
,
int
scope
,
LDAP_CONST
char
*
filter
,
char
**
attrs
,
int
attrsonly
,
struct
ldapcontrol
**
sctrls
,
struct
ldapcontrol
**
cctrls
,
struct
timeval
*
timeout
,
int
sizelimit
,
int
deref
,
int
*
msgidp
));
LDAP_F
(
int
)
ldap_pvt_search_s
LDAP_P
((
struct
ldap
*
ld
,
LDAP_CONST
char
*
base
,
int
scope
,
LDAP_CONST
char
*
filter
,
char
**
attrs
,
int
attrsonly
,
struct
ldapcontrol
**
sctrls
,
struct
ldapcontrol
**
cctrls
,
struct
timeval
*
timeout
,
int
sizelimit
,
int
deref
,
struct
ldapmsg
**
res
));
/* string.c */
LDAP_F
(
char
*
)
ldap_pvt_str2upper
LDAP_P
((
char
*
str
));
...
...
libraries/libldap/ldap-int.h
View file @
f32c8b4d
...
...
@@ -602,6 +602,7 @@ LDAP_F (BerElement *) ldap_build_search_req LDAP_P((
LDAPControl
**
cctrls
,
ber_int_t
timelimit
,
ber_int_t
sizelimit
,
ber_int_t
deref
,
ber_int_t
*
msgidp
));
...
...
libraries/libldap/search.c
View file @
f32c8b4d
...
...
@@ -65,6 +65,25 @@ ldap_search_ext(
struct
timeval
*
timeout
,
int
sizelimit
,
int
*
msgidp
)
{
return
ldap_pvt_search
(
ld
,
base
,
scope
,
filter
,
attrs
,
attrsonly
,
sctrls
,
cctrls
,
timeout
,
sizelimit
,
-
1
,
msgidp
);
}
int
ldap_pvt_search
(
LDAP
*
ld
,
LDAP_CONST
char
*
base
,
int
scope
,
LDAP_CONST
char
*
filter
,
char
**
attrs
,
int
attrsonly
,
LDAPControl
**
sctrls
,
LDAPControl
**
cctrls
,
struct
timeval
*
timeout
,
int
sizelimit
,
int
deref
,
int
*
msgidp
)
{
int
rc
;
BerElement
*
ber
;
...
...
@@ -98,7 +117,7 @@ ldap_search_ext(
}
ber
=
ldap_build_search_req
(
ld
,
base
,
scope
,
filter
,
attrs
,
attrsonly
,
sctrls
,
cctrls
,
timelimit
,
sizelimit
,
&
id
);
attrsonly
,
sctrls
,
cctrls
,
timelimit
,
sizelimit
,
deref
,
&
id
);
if
(
ber
==
NULL
)
{
return
ld
->
ld_errno
;
...
...
@@ -127,12 +146,31 @@ ldap_search_ext_s(
struct
timeval
*
timeout
,
int
sizelimit
,
LDAPMessage
**
res
)
{
return
ldap_pvt_search_s
(
ld
,
base
,
scope
,
filter
,
attrs
,
attrsonly
,
sctrls
,
cctrls
,
timeout
,
sizelimit
,
-
1
,
res
);
}
int
ldap_pvt_search_s
(
LDAP
*
ld
,
LDAP_CONST
char
*
base
,
int
scope
,
LDAP_CONST
char
*
filter
,
char
**
attrs
,
int
attrsonly
,
LDAPControl
**
sctrls
,
LDAPControl
**
cctrls
,
struct
timeval
*
timeout
,
int
sizelimit
,
int
deref
,
LDAPMessage
**
res
)
{
int
rc
;
int
msgid
;
rc
=
ldap_search
_ext
(
ld
,
base
,
scope
,
filter
,
attrs
,
attrsonly
,
sctrls
,
cctrls
,
timeout
,
sizelimit
,
&
msgid
);
rc
=
ldap_
pvt_
search
(
ld
,
base
,
scope
,
filter
,
attrs
,
attrsonly
,
sctrls
,
cctrls
,
timeout
,
sizelimit
,
deref
,
&
msgid
);
if
(
rc
!=
LDAP_SUCCESS
)
{
return
(
rc
);
...
...
@@ -188,7 +226,7 @@ ldap_search(
assert
(
LDAP_VALID
(
ld
)
);
ber
=
ldap_build_search_req
(
ld
,
base
,
scope
,
filter
,
attrs
,
attrsonly
,
NULL
,
NULL
,
-
1
,
-
1
,
&
id
);
attrsonly
,
NULL
,
NULL
,
-
1
,
-
1
,
-
1
,
&
id
);
if
(
ber
==
NULL
)
{
return
(
-
1
);
...
...
@@ -212,6 +250,7 @@ ldap_build_search_req(
LDAPControl
**
cctrls
,
ber_int_t
timelimit
,
ber_int_t
sizelimit
,
ber_int_t
deref
,
ber_int_t
*
idp
)
{
BerElement
*
ber
;
...
...
@@ -267,7 +306,8 @@ ldap_build_search_req(
char
*
dn
=
ld
->
ld_options
.
ldo_cldapdn
;
if
(
!
dn
)
dn
=
""
;
err
=
ber_printf
(
ber
,
"{ist{seeiib"
,
*
idp
,
dn
,
LDAP_REQ_SEARCH
,
base
,
(
ber_int_t
)
scope
,
ld
->
ld_deref
,
LDAP_REQ_SEARCH
,
base
,
(
ber_int_t
)
scope
,
(
deref
<
0
)
?
ld
->
ld_deref
:
deref
,
(
sizelimit
<
0
)
?
ld
->
ld_sizelimit
:
sizelimit
,
(
timelimit
<
0
)
?
ld
->
ld_timelimit
:
timelimit
,
attrsonly
);
...
...
servers/slapd/back-ldap/search.c
View file @
f32c8b4d
...
...
@@ -180,12 +180,6 @@ ldap_back_search(
* to map attrs and maybe rewrite value
*/
/* should we check return values? */
if
(
op
->
ors_deref
!=
-
1
)
{
ldap_set_option
(
lc
->
lc_ld
,
LDAP_OPT_DEREF
,
(
void
*
)
&
op
->
ors_deref
);
}
if
(
op
->
ors_tlimit
!=
SLAP_NO_LIMIT
)
{
tv
.
tv_sec
=
op
->
ors_tlimit
;
tv
.
tv_usec
=
0
;
...
...
@@ -221,11 +215,11 @@ ldap_back_search(
/* deal with <draft-zeilenga-ldap-t-f> filters */
filter
=
op
->
ors_filterstr
;
retry:
rs
->
sr_err
=
ldap_search
_ext
(
lc
->
lc_ld
,
op
->
o_req_dn
.
bv_val
,
rs
->
sr_err
=
ldap_
pvt_
search
(
lc
->
lc_ld
,
op
->
o_req_dn
.
bv_val
,
op
->
ors_scope
,
filter
.
bv_val
,
attrs
,
op
->
ors_attrsonly
,
ctrls
,
NULL
,
tv
.
tv_sec
?
&
tv
:
NULL
,
op
->
ors_slimit
,
&
msgid
);
op
->
ors_slimit
,
op
->
ors_deref
,
&
msgid
);
if
(
rs
->
sr_err
!=
LDAP_SUCCESS
)
{
switch
(
rs
->
sr_err
)
{
...
...
@@ -853,9 +847,9 @@ retry:
}
/* TODO: timeout? */
rc
=
ldap_search_
ext_
s
(
lc
->
lc_ld
,
ndn
->
bv_val
,
LDAP_SCOPE_BASE
,
filter
,
rc
=
ldap_
pvt_
search_s
(
lc
->
lc_ld
,
ndn
->
bv_val
,
LDAP_SCOPE_BASE
,
filter
,
attrp
,
0
,
ctrls
,
NULL
,
NULL
,
LDAP_NO_LIMIT
,
&
result
);
NULL
,
LDAP_NO_LIMIT
,
op
->
ors_deref
,
&
result
);
if
(
rc
!=
LDAP_SUCCESS
)
{
if
(
rc
==
LDAP_SERVER_DOWN
&&
do_retry
)
{
do_retry
=
0
;
...
...
servers/slapd/back-meta/search.c
View file @
f32c8b4d
...
...
@@ -590,13 +590,6 @@ meta_back_search_start(
}
retry:
;
/* should we check return values? */
if
(
op
->
ors_deref
!=
-
1
)
{
assert
(
msc
->
msc_ld
!=
NULL
);
(
void
)
ldap_set_option
(
msc
->
msc_ld
,
LDAP_OPT_DEREF
,
(
void
*
)
&
op
->
ors_deref
);
}
ctrls
=
op
->
o_ctrls
;
if
(
meta_back_controls_add
(
op
,
rs
,
*
mcp
,
candidate
,
&
ctrls
)
!=
LDAP_SUCCESS
)
...
...
@@ -610,10 +603,10 @@ retry:;
* Starts the search
*/
assert
(
msc
->
msc_ld
!=
NULL
);
rc
=
ldap_search
_ext
(
msc
->
msc_ld
,
rc
=
ldap_
pvt_
search
(
msc
->
msc_ld
,
mbase
.
bv_val
,
realscope
,
mfilter
.
bv_val
,
mapped_attrs
,
op
->
ors_attrsonly
,
ctrls
,
NULL
,
tvp
,
op
->
ors_slimit
,
ctrls
,
NULL
,
tvp
,
op
->
ors_slimit
,
op
->
ors_deref
,
&
candidates
[
candidate
].
sr_msgid
);
switch
(
rc
)
{
case
LDAP_SUCCESS
:
...
...
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