Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
openldap
OpenLDAP
Commits
98dc97bc
Commit
98dc97bc
authored
Sep 11, 2004
by
Jong Hyuk Choi
Browse files
memory leak fixes
parent
441ff00a
Changes
13
Hide whitespace changes
Inline
Side-by-side
servers/slapd/add.c
View file @
98dc97bc
...
...
@@ -271,7 +271,7 @@ fe_op_add( Operation *op, SlapReply *rs )
assert
(
(
*
modtail
)
->
sml_desc
!=
NULL
);
}
rs
->
sr_err
=
slap_mods_opattrs
(
op
,
modlist
,
modtail
,
&
rs
->
sr_text
,
textbuf
,
textlen
);
&
rs
->
sr_text
,
textbuf
,
textlen
,
1
);
if
(
rs
->
sr_err
!=
LDAP_SUCCESS
)
{
send_ldap_result
(
op
,
rs
);
goto
done
;
...
...
servers/slapd/backend.c
View file @
98dc97bc
...
...
@@ -469,11 +469,19 @@ int backend_destroy(void)
{
int
i
;
BackendDB
*
bd
;
syncinfo_t
*
si_entry
;
ldap_pvt_thread_pool_destroy
(
&
syncrepl_pool
,
1
);
/* destroy each backend database */
for
(
i
=
0
,
bd
=
backendDB
;
i
<
nBackendDB
;
i
++
,
bd
++
)
{
while
(
!
LDAP_STAILQ_EMPTY
(
&
bd
->
be_syncinfo
))
{
si_entry
=
LDAP_STAILQ_FIRST
(
&
bd
->
be_syncinfo
);
LDAP_STAILQ_REMOVE_HEAD
(
&
bd
->
be_syncinfo
,
si_next
);
syncinfo_free
(
si_entry
);
}
if
(
bd
->
bd_info
->
bi_db_destroy
)
{
bd
->
bd_info
->
bi_db_destroy
(
bd
);
}
...
...
servers/slapd/config.c
View file @
98dc97bc
...
...
@@ -2272,7 +2272,7 @@ add_syncrepl(
}
si
->
si_bindmethod
=
LDAP_AUTH_SIMPLE
;
si
->
si_schemachecking
=
0
;
ber_str2bv
(
"(objectclass=*)"
,
STRLENOF
(
"(objectclass=*)"
),
0
,
ber_str2bv
(
"(objectclass=*)"
,
STRLENOF
(
"(objectclass=*)"
),
1
,
&
si
->
si_filterstr
);
si
->
si_base
.
bv_val
=
NULL
;
si
->
si_scope
=
LDAP_SCOPE_SUBTREE
;
...
...
@@ -2283,9 +2283,9 @@ add_syncrepl(
si
->
si_exattrs
[
0
]
=
NULL
;
si
->
si_type
=
LDAP_SYNC_REFRESH_ONLY
;
si
->
si_interval
=
86400
;
si
->
si_retryinterval
=
0
;
si
->
si_retrynum_init
=
0
;
si
->
si_retrynum
=
0
;
si
->
si_retryinterval
=
NULL
;
si
->
si_retrynum_init
=
NULL
;
si
->
si_retrynum
=
NULL
;
si
->
si_syncCookie
.
ctxcsn
=
NULL
;
si
->
si_syncCookie
.
octet_str
=
NULL
;
si
->
si_syncCookie
.
sid
=
-
1
;
...
...
@@ -2310,42 +2310,7 @@ add_syncrepl(
}
if
(
rc
<
0
||
duplicated_replica_id
)
{
syncinfo_t
*
si_entry
;
/* Something bad happened - back out */
Debug
(
LDAP_DEBUG_ANY
,
"failed to add syncinfo
\n
"
,
0
,
0
,
0
);
/* If error, remove all syncinfo */
LDAP_STAILQ_FOREACH
(
si_entry
,
&
be
->
be_syncinfo
,
si_next
)
{
if
(
si_entry
->
si_updatedn
.
bv_val
)
{
ch_free
(
si
->
si_updatedn
.
bv_val
);
}
if
(
si_entry
->
si_filterstr
.
bv_val
)
{
ch_free
(
si
->
si_filterstr
.
bv_val
);
}
if
(
si_entry
->
si_attrs
)
{
int
i
=
0
;
while
(
si_entry
->
si_attrs
[
i
]
!=
NULL
)
{
ch_free
(
si_entry
->
si_attrs
[
i
]
);
i
++
;
}
ch_free
(
si_entry
->
si_attrs
);
}
if
(
si_entry
->
si_exattrs
)
{
int
i
=
0
;
while
(
si_entry
->
si_exattrs
[
i
]
!=
NULL
)
{
ch_free
(
si_entry
->
si_exattrs
[
i
]
);
i
++
;
}
ch_free
(
si_entry
->
si_exattrs
);
}
}
while
(
!
LDAP_STAILQ_EMPTY
(
&
be
->
be_syncinfo
))
{
si_entry
=
LDAP_STAILQ_FIRST
(
&
be
->
be_syncinfo
);
LDAP_STAILQ_REMOVE_HEAD
(
&
be
->
be_syncinfo
,
si_next
);
ch_free
(
si_entry
);
}
LDAP_STAILQ_INIT
(
&
be
->
be_syncinfo
);
return
1
;
}
else
{
Debug
(
LDAP_DEBUG_CONFIG
,
...
...
@@ -2435,7 +2400,7 @@ parse_syncrepl_line(
si
->
si_provideruri_bv
=
(
BerVarray
)
ch_calloc
(
2
,
sizeof
(
struct
berval
));
ber_str2bv
(
si
->
si_provideruri
,
strlen
(
si
->
si_provideruri
),
0
,
&
si
->
si_provideruri_bv
[
0
]
);
1
,
&
si
->
si_provideruri_bv
[
0
]
);
si
->
si_provideruri_bv
[
1
].
bv_len
=
0
;
si
->
si_provideruri_bv
[
1
].
bv_val
=
NULL
;
gots
|=
GOT_PROVIDER
;
...
...
@@ -2498,11 +2463,15 @@ parse_syncrepl_line(
}
else
if
(
!
strncasecmp
(
cargv
[
i
],
AUTHCSTR
,
sizeof
(
AUTHCSTR
)
-
1
)
)
{
val
=
cargv
[
i
]
+
sizeof
(
AUTHCSTR
);
if
(
si
->
si_authcId
)
ch_free
(
si
->
si_authcId
);
si
->
si_authcId
=
ch_strdup
(
val
);
}
else
if
(
!
strncasecmp
(
cargv
[
i
],
OLDAUTHCSTR
,
sizeof
(
OLDAUTHCSTR
)
-
1
)
)
{
/* Old authcID is provided for some backwards compatibility */
val
=
cargv
[
i
]
+
sizeof
(
OLDAUTHCSTR
);
if
(
si
->
si_authcId
)
ch_free
(
si
->
si_authcId
);
si
->
si_authcId
=
ch_strdup
(
val
);
}
else
if
(
!
strncasecmp
(
cargv
[
i
],
AUTHZSTR
,
sizeof
(
AUTHZSTR
)
-
1
)
)
{
...
...
servers/slapd/init.c
View file @
98dc97bc
...
...
@@ -222,7 +222,7 @@ int slap_destroy(void)
int
rc
;
Debug
(
LDAP_DEBUG_TRACE
,
"%s
shutdown
: freeing system resources.
\n
"
,
"%s
destroy
: freeing system resources.
\n
"
,
slap_name
,
0
,
0
);
...
...
servers/slapd/modify.c
View file @
98dc97bc
...
...
@@ -427,7 +427,7 @@ fe_op_modify( Operation *op, SlapReply *rs )
}
rs
->
sr_err
=
slap_mods_opattrs
(
op
,
modlist
,
modtail
,
&
rs
->
sr_text
,
textbuf
,
textlen
);
&
rs
->
sr_text
,
textbuf
,
textlen
,
1
);
if
(
rs
->
sr_err
!=
LDAP_SUCCESS
)
{
send_ldap_result
(
op
,
rs
);
goto
cleanup
;
...
...
@@ -755,7 +755,8 @@ int slap_mods_opattrs(
Modifications
*
mods
,
Modifications
**
modtail
,
const
char
**
text
,
char
*
textbuf
,
size_t
textlen
)
char
*
textbuf
,
size_t
textlen
,
int
manage_ctxcsn
)
{
struct
berval
name
,
timestamp
,
csn
;
struct
berval
nname
;
...
...
@@ -784,7 +785,7 @@ int slap_mods_opattrs(
#endif
/* HAVE_GMTIME_R */
lutil_gentime
(
timebuf
,
sizeof
(
timebuf
),
ltm
);
slap_get_csn
(
op
,
csnbuf
,
sizeof
(
csnbuf
),
&
csn
,
1
);
slap_get_csn
(
op
,
csnbuf
,
sizeof
(
csnbuf
),
&
csn
,
manage_ctxcsn
);
#ifndef HAVE_GMTIME_R
ldap_pvt_thread_mutex_unlock
(
&
gmtime_mutex
);
...
...
servers/slapd/modrdn.c
View file @
98dc97bc
...
...
@@ -536,7 +536,8 @@ done:
/* empty */
}
rs
->
sr_err
=
slap_mods_opattrs
(
op
,
mod
,
modtail
,
&
rs
->
sr_text
,
textbuf
,
textlen
);
rs
->
sr_err
=
slap_mods_opattrs
(
op
,
mod
,
modtail
,
&
rs
->
sr_text
,
textbuf
,
textlen
,
1
);
}
/* LDAP v2 supporting correct attribute handling. */
...
...
servers/slapd/overlays/refint.c
View file @
98dc97bc
...
...
@@ -631,7 +631,7 @@ refint_response(
nop
.
o_dn
=
refint_dn
;
nop
.
o_ndn
=
refint_dn
;
rs
->
sr_err
=
slap_mods_opattrs
(
&
nop
,
nop
.
orm_modlist
,
tail
,
&
rs
->
sr_text
,
NULL
,
0
);
tail
,
&
rs
->
sr_text
,
NULL
,
0
,
1
);
nop
.
o_dn
=
nop
.
o_bd
->
be_rootdn
;
nop
.
o_ndn
=
nop
.
o_bd
->
be_rootndn
;
if
(
rs
->
sr_err
!=
LDAP_SUCCESS
)
goto
done
;
...
...
servers/slapd/passwd.c
View file @
98dc97bc
...
...
@@ -210,7 +210,7 @@ int passwd_extop(
* if it cares... */
rs
->
sr_err
=
slap_mods_opattrs
(
&
op2
,
ml
,
qpw
->
rs_modtail
,
&
rs
->
sr_text
,
NULL
,
0
);
NULL
,
0
,
1
);
if
(
rs
->
sr_err
==
LDAP_SUCCESS
)
{
rs
->
sr_err
=
op2
.
o_bd
->
be_modify
(
&
op2
,
rs
);
...
...
servers/slapd/proto-slap.h
View file @
98dc97bc
...
...
@@ -755,7 +755,8 @@ LDAP_SLAPD_F( int ) slap_mods_opattrs(
Modifications
*
mods
,
Modifications
**
modlist
,
const
char
**
text
,
char
*
textbuf
,
size_t
textlen
);
char
*
textbuf
,
size_t
textlen
,
int
manage_ctxcsn
);
/*
* mods.c
...
...
@@ -1225,6 +1226,7 @@ LDAP_SLAPD_F (struct berval *) slap_uuidstr_from_normalized LDAP_P((
struct
berval
*
,
struct
berval
*
,
void
*
));
LDAP_SLAPD_F
(
int
)
syncrepl_isupdate
LDAP_P
((
Operation
*
));
LDAP_SLAPD_F
(
int
)
syncrepl_isupdate_dn
LDAP_P
((
Backend
*
,
struct
berval
*
));
LDAP_SLAPD_F
(
void
)
syncinfo_free
LDAP_P
((
syncinfo_t
*
));
/* syntax.c */
LDAP_SLAPD_F
(
Syntax
*
)
syn_find
LDAP_P
((
...
...
servers/slapd/sasl.c
View file @
98dc97bc
...
...
@@ -502,7 +502,7 @@ slap_auxprop_store(
if
(
rc
==
LDAP_SUCCESS
)
{
rc
=
slap_mods_opattrs
(
&
op
,
modlist
,
modtail
,
&
text
,
textbuf
,
textlen
);
textlen
,
1
);
}
if
(
rc
==
LDAP_SUCCESS
)
{
...
...
servers/slapd/slap.h
View file @
98dc97bc
...
...
@@ -1435,7 +1435,6 @@ typedef struct syncinfo_s {
char
*
si_authcId
;
char
*
si_authzId
;
int
si_schemachecking
;
Filter
*
si_filter
;
struct
berval
si_filterstr
;
struct
berval
si_base
;
int
si_scope
;
...
...
servers/slapd/slapi/slapi_ops.c
View file @
98dc97bc
...
...
@@ -463,7 +463,7 @@ slapi_int_ldapmod_to_entry(
if
(
!
repl_user
)
{
rc
=
slap_mods_opattrs
(
op
,
modlist
,
modtail
,
&
text
,
textbuf
,
textlen
);
textbuf
,
textlen
,
1
);
if
(
rc
!=
LDAP_SUCCESS
)
{
goto
cleanup
;
}
...
...
@@ -1029,7 +1029,7 @@ slapi_modify_internal(
if
(
!
repl_user
)
{
rs
.
sr_err
=
slap_mods_opattrs
(
op
,
modlist
,
modtail
,
&
text
,
textbuf
,
textlen
);
textlen
,
1
);
if
(
rs
.
sr_err
!=
LDAP_SUCCESS
)
{
goto
cleanup
;
}
...
...
servers/slapd/syncrepl.c
View file @
98dc97bc
...
...
@@ -407,6 +407,8 @@ done:
}
}
slap_sl_free
(
op
->
o_req_ndn
.
bv_val
,
op
->
o_tmpmemctx
);
return
rc
;
}
...
...
@@ -664,11 +666,12 @@ do_syncrep2(
for
(
i
=
0
;
syncUUIDs
[
i
].
bv_val
;
i
++
)
{
struct
berval
*
syncuuid_bv
;
syncuuid_bv
=
ber_dupbv
(
NULL
,
&
syncUUIDs
[
i
]
);
slap_sl_free
(
syncUUIDs
[
i
].
bv_val
,
op
->
o_tmpmemctx
);
avl_insert
(
&
si
->
si_presentlist
,
(
caddr_t
)
syncuuid_bv
,
syncuuid_cmp
,
avl_dup_error
);
}
ber_mem
free
_x
(
syncUUIDs
,
op
->
o_tmpmemctx
);
slap_sl_
free
(
syncUUIDs
,
op
->
o_tmpmemctx
);
break
;
default:
Debug
(
LDAP_DEBUG_ANY
,
...
...
@@ -747,9 +750,6 @@ done:
slap_sync_cookie_free
(
&
syncCookie
,
0
);
slap_sync_cookie_free
(
&
syncCookie_req
,
0
);
avl_free
(
si
->
si_presentlist
,
avl_ber_bvfree
);
si
->
si_presentlist
=
NULL
;
if
(
res
)
ldap_msgfree
(
res
);
if
(
rc
&&
si
->
si_ld
)
{
...
...
@@ -832,8 +832,7 @@ do_syncrepl(
*/
if
(
rc
==
LDAP_SUCCESS
)
{
if
(
first
)
{
rc
=
connection_client_setup
(
s
,
do_syncrepl
,
arg
);
rc
=
connection_client_setup
(
s
,
do_syncrepl
,
arg
);
}
else
{
connection_client_enable
(
s
);
}
...
...
@@ -1274,10 +1273,10 @@ syncrepl_entry(
done
:
if
(
syncUUID_strrep
.
bv_val
)
{
ber_mem
free
_x
(
syncUUID_strrep
.
bv_val
,
op
->
o_tmpmemctx
);
slap_sl_
free
(
syncUUID_strrep
.
bv_val
,
op
->
o_tmpmemctx
);
}
if
(
si
->
si_syncUUID_ndn
.
bv_val
)
{
ber_mem
free
_x
(
si
->
si_syncUUID_ndn
.
bv_val
,
op
->
o_tmpmemctx
);
ch_
free
(
si
->
si_syncUUID_ndn
.
bv_val
);
}
return
ret
;
}
...
...
@@ -1664,7 +1663,7 @@ syncrepl_updateCookie(
op
->
o_tag
=
LDAP_REQ_ADD
;
rc
=
slap_mods_opattrs
(
op
,
modlist
,
modtail
,
&
text
,
txtbuf
,
textlen
);
&
text
,
txtbuf
,
textlen
,
0
);
for
(
ml
=
modlist
;
ml
!=
NULL
;
ml
=
ml
->
sml_next
)
{
ml
->
sml_op
=
LDAP_MOD_REPLACE
;
...
...
@@ -1807,7 +1806,7 @@ dn_callback(
Debug
(
LDAP_DEBUG_ANY
,
"dn_callback : consistency error - entryUUID is not unique
\n
"
,
0
,
0
,
0
);
}
else
{
ber_dupbv_x
(
&
si
->
si_syncUUID_ndn
,
&
rs
->
sr_entry
->
e_nname
,
op
->
o_tmpmemctx
);
ber_dupbv_x
(
&
si
->
si_syncUUID_ndn
,
&
rs
->
sr_entry
->
e_nname
,
NULL
);
}
}
else
if
(
rs
->
sr_type
==
REP_RESULT
)
{
if
(
rs
->
sr_err
==
LDAP_SIZELIMIT_EXCEEDED
)
{
...
...
@@ -1982,3 +1981,98 @@ avl_ber_bvfree( void *bv )
}
ch_free
(
(
char
*
)
bv
);
}
void
syncinfo_free
(
syncinfo_t
*
sie
)
{
if
(
sie
->
si_provideruri
)
{
ch_free
(
sie
->
si_provideruri
);
}
if
(
sie
->
si_provideruri_bv
)
{
ber_bvarray_free
(
sie
->
si_provideruri_bv
);
}
if
(
sie
->
si_updatedn
.
bv_val
)
{
ch_free
(
sie
->
si_updatedn
.
bv_val
);
}
if
(
sie
->
si_binddn
)
{
ch_free
(
sie
->
si_binddn
);
}
if
(
sie
->
si_passwd
)
{
ch_free
(
sie
->
si_passwd
);
}
if
(
sie
->
si_saslmech
)
{
ch_free
(
sie
->
si_saslmech
);
}
if
(
sie
->
si_secprops
)
{
ch_free
(
sie
->
si_secprops
);
}
if
(
sie
->
si_realm
)
{
ch_free
(
sie
->
si_realm
);
}
if
(
sie
->
si_authcId
)
{
ch_free
(
sie
->
si_authcId
);
}
if
(
sie
->
si_authzId
)
{
ch_free
(
sie
->
si_authzId
);
}
if
(
sie
->
si_filterstr
.
bv_val
)
{
ch_free
(
sie
->
si_filterstr
.
bv_val
);
}
if
(
sie
->
si_base
.
bv_val
)
{
ch_free
(
sie
->
si_base
.
bv_val
);
}
if
(
sie
->
si_attrs
)
{
int
i
=
0
;
while
(
sie
->
si_attrs
[
i
]
!=
NULL
)
{
ch_free
(
sie
->
si_attrs
[
i
]
);
i
++
;
}
ch_free
(
sie
->
si_attrs
);
}
if
(
sie
->
si_exattrs
)
{
int
i
=
0
;
while
(
sie
->
si_exattrs
[
i
]
!=
NULL
)
{
ch_free
(
sie
->
si_exattrs
[
i
]
);
i
++
;
}
ch_free
(
sie
->
si_exattrs
);
}
if
(
sie
->
si_retryinterval
)
{
ch_free
(
sie
->
si_retryinterval
);
}
if
(
sie
->
si_retrynum
)
{
ch_free
(
sie
->
si_retrynum
);
}
if
(
sie
->
si_retrynum_init
)
{
ch_free
(
sie
->
si_retrynum_init
);
}
slap_sync_cookie_free
(
&
sie
->
si_syncCookie
,
0
);
if
(
sie
->
si_syncUUID_ndn
.
bv_val
)
{
ch_free
(
sie
->
si_syncUUID_ndn
.
bv_val
);
}
if
(
sie
->
si_presentlist
)
{
avl_free
(
sie
->
si_presentlist
,
avl_ber_bvfree
);
}
if
(
sie
->
si_ld
)
{
ldap_ld_free
(
sie
->
si_ld
,
1
,
NULL
,
NULL
);
}
while
(
!
LDAP_LIST_EMPTY
(
&
sie
->
si_nonpresentlist
))
{
struct
nonpresent_entry
*
npe
;
npe
=
LDAP_LIST_FIRST
(
&
sie
->
si_nonpresentlist
);
LDAP_LIST_REMOVE
(
npe
,
npe_link
);
if
(
npe
->
npe_name
)
{
if
(
npe
->
npe_name
->
bv_val
)
{
ch_free
(
npe
->
npe_name
->
bv_val
);
}
ch_free
(
npe
->
npe_name
);
}
if
(
npe
->
npe_nname
)
{
if
(
npe
->
npe_nname
->
bv_val
)
{
ch_free
(
npe
->
npe_nname
->
bv_val
);
}
ch_free
(
npe
->
npe_nname
);
}
ch_free
(
npe
);
}
ch_free
(
sie
);
}
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