Branch '389-ds-base-1.3.0' - ldap/servers
by Mark Reynolds
ldap/servers/plugins/acl/aclplugin.c | 8 ++-----
ldap/servers/plugins/chainingdb/cb_controls.c | 14 +++++++-----
ldap/servers/plugins/chainingdb/cb_instance.c | 18 ++++++++--------
ldap/servers/plugins/replication/repl5_replica.c | 3 +-
ldap/servers/plugins/replication/repl5_replica_config.c | 15 ++++++++-----
ldap/servers/slapd/back-ldbm/upgrade.c | 3 ++
ldap/servers/slapd/main.c | 5 ++--
ldap/servers/slapd/proxyauth.c | 12 +++++-----
8 files changed, 44 insertions(+), 34 deletions(-)
New commits:
commit 9df19f8dbe25290a27288e617a133f4289350226
Author: Mark Reynolds <mreynolds(a)redhat.com>
Date: Wed Mar 12 16:58:32 2014 -0400
Ticket 47740 - Fix coverity erorrs - Part 4
12498 - resource leak - /ldap/servers/plugins/chainingdn/cb_instance.c
12490 - resource leak - /ldap/servers/plugins/chainingdn/cb_controls.c
12489 - resource leak - /ldap/servers/plugins/replication/repl5_replica_config.c
12488 - resource leak - /ldap/servers/slapd/main.c
12485 - resource leak - /ldap/servers/plugins/replication/repl5_replica_config.c
12484 - resource leak - /ldap/servers/plugins/replication/repl5_replica_config.c
12483 - resource leak - /ldap/servers/slapd/back-ldbm/upgrade.c
12482 - resource leak - /ldap/servers/plugins/replication/repl5_replica.c
12481 - resource leak - /ldap/servers/plugins/acl/aclplugin.c
12476 - resource leak - /ldap/servers/slapd/back-ldbm/upgrade.c
12475 - resource leak - /ldap/servers/slapd/back-ldbm/upgrade.c
https://fedorahosted.org/389/ticket/47740
Reviewed by: nhosoi(Thanks!)
diff --git a/ldap/servers/plugins/acl/aclplugin.c b/ldap/servers/plugins/acl/aclplugin.c
index 0d35425..5250e0d 100644
--- a/ldap/servers/plugins/acl/aclplugin.c
+++ b/ldap/servers/plugins/acl/aclplugin.c
@@ -197,7 +197,7 @@ aclplugin_preop_modify ( Slapi_PBlock *pb )
int
aclplugin_preop_common( Slapi_PBlock *pb )
{
- char *proxy_dn; /* id being assumed */
+ char *proxy_dn = NULL; /* id being assumed */
char *dn; /* proxy master */
char *errtext = NULL;
int lderr;
@@ -221,9 +221,7 @@ aclplugin_preop_common( Slapi_PBlock *pb )
* The proxy_dn is the id being assumed, while dn
* is the "proxy master".
*/
- proxy_dn = NULL;
- if ( LDAP_SUCCESS != ( lderr = proxyauth_get_dn( pb, &proxy_dn,
- &errtext ))) {
+ if ( LDAP_SUCCESS != ( lderr = proxyauth_get_dn( pb, &proxy_dn, &errtext ))) {
/*
* Fatal error -- send a result to the client and arrange to skip
* any further processing.
@@ -231,7 +229,7 @@ aclplugin_preop_common( Slapi_PBlock *pb )
slapi_send_ldap_result( pb, lderr, NULL, errtext, 0, NULL );
TNF_PROBE_1_DEBUG(aclplugin_preop_common_end ,"ACL","",
tnf_string,proxid_error,"");
-
+ slapi_ch_free_string(&proxy_dn);
return 1; /* skip any further processing */
}
slapi_pblock_get ( pb, SLAPI_REQUESTOR_DN, &dn );
diff --git a/ldap/servers/plugins/chainingdb/cb_controls.c b/ldap/servers/plugins/chainingdb/cb_controls.c
index 2a698a0..e1fc9c3 100644
--- a/ldap/servers/plugins/chainingdb/cb_controls.c
+++ b/ldap/servers/plugins/chainingdb/cb_controls.c
@@ -200,20 +200,22 @@ int cb_update_controls( Slapi_PBlock * pb,
char * requestor,*rootdn;
char * requestorCopy=NULL;
- rootdn=cb_get_rootdn();
+ rootdn = cb_get_rootdn();
slapi_pblock_get( pb, SLAPI_REQUESTOR_NDN, &requestor );
requestorCopy = slapi_ch_strdup(requestor);
slapi_dn_ignore_case(requestorCopy);
if (!strcmp( requestorCopy, rootdn )) { /* UTF8- aware */
slapi_log_error( SLAPI_LOG_PLUGIN,CB_PLUGIN_SUBSYSTEM,
- "Use of user <%s> incompatible with proxied auth. control\n",rootdn);
- rc=LDAP_UNAVAILABLE_CRITICAL_EXTENSION;
- slapi_ch_free((void **)&requestorCopy);
+ "Use of user <%s> incompatible with proxied auth. control\n",
+ rootdn);
+ rc = LDAP_UNAVAILABLE_CRITICAL_EXTENSION;
+ slapi_ch_free_string(&rootdn);
+ slapi_ch_free_string(&requestorCopy);
break;
}
- slapi_ch_free((void **)&rootdn);
- slapi_ch_free((void **)&requestorCopy);
+ slapi_ch_free_string(&rootdn);
+ slapi_ch_free_string(&requestorCopy);
}
addauth=0;
diff --git a/ldap/servers/plugins/chainingdb/cb_instance.c b/ldap/servers/plugins/chainingdb/cb_instance.c
index ce7675b..86bb635 100644
--- a/ldap/servers/plugins/chainingdb/cb_instance.c
+++ b/ldap/servers/plugins/chainingdb/cb_instance.c
@@ -738,11 +738,11 @@ static int cb_instance_hosturl_set(void *arg, void *value, char *errorbuf, int p
if ((LDAP_SUCCESS == rc) && apply) {
- slapi_rwlock_wrlock(inst->rwl_config_lock);
-
- if (( phase != CB_CONFIG_PHASE_INITIALIZATION ) &&
- ( phase != CB_CONFIG_PHASE_STARTUP )) {
+ slapi_rwlock_wrlock(inst->rwl_config_lock);
+ if (( phase != CB_CONFIG_PHASE_INITIALIZATION ) &&
+ ( phase != CB_CONFIG_PHASE_STARTUP ))
+ {
/* Dynamic modification */
/* Don't free char * pointer now */
/* STore them in a waste basket */
@@ -766,17 +766,17 @@ static int cb_instance_hosturl_set(void *arg, void *value, char *errorbuf, int p
/* the url and update the configuration */
if ((ludp->lud_host==NULL) || (strlen(ludp->lud_host)==0)) {
- inst->pool->hostname=(char *)slapi_ch_strdup((char *)get_localhost_DNS());
+ inst->pool->hostname = get_localhost_DNS();
} else {
- inst->pool->hostname = slapi_ch_strdup( ludp->lud_host );
+ inst->pool->hostname = slapi_ch_strdup( ludp->lud_host );
}
- inst->pool->url = slapi_ch_strdup( url);
- inst->pool->secure = secure;
+ inst->pool->url = slapi_ch_strdup( url);
+ inst->pool->secure = secure;
if ((ludp->lud_port==0) && inst->pool->secure)
inst->pool->port=CB_LDAP_SECURE_PORT;
else
- inst->pool->port = ludp->lud_port;
+ inst->pool->port = ludp->lud_port;
/* Build a charray of <host>:<port> */
/* hostname is of the form <host>[:port] <host>[:port] */
diff --git a/ldap/servers/plugins/replication/repl5_replica.c b/ldap/servers/plugins/replication/repl5_replica.c
index 81c09d7..1d23db6 100644
--- a/ldap/servers/plugins/replication/repl5_replica.c
+++ b/ldap/servers/plugins/replication/repl5_replica.c
@@ -2232,6 +2232,7 @@ _replica_configure_ruv (Replica *r, PRBool isLocked)
"failed to recreate replica ruv tombstone entry"
" (%s); LDAP error - %d\n",
slapi_sdn_get_dn(r->repl_root), rc);
+ slapi_ch_free_string(&generation);
goto done;
}
}
@@ -2239,7 +2240,7 @@ _replica_configure_ruv (Replica *r, PRBool isLocked)
#undef RUV_UPDATE_FULL
}
- slapi_ch_free((void **)&generation);
+ slapi_ch_free_string(&generation);
return_value = 0;
}
else
diff --git a/ldap/servers/plugins/replication/repl5_replica_config.c b/ldap/servers/plugins/replication/repl5_replica_config.c
index 7b0968c..0b82c3b 100644
--- a/ldap/servers/plugins/replication/repl5_replica_config.c
+++ b/ldap/servers/plugins/replication/repl5_replica_config.c
@@ -1022,8 +1022,6 @@ static int replica_execute_cl2ldif_task (Object *r, char *returntext)
}
PR_snprintf (fName, MAXPATHLEN, "%s/%s.ldif", clDir, replica_get_name (replica));
- slapi_ch_free_string (&clDir);
-
slapi_log_error(SLAPI_LOG_FATAL, repl_plugin_name,
"Beginning changelog export of replica \"%s\"\n",
replica_get_name(replica));
@@ -1042,6 +1040,8 @@ static int replica_execute_cl2ldif_task (Object *r, char *returntext)
rc = LDAP_OPERATIONS_ERROR;
}
bail:
+ slapi_ch_free_string (&clDir);
+
return rc;
}
@@ -1097,7 +1097,6 @@ static int replica_execute_ldif2cl_task (Object *r, char *returntext)
"Beginning changelog import of replica \"%s\"\n",
replica_get_name(replica));
imprc = cl5ImportLDIF (clDir, fName, rlist);
- slapi_ch_free_string (&clDir);
if (CL5_SUCCESS == imprc)
{
slapi_log_error(SLAPI_LOG_FATAL, repl_plugin_name,
@@ -1127,8 +1126,11 @@ static int replica_execute_ldif2cl_task (Object *r, char *returntext)
config.dir?config.dir:"null config dir");
rc = LDAP_OPERATIONS_ERROR;
}
+
bail:
+ slapi_ch_free_string(&clDir);
changelog5_config_done(&config);
+
/* if cl5ImportLDIF returned an error, report it first. */
return imprc?imprc:rc;
}
@@ -2094,9 +2096,12 @@ replica_send_cleanruv_task(Repl_Agmt *agmt, cleanruv_data *clean_data)
rc = ldap_modify_ext_s( ld, repl_dn, mods, NULL, NULL);
if(rc != LDAP_SUCCESS){
- cleanruv_log(clean_data->task, CLEANALLRUV_ID, "Failed to add CLEANRUV task replica "
+ char *hostname = agmt_get_hostname(agmt);
+
+ cleanruv_log(clean_data->task, CLEANALLRUV_ID, "Failed to add CLEANRUV task (%s) to replica "
"(%s). You will need to manually run the CLEANRUV task on this replica (%s) error (%d)",
- agmt_get_long_name(agmt), agmt_get_hostname(agmt), rc);
+ repl_dn, agmt_get_long_name(agmt), hostname, rc);
+ slapi_ch_free_string(&hostname);
}
slapi_ch_free_string(&repl_dn);
slapi_sdn_free(&sdn);
diff --git a/ldap/servers/slapd/back-ldbm/upgrade.c b/ldap/servers/slapd/back-ldbm/upgrade.c
index a10ee9b..16d784e 100644
--- a/ldap/servers/slapd/back-ldbm/upgrade.c
+++ b/ldap/servers/slapd/back-ldbm/upgrade.c
@@ -168,6 +168,7 @@ check_db_version( struct ldbminfo *li, int *action )
*action = 0;
dbversion_read(li, li->li_directory, &ldbmversion, &dataversion);
if (NULL == ldbmversion || '\0' == *ldbmversion) {
+ slapi_ch_free_string(&ldbmversion);
slapi_ch_free_string(&dataversion);
return 0;
}
@@ -251,6 +252,8 @@ check_db_inst_version( ldbm_instance *inst )
dbversion_read(inst->inst_li, inst_dirp, &ldbmversion, &dataversion);
if (NULL == ldbmversion || '\0' == *ldbmversion) {
+ slapi_ch_free_string(&ldbmversion);
+ slapi_ch_free_string(&dataversion);
return rval;
}
diff --git a/ldap/servers/slapd/main.c b/ldap/servers/slapd/main.c
index 4d510cb..af4b7ce 100644
--- a/ldap/servers/slapd/main.c
+++ b/ldap/servers/slapd/main.c
@@ -2958,7 +2958,7 @@ slapd_debug_level_string2level( const char *s )
char *cur, *next, *scopy;
level = 0;
- cur = scopy = slapi_ch_strdup( s );
+ scopy = slapi_ch_strdup( s );
for ( cur = scopy; cur != NULL; cur = next ) {
if (( next = strchr( cur, '+' )) != NULL ) {
@@ -2978,12 +2978,13 @@ slapd_debug_level_string2level( const char *s )
if ( NULL == slapd_debug_level_map[i].dle_string ) {
fprintf( stderr, "Unrecognized debug level \"%s\"\n", cur );
+ slapi_ch_free_string(&scopy);
return -1;
}
}
}
- slapi_ch_free( (void **)&scopy );
+ slapi_ch_free_string(&scopy);
return level;
}
diff --git a/ldap/servers/slapd/proxyauth.c b/ldap/servers/slapd/proxyauth.c
index 562ac93..17b6a05 100644
--- a/ldap/servers/slapd/proxyauth.c
+++ b/ldap/servers/slapd/proxyauth.c
@@ -181,11 +181,11 @@ parse_LDAPProxyAuth(struct berval *spec_ber, int version, char **errtextp,
int
proxyauth_get_dn( Slapi_PBlock *pb, char **proxydnp, char **errtextp )
{
- char *dn = 0;
- LDAPProxyAuth *spec = 0;
- int rv, lderr = LDAP_SUCCESS; /* optimistic */
+ char *dn = 0;
+ LDAPProxyAuth *spec = 0;
+ int rv, lderr = LDAP_SUCCESS; /* optimistic */
- BEGIN
+ BEGIN
struct berval *spec_ber;
LDAPControl **controls;
int present;
@@ -233,12 +233,12 @@ proxyauth_get_dn( Slapi_PBlock *pb, char **proxydnp, char **errtextp )
}
END
- if (spec) delete_LDAPProxyAuth(spec);
+ if (spec) delete_LDAPProxyAuth(spec);
if ( NULL != proxydnp ) {
*proxydnp = dn;
} else {
- slapi_ch_free( (void **)&dn );
+ slapi_ch_free_string(&dn);
}
return lderr;
10 years, 3 months
Branch '389-ds-base-1.3.1' - ldap/servers
by Mark Reynolds
ldap/servers/plugins/acl/aclplugin.c | 8 ++---
ldap/servers/plugins/chainingdb/cb_controls.c | 14 +++++----
ldap/servers/plugins/chainingdb/cb_instance.c | 18 ++++++------
ldap/servers/plugins/replication/repl5_replica.c | 3 +-
ldap/servers/plugins/replication/repl5_replica_config.c | 13 ++++++--
ldap/servers/slapd/back-ldbm/upgrade.c | 3 ++
ldap/servers/slapd/main.c | 5 ++-
ldap/servers/slapd/proxyauth.c | 24 ++++++++--------
8 files changed, 49 insertions(+), 39 deletions(-)
New commits:
commit 665a4935bb4f42c640c3ec009fac2fbc0d28c601
Author: Mark Reynolds <mreynolds(a)redhat.com>
Date: Wed Mar 12 16:58:32 2014 -0400
Ticket 47740 - Fix coverity erorrs - Part 4
12498 - resource leak - /ldap/servers/plugins/chainingdn/cb_instance.c
12490 - resource leak - /ldap/servers/plugins/chainingdn/cb_controls.c
12489 - resource leak - /ldap/servers/plugins/replication/repl5_replica_config.c
12488 - resource leak - /ldap/servers/slapd/main.c
12485 - resource leak - /ldap/servers/plugins/replication/repl5_replica_config.c
12484 - resource leak - /ldap/servers/plugins/replication/repl5_replica_config.c
12483 - resource leak - /ldap/servers/slapd/back-ldbm/upgrade.c
12482 - resource leak - /ldap/servers/plugins/replication/repl5_replica.c
12481 - resource leak - /ldap/servers/plugins/acl/aclplugin.c
12476 - resource leak - /ldap/servers/slapd/back-ldbm/upgrade.c
12475 - resource leak - /ldap/servers/slapd/back-ldbm/upgrade.c
https://fedorahosted.org/389/ticket/47740
Reviewed by: nhosoi(Thanks!)
(cherry picked from commit 48c1f2afb047de272603c87e6b592dd681eb8d9d)
diff --git a/ldap/servers/plugins/acl/aclplugin.c b/ldap/servers/plugins/acl/aclplugin.c
index 0d35425..5250e0d 100644
--- a/ldap/servers/plugins/acl/aclplugin.c
+++ b/ldap/servers/plugins/acl/aclplugin.c
@@ -197,7 +197,7 @@ aclplugin_preop_modify ( Slapi_PBlock *pb )
int
aclplugin_preop_common( Slapi_PBlock *pb )
{
- char *proxy_dn; /* id being assumed */
+ char *proxy_dn = NULL; /* id being assumed */
char *dn; /* proxy master */
char *errtext = NULL;
int lderr;
@@ -221,9 +221,7 @@ aclplugin_preop_common( Slapi_PBlock *pb )
* The proxy_dn is the id being assumed, while dn
* is the "proxy master".
*/
- proxy_dn = NULL;
- if ( LDAP_SUCCESS != ( lderr = proxyauth_get_dn( pb, &proxy_dn,
- &errtext ))) {
+ if ( LDAP_SUCCESS != ( lderr = proxyauth_get_dn( pb, &proxy_dn, &errtext ))) {
/*
* Fatal error -- send a result to the client and arrange to skip
* any further processing.
@@ -231,7 +229,7 @@ aclplugin_preop_common( Slapi_PBlock *pb )
slapi_send_ldap_result( pb, lderr, NULL, errtext, 0, NULL );
TNF_PROBE_1_DEBUG(aclplugin_preop_common_end ,"ACL","",
tnf_string,proxid_error,"");
-
+ slapi_ch_free_string(&proxy_dn);
return 1; /* skip any further processing */
}
slapi_pblock_get ( pb, SLAPI_REQUESTOR_DN, &dn );
diff --git a/ldap/servers/plugins/chainingdb/cb_controls.c b/ldap/servers/plugins/chainingdb/cb_controls.c
index 2a698a0..e1fc9c3 100644
--- a/ldap/servers/plugins/chainingdb/cb_controls.c
+++ b/ldap/servers/plugins/chainingdb/cb_controls.c
@@ -200,20 +200,22 @@ int cb_update_controls( Slapi_PBlock * pb,
char * requestor,*rootdn;
char * requestorCopy=NULL;
- rootdn=cb_get_rootdn();
+ rootdn = cb_get_rootdn();
slapi_pblock_get( pb, SLAPI_REQUESTOR_NDN, &requestor );
requestorCopy = slapi_ch_strdup(requestor);
slapi_dn_ignore_case(requestorCopy);
if (!strcmp( requestorCopy, rootdn )) { /* UTF8- aware */
slapi_log_error( SLAPI_LOG_PLUGIN,CB_PLUGIN_SUBSYSTEM,
- "Use of user <%s> incompatible with proxied auth. control\n",rootdn);
- rc=LDAP_UNAVAILABLE_CRITICAL_EXTENSION;
- slapi_ch_free((void **)&requestorCopy);
+ "Use of user <%s> incompatible with proxied auth. control\n",
+ rootdn);
+ rc = LDAP_UNAVAILABLE_CRITICAL_EXTENSION;
+ slapi_ch_free_string(&rootdn);
+ slapi_ch_free_string(&requestorCopy);
break;
}
- slapi_ch_free((void **)&rootdn);
- slapi_ch_free((void **)&requestorCopy);
+ slapi_ch_free_string(&rootdn);
+ slapi_ch_free_string(&requestorCopy);
}
addauth=0;
diff --git a/ldap/servers/plugins/chainingdb/cb_instance.c b/ldap/servers/plugins/chainingdb/cb_instance.c
index ce7675b..86bb635 100644
--- a/ldap/servers/plugins/chainingdb/cb_instance.c
+++ b/ldap/servers/plugins/chainingdb/cb_instance.c
@@ -738,11 +738,11 @@ static int cb_instance_hosturl_set(void *arg, void *value, char *errorbuf, int p
if ((LDAP_SUCCESS == rc) && apply) {
- slapi_rwlock_wrlock(inst->rwl_config_lock);
-
- if (( phase != CB_CONFIG_PHASE_INITIALIZATION ) &&
- ( phase != CB_CONFIG_PHASE_STARTUP )) {
+ slapi_rwlock_wrlock(inst->rwl_config_lock);
+ if (( phase != CB_CONFIG_PHASE_INITIALIZATION ) &&
+ ( phase != CB_CONFIG_PHASE_STARTUP ))
+ {
/* Dynamic modification */
/* Don't free char * pointer now */
/* STore them in a waste basket */
@@ -766,17 +766,17 @@ static int cb_instance_hosturl_set(void *arg, void *value, char *errorbuf, int p
/* the url and update the configuration */
if ((ludp->lud_host==NULL) || (strlen(ludp->lud_host)==0)) {
- inst->pool->hostname=(char *)slapi_ch_strdup((char *)get_localhost_DNS());
+ inst->pool->hostname = get_localhost_DNS();
} else {
- inst->pool->hostname = slapi_ch_strdup( ludp->lud_host );
+ inst->pool->hostname = slapi_ch_strdup( ludp->lud_host );
}
- inst->pool->url = slapi_ch_strdup( url);
- inst->pool->secure = secure;
+ inst->pool->url = slapi_ch_strdup( url);
+ inst->pool->secure = secure;
if ((ludp->lud_port==0) && inst->pool->secure)
inst->pool->port=CB_LDAP_SECURE_PORT;
else
- inst->pool->port = ludp->lud_port;
+ inst->pool->port = ludp->lud_port;
/* Build a charray of <host>:<port> */
/* hostname is of the form <host>[:port] <host>[:port] */
diff --git a/ldap/servers/plugins/replication/repl5_replica.c b/ldap/servers/plugins/replication/repl5_replica.c
index 4992020..8d64641 100644
--- a/ldap/servers/plugins/replication/repl5_replica.c
+++ b/ldap/servers/plugins/replication/repl5_replica.c
@@ -2288,6 +2288,7 @@ _replica_configure_ruv (Replica *r, PRBool isLocked)
"failed to recreate replica ruv tombstone entry"
" (%s); LDAP error - %d\n",
slapi_sdn_get_dn(r->repl_root), rc);
+ slapi_ch_free_string(&generation);
goto done;
}
}
@@ -2295,7 +2296,7 @@ _replica_configure_ruv (Replica *r, PRBool isLocked)
#undef RUV_UPDATE_FULL
}
- slapi_ch_free((void **)&generation);
+ slapi_ch_free_string(&generation);
return_value = 0;
}
else
diff --git a/ldap/servers/plugins/replication/repl5_replica_config.c b/ldap/servers/plugins/replication/repl5_replica_config.c
index 841c57a..bc5014a 100644
--- a/ldap/servers/plugins/replication/repl5_replica_config.c
+++ b/ldap/servers/plugins/replication/repl5_replica_config.c
@@ -1130,8 +1130,6 @@ static int replica_execute_cl2ldif_task (Object *r, char *returntext)
}
PR_snprintf (fName, MAXPATHLEN, "%s/%s.ldif", clDir, replica_get_name (replica));
- slapi_ch_free_string (&clDir);
-
slapi_log_error(SLAPI_LOG_FATAL, repl_plugin_name,
"Beginning changelog export of replica \"%s\"\n",
replica_get_name(replica));
@@ -1150,6 +1148,8 @@ static int replica_execute_cl2ldif_task (Object *r, char *returntext)
rc = LDAP_OPERATIONS_ERROR;
}
bail:
+ slapi_ch_free_string (&clDir);
+
return rc;
}
@@ -1205,7 +1205,6 @@ static int replica_execute_ldif2cl_task (Object *r, char *returntext)
"Beginning changelog import of replica \"%s\"\n",
replica_get_name(replica));
imprc = cl5ImportLDIF (clDir, fName, rlist);
- slapi_ch_free_string (&clDir);
if (CL5_SUCCESS == imprc)
{
slapi_log_error(SLAPI_LOG_FATAL, repl_plugin_name,
@@ -1235,8 +1234,11 @@ static int replica_execute_ldif2cl_task (Object *r, char *returntext)
config.dir?config.dir:"null config dir");
rc = LDAP_OPERATIONS_ERROR;
}
+
bail:
+ slapi_ch_free_string(&clDir);
changelog5_config_done(&config);
+
/* if cl5ImportLDIF returned an error, report it first. */
return imprc?imprc:rc;
}
@@ -2203,9 +2205,12 @@ replica_send_cleanruv_task(Repl_Agmt *agmt, cleanruv_data *clean_data)
rc = ldap_modify_ext_s( ld, repl_dn, mods, NULL, NULL);
if(rc != LDAP_SUCCESS){
+ char *hostname = agmt_get_hostname(agmt);
+
cleanruv_log(clean_data->task, CLEANALLRUV_ID, "Failed to add CLEANRUV task (%s) to replica "
"(%s). You will need to manually run the CLEANRUV task on this replica (%s) error (%d)",
- repl_dn, agmt_get_long_name(agmt), agmt_get_hostname(agmt), rc);
+ repl_dn, agmt_get_long_name(agmt), hostname, rc);
+ slapi_ch_free_string(&hostname);
}
slapi_ch_free_string(&repl_dn);
slapi_sdn_free(&sdn);
diff --git a/ldap/servers/slapd/back-ldbm/upgrade.c b/ldap/servers/slapd/back-ldbm/upgrade.c
index a10ee9b..16d784e 100644
--- a/ldap/servers/slapd/back-ldbm/upgrade.c
+++ b/ldap/servers/slapd/back-ldbm/upgrade.c
@@ -168,6 +168,7 @@ check_db_version( struct ldbminfo *li, int *action )
*action = 0;
dbversion_read(li, li->li_directory, &ldbmversion, &dataversion);
if (NULL == ldbmversion || '\0' == *ldbmversion) {
+ slapi_ch_free_string(&ldbmversion);
slapi_ch_free_string(&dataversion);
return 0;
}
@@ -251,6 +252,8 @@ check_db_inst_version( ldbm_instance *inst )
dbversion_read(inst->inst_li, inst_dirp, &ldbmversion, &dataversion);
if (NULL == ldbmversion || '\0' == *ldbmversion) {
+ slapi_ch_free_string(&ldbmversion);
+ slapi_ch_free_string(&dataversion);
return rval;
}
diff --git a/ldap/servers/slapd/main.c b/ldap/servers/slapd/main.c
index ad8dd83..ae30f23 100644
--- a/ldap/servers/slapd/main.c
+++ b/ldap/servers/slapd/main.c
@@ -2959,7 +2959,7 @@ slapd_debug_level_string2level( const char *s )
char *cur, *next, *scopy;
level = 0;
- cur = scopy = slapi_ch_strdup( s );
+ scopy = slapi_ch_strdup( s );
for ( cur = scopy; cur != NULL; cur = next ) {
if (( next = strchr( cur, '+' )) != NULL ) {
@@ -2979,12 +2979,13 @@ slapd_debug_level_string2level( const char *s )
if ( NULL == slapd_debug_level_map[i].dle_string ) {
fprintf( stderr, "Unrecognized debug level \"%s\"\n", cur );
+ slapi_ch_free_string(&scopy);
return -1;
}
}
}
- slapi_ch_free( (void **)&scopy );
+ slapi_ch_free_string(&scopy);
return level;
}
diff --git a/ldap/servers/slapd/proxyauth.c b/ldap/servers/slapd/proxyauth.c
index 817adce..58c15d8 100644
--- a/ldap/servers/slapd/proxyauth.c
+++ b/ldap/servers/slapd/proxyauth.c
@@ -183,11 +183,11 @@ parse_LDAPProxyAuth(struct berval *spec_ber, int version, char **errtextp,
int
proxyauth_get_dn( Slapi_PBlock *pb, char **proxydnp, char **errtextp )
{
- char *dn = 0;
- LDAPProxyAuth *spec = 0;
- int rv, lderr = LDAP_SUCCESS; /* optimistic */
+ char *dn = 0;
+ LDAPProxyAuth *spec = 0;
+ int rv, lderr = LDAP_SUCCESS; /* optimistic */
- BEGIN
+ BEGIN
struct berval *spec_ber;
LDAPControl **controls;
int present;
@@ -223,29 +223,29 @@ proxyauth_get_dn( Slapi_PBlock *pb, char **proxydnp, char **errtextp )
if ( critical ) {
lderr = LDAP_UNAVAILABLE_CRITICAL_EXTENSION;
} else {
- lderr = rv;
- }
+ lderr = rv;
+ }
break;
}
dn = slapi_ch_strdup(spec->auth_dn);
if (slapi_dn_isroot(dn) ) {
- if (critical)
- lderr = LDAP_UNAVAILABLE_CRITICAL_EXTENSION;
- else
- lderr = LDAP_UNWILLING_TO_PERFORM;
+ if (critical)
+ lderr = LDAP_UNAVAILABLE_CRITICAL_EXTENSION;
+ else
+ lderr = LDAP_UNWILLING_TO_PERFORM;
*errtextp = "Proxy dn should not be rootdn";
break;
}
END
- if (spec) delete_LDAPProxyAuth(spec);
+ if (spec) delete_LDAPProxyAuth(spec);
if ( NULL != proxydnp ) {
*proxydnp = dn;
} else {
- slapi_ch_free( (void **)&dn );
+ slapi_ch_free_string(&dn);
}
return lderr;
10 years, 3 months
Branch '389-ds-base-1.3.2' - ldap/servers
by Mark Reynolds
ldap/servers/plugins/acl/aclplugin.c | 8 ++---
ldap/servers/plugins/chainingdb/cb_controls.c | 14 +++++----
ldap/servers/plugins/chainingdb/cb_instance.c | 18 ++++++------
ldap/servers/plugins/replication/repl5_replica.c | 3 +-
ldap/servers/plugins/replication/repl5_replica_config.c | 13 ++++++--
ldap/servers/slapd/back-ldbm/upgrade.c | 3 ++
ldap/servers/slapd/main.c | 5 ++-
ldap/servers/slapd/proxyauth.c | 24 ++++++++--------
8 files changed, 49 insertions(+), 39 deletions(-)
New commits:
commit c5c4ecd0c99f5b7943dc36c748d1b1ab89ee2f06
Author: Mark Reynolds <mreynolds(a)redhat.com>
Date: Wed Mar 12 16:58:32 2014 -0400
Ticket 47740 - Fix coverity erorrs - Part 4
12498 - resource leak - /ldap/servers/plugins/chainingdn/cb_instance.c
12490 - resource leak - /ldap/servers/plugins/chainingdn/cb_controls.c
12489 - resource leak - /ldap/servers/plugins/replication/repl5_replica_config.c
12488 - resource leak - /ldap/servers/slapd/main.c
12485 - resource leak - /ldap/servers/plugins/replication/repl5_replica_config.c
12484 - resource leak - /ldap/servers/plugins/replication/repl5_replica_config.c
12483 - resource leak - /ldap/servers/slapd/back-ldbm/upgrade.c
12482 - resource leak - /ldap/servers/plugins/replication/repl5_replica.c
12481 - resource leak - /ldap/servers/plugins/acl/aclplugin.c
12476 - resource leak - /ldap/servers/slapd/back-ldbm/upgrade.c
12475 - resource leak - /ldap/servers/slapd/back-ldbm/upgrade.c
https://fedorahosted.org/389/ticket/47740
Reviewed by: nhosoi(Thanks!)
(cherry picked from commit 48c1f2afb047de272603c87e6b592dd681eb8d9d)
diff --git a/ldap/servers/plugins/acl/aclplugin.c b/ldap/servers/plugins/acl/aclplugin.c
index 70a02d7..2a29581 100644
--- a/ldap/servers/plugins/acl/aclplugin.c
+++ b/ldap/servers/plugins/acl/aclplugin.c
@@ -197,7 +197,7 @@ aclplugin_preop_modify ( Slapi_PBlock *pb )
int
aclplugin_preop_common( Slapi_PBlock *pb )
{
- char *proxy_dn; /* id being assumed */
+ char *proxy_dn = NULL; /* id being assumed */
char *dn; /* proxy master */
char *errtext = NULL;
int lderr;
@@ -221,9 +221,7 @@ aclplugin_preop_common( Slapi_PBlock *pb )
* The proxy_dn is the id being assumed, while dn
* is the "proxy master".
*/
- proxy_dn = NULL;
- if ( LDAP_SUCCESS != ( lderr = proxyauth_get_dn( pb, &proxy_dn,
- &errtext ))) {
+ if ( LDAP_SUCCESS != ( lderr = proxyauth_get_dn( pb, &proxy_dn, &errtext ))) {
/*
* Fatal error -- send a result to the client and arrange to skip
* any further processing.
@@ -231,7 +229,7 @@ aclplugin_preop_common( Slapi_PBlock *pb )
slapi_send_ldap_result( pb, lderr, NULL, errtext, 0, NULL );
TNF_PROBE_1_DEBUG(aclplugin_preop_common_end ,"ACL","",
tnf_string,proxid_error,"");
-
+ slapi_ch_free_string(&proxy_dn);
return 1; /* skip any further processing */
}
slapi_pblock_get ( pb, SLAPI_REQUESTOR_DN, &dn );
diff --git a/ldap/servers/plugins/chainingdb/cb_controls.c b/ldap/servers/plugins/chainingdb/cb_controls.c
index 2a698a0..e1fc9c3 100644
--- a/ldap/servers/plugins/chainingdb/cb_controls.c
+++ b/ldap/servers/plugins/chainingdb/cb_controls.c
@@ -200,20 +200,22 @@ int cb_update_controls( Slapi_PBlock * pb,
char * requestor,*rootdn;
char * requestorCopy=NULL;
- rootdn=cb_get_rootdn();
+ rootdn = cb_get_rootdn();
slapi_pblock_get( pb, SLAPI_REQUESTOR_NDN, &requestor );
requestorCopy = slapi_ch_strdup(requestor);
slapi_dn_ignore_case(requestorCopy);
if (!strcmp( requestorCopy, rootdn )) { /* UTF8- aware */
slapi_log_error( SLAPI_LOG_PLUGIN,CB_PLUGIN_SUBSYSTEM,
- "Use of user <%s> incompatible with proxied auth. control\n",rootdn);
- rc=LDAP_UNAVAILABLE_CRITICAL_EXTENSION;
- slapi_ch_free((void **)&requestorCopy);
+ "Use of user <%s> incompatible with proxied auth. control\n",
+ rootdn);
+ rc = LDAP_UNAVAILABLE_CRITICAL_EXTENSION;
+ slapi_ch_free_string(&rootdn);
+ slapi_ch_free_string(&requestorCopy);
break;
}
- slapi_ch_free((void **)&rootdn);
- slapi_ch_free((void **)&requestorCopy);
+ slapi_ch_free_string(&rootdn);
+ slapi_ch_free_string(&requestorCopy);
}
addauth=0;
diff --git a/ldap/servers/plugins/chainingdb/cb_instance.c b/ldap/servers/plugins/chainingdb/cb_instance.c
index ce7675b..86bb635 100644
--- a/ldap/servers/plugins/chainingdb/cb_instance.c
+++ b/ldap/servers/plugins/chainingdb/cb_instance.c
@@ -738,11 +738,11 @@ static int cb_instance_hosturl_set(void *arg, void *value, char *errorbuf, int p
if ((LDAP_SUCCESS == rc) && apply) {
- slapi_rwlock_wrlock(inst->rwl_config_lock);
-
- if (( phase != CB_CONFIG_PHASE_INITIALIZATION ) &&
- ( phase != CB_CONFIG_PHASE_STARTUP )) {
+ slapi_rwlock_wrlock(inst->rwl_config_lock);
+ if (( phase != CB_CONFIG_PHASE_INITIALIZATION ) &&
+ ( phase != CB_CONFIG_PHASE_STARTUP ))
+ {
/* Dynamic modification */
/* Don't free char * pointer now */
/* STore them in a waste basket */
@@ -766,17 +766,17 @@ static int cb_instance_hosturl_set(void *arg, void *value, char *errorbuf, int p
/* the url and update the configuration */
if ((ludp->lud_host==NULL) || (strlen(ludp->lud_host)==0)) {
- inst->pool->hostname=(char *)slapi_ch_strdup((char *)get_localhost_DNS());
+ inst->pool->hostname = get_localhost_DNS();
} else {
- inst->pool->hostname = slapi_ch_strdup( ludp->lud_host );
+ inst->pool->hostname = slapi_ch_strdup( ludp->lud_host );
}
- inst->pool->url = slapi_ch_strdup( url);
- inst->pool->secure = secure;
+ inst->pool->url = slapi_ch_strdup( url);
+ inst->pool->secure = secure;
if ((ludp->lud_port==0) && inst->pool->secure)
inst->pool->port=CB_LDAP_SECURE_PORT;
else
- inst->pool->port = ludp->lud_port;
+ inst->pool->port = ludp->lud_port;
/* Build a charray of <host>:<port> */
/* hostname is of the form <host>[:port] <host>[:port] */
diff --git a/ldap/servers/plugins/replication/repl5_replica.c b/ldap/servers/plugins/replication/repl5_replica.c
index 9394eee..f2c20c4 100644
--- a/ldap/servers/plugins/replication/repl5_replica.c
+++ b/ldap/servers/plugins/replication/repl5_replica.c
@@ -2318,6 +2318,7 @@ _replica_configure_ruv (Replica *r, PRBool isLocked)
"failed to recreate replica ruv tombstone entry"
" (%s); LDAP error - %d\n",
slapi_sdn_get_dn(r->repl_root), rc);
+ slapi_ch_free_string(&generation);
goto done;
}
}
@@ -2325,7 +2326,7 @@ _replica_configure_ruv (Replica *r, PRBool isLocked)
#undef RUV_UPDATE_FULL
}
- slapi_ch_free((void **)&generation);
+ slapi_ch_free_string(&generation);
return_value = 0;
}
else
diff --git a/ldap/servers/plugins/replication/repl5_replica_config.c b/ldap/servers/plugins/replication/repl5_replica_config.c
index c08efb1..130dfab 100644
--- a/ldap/servers/plugins/replication/repl5_replica_config.c
+++ b/ldap/servers/plugins/replication/repl5_replica_config.c
@@ -1205,8 +1205,6 @@ static int replica_execute_cl2ldif_task (Object *r, char *returntext)
}
PR_snprintf (fName, MAXPATHLEN, "%s/%s.ldif", clDir, replica_get_name (replica));
- slapi_ch_free_string (&clDir);
-
slapi_log_error(SLAPI_LOG_FATAL, repl_plugin_name,
"Beginning changelog export of replica \"%s\"\n",
replica_get_name(replica));
@@ -1225,6 +1223,8 @@ static int replica_execute_cl2ldif_task (Object *r, char *returntext)
rc = LDAP_OPERATIONS_ERROR;
}
bail:
+ slapi_ch_free_string (&clDir);
+
return rc;
}
@@ -1280,7 +1280,6 @@ static int replica_execute_ldif2cl_task (Object *r, char *returntext)
"Beginning changelog import of replica \"%s\"\n",
replica_get_name(replica));
imprc = cl5ImportLDIF (clDir, fName, rlist);
- slapi_ch_free_string (&clDir);
if (CL5_SUCCESS == imprc)
{
slapi_log_error(SLAPI_LOG_FATAL, repl_plugin_name,
@@ -1310,8 +1309,11 @@ static int replica_execute_ldif2cl_task (Object *r, char *returntext)
config.dir?config.dir:"null config dir");
rc = LDAP_OPERATIONS_ERROR;
}
+
bail:
+ slapi_ch_free_string(&clDir);
changelog5_config_done(&config);
+
/* if cl5ImportLDIF returned an error, report it first. */
return imprc?imprc:rc;
}
@@ -2278,9 +2280,12 @@ replica_send_cleanruv_task(Repl_Agmt *agmt, cleanruv_data *clean_data)
rc = ldap_modify_ext_s( ld, repl_dn, mods, NULL, NULL);
if(rc != LDAP_SUCCESS){
+ char *hostname = agmt_get_hostname(agmt);
+
cleanruv_log(clean_data->task, CLEANALLRUV_ID, "Failed to add CLEANRUV task (%s) to replica "
"(%s). You will need to manually run the CLEANRUV task on this replica (%s) error (%d)",
- repl_dn, agmt_get_long_name(agmt), agmt_get_hostname(agmt), rc);
+ repl_dn, agmt_get_long_name(agmt), hostname, rc);
+ slapi_ch_free_string(&hostname);
}
slapi_ch_free_string(&repl_dn);
slapi_sdn_free(&sdn);
diff --git a/ldap/servers/slapd/back-ldbm/upgrade.c b/ldap/servers/slapd/back-ldbm/upgrade.c
index 4f322fa..2c0d685 100644
--- a/ldap/servers/slapd/back-ldbm/upgrade.c
+++ b/ldap/servers/slapd/back-ldbm/upgrade.c
@@ -168,6 +168,7 @@ check_db_version( struct ldbminfo *li, int *action )
*action = 0;
dbversion_read(li, li->li_directory, &ldbmversion, &dataversion);
if (NULL == ldbmversion || '\0' == *ldbmversion) {
+ slapi_ch_free_string(&ldbmversion);
slapi_ch_free_string(&dataversion);
return 0;
}
@@ -251,6 +252,8 @@ check_db_inst_version( ldbm_instance *inst )
dbversion_read(inst->inst_li, inst_dirp, &ldbmversion, &dataversion);
if (NULL == ldbmversion || '\0' == *ldbmversion) {
+ slapi_ch_free_string(&ldbmversion);
+ slapi_ch_free_string(&dataversion);
return rval;
}
diff --git a/ldap/servers/slapd/main.c b/ldap/servers/slapd/main.c
index 0c5b2ab..dd1f88a 100644
--- a/ldap/servers/slapd/main.c
+++ b/ldap/servers/slapd/main.c
@@ -2959,7 +2959,7 @@ slapd_debug_level_string2level( const char *s )
char *cur, *next, *scopy;
level = 0;
- cur = scopy = slapi_ch_strdup( s );
+ scopy = slapi_ch_strdup( s );
for ( cur = scopy; cur != NULL; cur = next ) {
if (( next = strchr( cur, '+' )) != NULL ) {
@@ -2979,12 +2979,13 @@ slapd_debug_level_string2level( const char *s )
if ( NULL == slapd_debug_level_map[i].dle_string ) {
fprintf( stderr, "Unrecognized debug level \"%s\"\n", cur );
+ slapi_ch_free_string(&scopy);
return -1;
}
}
}
- slapi_ch_free( (void **)&scopy );
+ slapi_ch_free_string(&scopy);
return level;
}
diff --git a/ldap/servers/slapd/proxyauth.c b/ldap/servers/slapd/proxyauth.c
index 817adce..58c15d8 100644
--- a/ldap/servers/slapd/proxyauth.c
+++ b/ldap/servers/slapd/proxyauth.c
@@ -183,11 +183,11 @@ parse_LDAPProxyAuth(struct berval *spec_ber, int version, char **errtextp,
int
proxyauth_get_dn( Slapi_PBlock *pb, char **proxydnp, char **errtextp )
{
- char *dn = 0;
- LDAPProxyAuth *spec = 0;
- int rv, lderr = LDAP_SUCCESS; /* optimistic */
+ char *dn = 0;
+ LDAPProxyAuth *spec = 0;
+ int rv, lderr = LDAP_SUCCESS; /* optimistic */
- BEGIN
+ BEGIN
struct berval *spec_ber;
LDAPControl **controls;
int present;
@@ -223,29 +223,29 @@ proxyauth_get_dn( Slapi_PBlock *pb, char **proxydnp, char **errtextp )
if ( critical ) {
lderr = LDAP_UNAVAILABLE_CRITICAL_EXTENSION;
} else {
- lderr = rv;
- }
+ lderr = rv;
+ }
break;
}
dn = slapi_ch_strdup(spec->auth_dn);
if (slapi_dn_isroot(dn) ) {
- if (critical)
- lderr = LDAP_UNAVAILABLE_CRITICAL_EXTENSION;
- else
- lderr = LDAP_UNWILLING_TO_PERFORM;
+ if (critical)
+ lderr = LDAP_UNAVAILABLE_CRITICAL_EXTENSION;
+ else
+ lderr = LDAP_UNWILLING_TO_PERFORM;
*errtextp = "Proxy dn should not be rootdn";
break;
}
END
- if (spec) delete_LDAPProxyAuth(spec);
+ if (spec) delete_LDAPProxyAuth(spec);
if ( NULL != proxydnp ) {
*proxydnp = dn;
} else {
- slapi_ch_free( (void **)&dn );
+ slapi_ch_free_string(&dn);
}
return lderr;
10 years, 3 months
ldap/servers
by Mark Reynolds
ldap/servers/plugins/acl/aclplugin.c | 8 ++---
ldap/servers/plugins/chainingdb/cb_controls.c | 14 +++++----
ldap/servers/plugins/chainingdb/cb_instance.c | 18 ++++++------
ldap/servers/plugins/replication/repl5_replica.c | 3 +-
ldap/servers/plugins/replication/repl5_replica_config.c | 13 ++++++--
ldap/servers/slapd/back-ldbm/upgrade.c | 3 ++
ldap/servers/slapd/main.c | 5 ++-
ldap/servers/slapd/proxyauth.c | 24 ++++++++--------
8 files changed, 49 insertions(+), 39 deletions(-)
New commits:
commit 48c1f2afb047de272603c87e6b592dd681eb8d9d
Author: Mark Reynolds <mreynolds(a)redhat.com>
Date: Wed Mar 12 16:58:32 2014 -0400
Ticket 47740 - Fix coverity erorrs - Part 4
12498 - resource leak - /ldap/servers/plugins/chainingdn/cb_instance.c
12490 - resource leak - /ldap/servers/plugins/chainingdn/cb_controls.c
12489 - resource leak - /ldap/servers/plugins/replication/repl5_replica_config.c
12488 - resource leak - /ldap/servers/slapd/main.c
12485 - resource leak - /ldap/servers/plugins/replication/repl5_replica_config.c
12484 - resource leak - /ldap/servers/plugins/replication/repl5_replica_config.c
12483 - resource leak - /ldap/servers/slapd/back-ldbm/upgrade.c
12482 - resource leak - /ldap/servers/plugins/replication/repl5_replica.c
12481 - resource leak - /ldap/servers/plugins/acl/aclplugin.c
12476 - resource leak - /ldap/servers/slapd/back-ldbm/upgrade.c
12475 - resource leak - /ldap/servers/slapd/back-ldbm/upgrade.c
https://fedorahosted.org/389/ticket/47740
Reviewed by: nhosoi(Thanks!)
diff --git a/ldap/servers/plugins/acl/aclplugin.c b/ldap/servers/plugins/acl/aclplugin.c
index 8ae634c..a5ce149 100644
--- a/ldap/servers/plugins/acl/aclplugin.c
+++ b/ldap/servers/plugins/acl/aclplugin.c
@@ -197,7 +197,7 @@ aclplugin_preop_modify ( Slapi_PBlock *pb )
int
aclplugin_preop_common( Slapi_PBlock *pb )
{
- char *proxy_dn; /* id being assumed */
+ char *proxy_dn = NULL; /* id being assumed */
char *dn; /* proxy master */
char *errtext = NULL;
int lderr;
@@ -221,9 +221,7 @@ aclplugin_preop_common( Slapi_PBlock *pb )
* The proxy_dn is the id being assumed, while dn
* is the "proxy master".
*/
- proxy_dn = NULL;
- if ( LDAP_SUCCESS != ( lderr = proxyauth_get_dn( pb, &proxy_dn,
- &errtext ))) {
+ if ( LDAP_SUCCESS != ( lderr = proxyauth_get_dn( pb, &proxy_dn, &errtext ))) {
/*
* Fatal error -- send a result to the client and arrange to skip
* any further processing.
@@ -231,7 +229,7 @@ aclplugin_preop_common( Slapi_PBlock *pb )
slapi_send_ldap_result( pb, lderr, NULL, errtext, 0, NULL );
TNF_PROBE_1_DEBUG(aclplugin_preop_common_end ,"ACL","",
tnf_string,proxid_error,"");
-
+ slapi_ch_free_string(&proxy_dn);
return 1; /* skip any further processing */
}
slapi_pblock_get ( pb, SLAPI_REQUESTOR_DN, &dn );
diff --git a/ldap/servers/plugins/chainingdb/cb_controls.c b/ldap/servers/plugins/chainingdb/cb_controls.c
index 2a698a0..e1fc9c3 100644
--- a/ldap/servers/plugins/chainingdb/cb_controls.c
+++ b/ldap/servers/plugins/chainingdb/cb_controls.c
@@ -200,20 +200,22 @@ int cb_update_controls( Slapi_PBlock * pb,
char * requestor,*rootdn;
char * requestorCopy=NULL;
- rootdn=cb_get_rootdn();
+ rootdn = cb_get_rootdn();
slapi_pblock_get( pb, SLAPI_REQUESTOR_NDN, &requestor );
requestorCopy = slapi_ch_strdup(requestor);
slapi_dn_ignore_case(requestorCopy);
if (!strcmp( requestorCopy, rootdn )) { /* UTF8- aware */
slapi_log_error( SLAPI_LOG_PLUGIN,CB_PLUGIN_SUBSYSTEM,
- "Use of user <%s> incompatible with proxied auth. control\n",rootdn);
- rc=LDAP_UNAVAILABLE_CRITICAL_EXTENSION;
- slapi_ch_free((void **)&requestorCopy);
+ "Use of user <%s> incompatible with proxied auth. control\n",
+ rootdn);
+ rc = LDAP_UNAVAILABLE_CRITICAL_EXTENSION;
+ slapi_ch_free_string(&rootdn);
+ slapi_ch_free_string(&requestorCopy);
break;
}
- slapi_ch_free((void **)&rootdn);
- slapi_ch_free((void **)&requestorCopy);
+ slapi_ch_free_string(&rootdn);
+ slapi_ch_free_string(&requestorCopy);
}
addauth=0;
diff --git a/ldap/servers/plugins/chainingdb/cb_instance.c b/ldap/servers/plugins/chainingdb/cb_instance.c
index ce7675b..86bb635 100644
--- a/ldap/servers/plugins/chainingdb/cb_instance.c
+++ b/ldap/servers/plugins/chainingdb/cb_instance.c
@@ -738,11 +738,11 @@ static int cb_instance_hosturl_set(void *arg, void *value, char *errorbuf, int p
if ((LDAP_SUCCESS == rc) && apply) {
- slapi_rwlock_wrlock(inst->rwl_config_lock);
-
- if (( phase != CB_CONFIG_PHASE_INITIALIZATION ) &&
- ( phase != CB_CONFIG_PHASE_STARTUP )) {
+ slapi_rwlock_wrlock(inst->rwl_config_lock);
+ if (( phase != CB_CONFIG_PHASE_INITIALIZATION ) &&
+ ( phase != CB_CONFIG_PHASE_STARTUP ))
+ {
/* Dynamic modification */
/* Don't free char * pointer now */
/* STore them in a waste basket */
@@ -766,17 +766,17 @@ static int cb_instance_hosturl_set(void *arg, void *value, char *errorbuf, int p
/* the url and update the configuration */
if ((ludp->lud_host==NULL) || (strlen(ludp->lud_host)==0)) {
- inst->pool->hostname=(char *)slapi_ch_strdup((char *)get_localhost_DNS());
+ inst->pool->hostname = get_localhost_DNS();
} else {
- inst->pool->hostname = slapi_ch_strdup( ludp->lud_host );
+ inst->pool->hostname = slapi_ch_strdup( ludp->lud_host );
}
- inst->pool->url = slapi_ch_strdup( url);
- inst->pool->secure = secure;
+ inst->pool->url = slapi_ch_strdup( url);
+ inst->pool->secure = secure;
if ((ludp->lud_port==0) && inst->pool->secure)
inst->pool->port=CB_LDAP_SECURE_PORT;
else
- inst->pool->port = ludp->lud_port;
+ inst->pool->port = ludp->lud_port;
/* Build a charray of <host>:<port> */
/* hostname is of the form <host>[:port] <host>[:port] */
diff --git a/ldap/servers/plugins/replication/repl5_replica.c b/ldap/servers/plugins/replication/repl5_replica.c
index 3eeb322..69b4690 100644
--- a/ldap/servers/plugins/replication/repl5_replica.c
+++ b/ldap/servers/plugins/replication/repl5_replica.c
@@ -2319,6 +2319,7 @@ _replica_configure_ruv (Replica *r, PRBool isLocked)
"failed to recreate replica ruv tombstone entry"
" (%s); LDAP error - %d\n",
slapi_sdn_get_dn(r->repl_root), rc);
+ slapi_ch_free_string(&generation);
goto done;
}
}
@@ -2326,7 +2327,7 @@ _replica_configure_ruv (Replica *r, PRBool isLocked)
#undef RUV_UPDATE_FULL
}
- slapi_ch_free((void **)&generation);
+ slapi_ch_free_string(&generation);
return_value = 0;
}
else
diff --git a/ldap/servers/plugins/replication/repl5_replica_config.c b/ldap/servers/plugins/replication/repl5_replica_config.c
index 6374b81..49bd906 100644
--- a/ldap/servers/plugins/replication/repl5_replica_config.c
+++ b/ldap/servers/plugins/replication/repl5_replica_config.c
@@ -1201,8 +1201,6 @@ static int replica_execute_cl2ldif_task (Object *r, char *returntext)
}
PR_snprintf (fName, MAXPATHLEN, "%s/%s.ldif", clDir, replica_get_name (replica));
- slapi_ch_free_string (&clDir);
-
slapi_log_error(SLAPI_LOG_FATAL, repl_plugin_name,
"Beginning changelog export of replica \"%s\"\n",
replica_get_name(replica));
@@ -1221,6 +1219,8 @@ static int replica_execute_cl2ldif_task (Object *r, char *returntext)
rc = LDAP_OPERATIONS_ERROR;
}
bail:
+ slapi_ch_free_string (&clDir);
+
return rc;
}
@@ -1276,7 +1276,6 @@ static int replica_execute_ldif2cl_task (Object *r, char *returntext)
"Beginning changelog import of replica \"%s\"\n",
replica_get_name(replica));
imprc = cl5ImportLDIF (clDir, fName, rlist);
- slapi_ch_free_string (&clDir);
if (CL5_SUCCESS == imprc)
{
slapi_log_error(SLAPI_LOG_FATAL, repl_plugin_name,
@@ -1306,8 +1305,11 @@ static int replica_execute_ldif2cl_task (Object *r, char *returntext)
config.dir?config.dir:"null config dir");
rc = LDAP_OPERATIONS_ERROR;
}
+
bail:
+ slapi_ch_free_string(&clDir);
changelog5_config_done(&config);
+
/* if cl5ImportLDIF returned an error, report it first. */
return imprc?imprc:rc;
}
@@ -2274,9 +2276,12 @@ replica_send_cleanruv_task(Repl_Agmt *agmt, cleanruv_data *clean_data)
rc = ldap_modify_ext_s( ld, repl_dn, mods, NULL, NULL);
if(rc != LDAP_SUCCESS){
+ char *hostname = agmt_get_hostname(agmt);
+
cleanruv_log(clean_data->task, CLEANALLRUV_ID, "Failed to add CLEANRUV task (%s) to replica "
"(%s). You will need to manually run the CLEANRUV task on this replica (%s) error (%d)",
- repl_dn, agmt_get_long_name(agmt), agmt_get_hostname(agmt), rc);
+ repl_dn, agmt_get_long_name(agmt), hostname, rc);
+ slapi_ch_free_string(&hostname);
}
slapi_ch_free_string(&repl_dn);
slapi_sdn_free(&sdn);
diff --git a/ldap/servers/slapd/back-ldbm/upgrade.c b/ldap/servers/slapd/back-ldbm/upgrade.c
index 4f322fa..2c0d685 100644
--- a/ldap/servers/slapd/back-ldbm/upgrade.c
+++ b/ldap/servers/slapd/back-ldbm/upgrade.c
@@ -168,6 +168,7 @@ check_db_version( struct ldbminfo *li, int *action )
*action = 0;
dbversion_read(li, li->li_directory, &ldbmversion, &dataversion);
if (NULL == ldbmversion || '\0' == *ldbmversion) {
+ slapi_ch_free_string(&ldbmversion);
slapi_ch_free_string(&dataversion);
return 0;
}
@@ -251,6 +252,8 @@ check_db_inst_version( ldbm_instance *inst )
dbversion_read(inst->inst_li, inst_dirp, &ldbmversion, &dataversion);
if (NULL == ldbmversion || '\0' == *ldbmversion) {
+ slapi_ch_free_string(&ldbmversion);
+ slapi_ch_free_string(&dataversion);
return rval;
}
diff --git a/ldap/servers/slapd/main.c b/ldap/servers/slapd/main.c
index 0c5b2ab..dd1f88a 100644
--- a/ldap/servers/slapd/main.c
+++ b/ldap/servers/slapd/main.c
@@ -2959,7 +2959,7 @@ slapd_debug_level_string2level( const char *s )
char *cur, *next, *scopy;
level = 0;
- cur = scopy = slapi_ch_strdup( s );
+ scopy = slapi_ch_strdup( s );
for ( cur = scopy; cur != NULL; cur = next ) {
if (( next = strchr( cur, '+' )) != NULL ) {
@@ -2979,12 +2979,13 @@ slapd_debug_level_string2level( const char *s )
if ( NULL == slapd_debug_level_map[i].dle_string ) {
fprintf( stderr, "Unrecognized debug level \"%s\"\n", cur );
+ slapi_ch_free_string(&scopy);
return -1;
}
}
}
- slapi_ch_free( (void **)&scopy );
+ slapi_ch_free_string(&scopy);
return level;
}
diff --git a/ldap/servers/slapd/proxyauth.c b/ldap/servers/slapd/proxyauth.c
index 817adce..58c15d8 100644
--- a/ldap/servers/slapd/proxyauth.c
+++ b/ldap/servers/slapd/proxyauth.c
@@ -183,11 +183,11 @@ parse_LDAPProxyAuth(struct berval *spec_ber, int version, char **errtextp,
int
proxyauth_get_dn( Slapi_PBlock *pb, char **proxydnp, char **errtextp )
{
- char *dn = 0;
- LDAPProxyAuth *spec = 0;
- int rv, lderr = LDAP_SUCCESS; /* optimistic */
+ char *dn = 0;
+ LDAPProxyAuth *spec = 0;
+ int rv, lderr = LDAP_SUCCESS; /* optimistic */
- BEGIN
+ BEGIN
struct berval *spec_ber;
LDAPControl **controls;
int present;
@@ -223,29 +223,29 @@ proxyauth_get_dn( Slapi_PBlock *pb, char **proxydnp, char **errtextp )
if ( critical ) {
lderr = LDAP_UNAVAILABLE_CRITICAL_EXTENSION;
} else {
- lderr = rv;
- }
+ lderr = rv;
+ }
break;
}
dn = slapi_ch_strdup(spec->auth_dn);
if (slapi_dn_isroot(dn) ) {
- if (critical)
- lderr = LDAP_UNAVAILABLE_CRITICAL_EXTENSION;
- else
- lderr = LDAP_UNWILLING_TO_PERFORM;
+ if (critical)
+ lderr = LDAP_UNAVAILABLE_CRITICAL_EXTENSION;
+ else
+ lderr = LDAP_UNWILLING_TO_PERFORM;
*errtextp = "Proxy dn should not be rootdn";
break;
}
END
- if (spec) delete_LDAPProxyAuth(spec);
+ if (spec) delete_LDAPProxyAuth(spec);
if ( NULL != proxydnp ) {
*proxydnp = dn;
} else {
- slapi_ch_free( (void **)&dn );
+ slapi_ch_free_string(&dn);
}
return lderr;
10 years, 3 months
Branch '389-ds-base-1.2.11' - ldap/servers
by Mark Reynolds
ldap/servers/plugins/replication/legacy_consumer.c | 10 +--
ldap/servers/slapd/back-ldbm/import-threads.c | 1
ldap/servers/slapd/mapping_tree.c | 16 +++++
ldap/servers/slapd/passwd_extop.c | 4 -
ldap/servers/slapd/tools/mmldif.c | 2
ldap/servers/slapd/tools/pwenc.c | 4 +
ldap/servers/slapd/tools/rsearch/sdattable.c | 58 +++++++++++++--------
7 files changed, 65 insertions(+), 30 deletions(-)
New commits:
commit fd8668bcf47935a4fb90d782badf6c8bf07f6c94
Author: Mark Reynolds <mreynolds(a)redhat.com>
Date: Wed Mar 12 14:38:50 2014 -0400
Ticket 47640 - Fix coverity issues - part 3
12504 - resource leak - /ldap/servers/slapd/back-ldbm/import-threads.c
12499 - resource leak - /ldap/servers/slapd/passwd_extop.c
12497 - resource leak - /ldap/servers/slapd/mapping_tree.c
12496 - resource leak - /ldap/servers/slapd/mapping_tree.c
12495 - resource leak - /ldap/servers/plugins/replication/legacy_consumer.c
12493 - resource leak - /ldap/servers/slapd/tools/rsearch/sdattable.c
12492 - resource leak - /ldap/servers/slapd/tools/pwenc.c
12491 - resource leak - /ldap/servers/slapd/tools/mmldif.c
https://fedorahosted.org/389/ticket/47740
Reviewed by: rmeggins(Thanks!)
(cherry picked from commit ff78177452f1ac3da6039640815cc2eaf55b0b40)
(cherry picked from commit 2b9788b7d282b055b6f1945eb3f3b5c784d779fc)
diff --git a/ldap/servers/plugins/replication/legacy_consumer.c b/ldap/servers/plugins/replication/legacy_consumer.c
index 2440ce7..aa5a9b5 100644
--- a/ldap/servers/plugins/replication/legacy_consumer.c
+++ b/ldap/servers/plugins/replication/legacy_consumer.c
@@ -371,11 +371,12 @@ legacy_consumer_config_modify (Slapi_PBlock *pb, Slapi_Entry* entryBefore, Slapi
{
if (mod_type == LDAP_MOD_REPLACE)
{
+ slapi_ch_free_string(&legacy_consumer_replicationpw);
legacy_consumer_replicationpw = config_copy_strval(config_attr_value);
}
else if (mod_type == LDAP_MOD_DELETE)
{
- legacy_consumer_replicationpw = NULL;
+ slapi_ch_free_string(&legacy_consumer_replicationpw);
}
else if (mod_type == LDAP_MOD_ADD)
{
@@ -387,6 +388,7 @@ legacy_consumer_config_modify (Slapi_PBlock *pb, Slapi_Entry* entryBefore, Slapi
}
else
{
+ slapi_ch_free_string(&legacy_consumer_replicationpw);
legacy_consumer_replicationpw = config_copy_strval(config_attr_value);
}
}
@@ -419,11 +421,8 @@ legacy_consumer_config_delete (Slapi_PBlock *pb, Slapi_Entry* e, Slapi_Entry* en
slapi_rwlock_wrlock (legacy_consumer_config_lock);
if (legacy_consumer_replicationdn)
slapi_sdn_free (&legacy_consumer_replicationdn);
- if (legacy_consumer_replicationpw)
- slapi_ch_free ((void**)&legacy_consumer_replicationpw);
-
+ slapi_ch_free_string(&legacy_consumer_replicationpw);
legacy_consumer_replicationdn = NULL;
- legacy_consumer_replicationpw = NULL;
slapi_rwlock_unlock (legacy_consumer_config_lock);
*returncode = LDAP_SUCCESS;
@@ -446,6 +445,7 @@ legacy_consumer_extract_config(Slapi_Entry* entry, char *returntext)
legacy_consumer_replicationdn = slapi_sdn_new_dn_passin (arg);
arg= slapi_entry_attr_get_charptr(entry,CONFIG_LEGACY_REPLICATIONPW_ATTRIBUTE);
+ slapi_ch_free_string(&legacy_consumer_replicationpw);
legacy_consumer_replicationpw = arg;
slapi_rwlock_unlock (legacy_consumer_config_lock);
diff --git a/ldap/servers/slapd/back-ldbm/import-threads.c b/ldap/servers/slapd/back-ldbm/import-threads.c
index c7d3444..d30936e 100644
--- a/ldap/servers/slapd/back-ldbm/import-threads.c
+++ b/ldap/servers/slapd/back-ldbm/import-threads.c
@@ -2256,6 +2256,7 @@ import_foreman(void *param)
"of the duplicated entry %s; "
"Entry ID: %d",
orig_dn, fi->entry->ep_id);
+ slapi_ch_free_string(&orig_dn);
goto cont;
}
new_entrydn = slapi_attr_new();
diff --git a/ldap/servers/slapd/mapping_tree.c b/ldap/servers/slapd/mapping_tree.c
index 19c5708..12d9205 100644
--- a/ldap/servers/slapd/mapping_tree.c
+++ b/ldap/servers/slapd/mapping_tree.c
@@ -1110,6 +1110,8 @@ int mapping_tree_entry_modify_callback(Slapi_PBlock *pb, Slapi_Entry* entryBefor
"Error: could not find parent for %s\n",
slapi_entry_get_dn(entryAfter), 0, 0);
slapi_sdn_free(&subtree);
+ slapi_ch_free_string(&plugin_fct);
+ slapi_ch_free_string(&plugin_lib);
*returncode = LDAP_UNWILLING_TO_PERFORM;
return SLAPI_DSE_CALLBACK_ERROR;
}
@@ -1148,6 +1150,8 @@ int mapping_tree_entry_modify_callback(Slapi_PBlock *pb, Slapi_Entry* entryBefor
{
free_mapping_tree_node_arrays(&backends, &be_names, &be_states, &be_list_count);
slapi_sdn_free(&subtree);
+ slapi_ch_free_string(&plugin_fct);
+ slapi_ch_free_string(&plugin_lib);
*returncode = LDAP_UNWILLING_TO_PERFORM;
return SLAPI_DSE_CALLBACK_ERROR;
}
@@ -1161,6 +1165,8 @@ int mapping_tree_entry_modify_callback(Slapi_PBlock *pb, Slapi_Entry* entryBefor
mtn_unlock();
free_mapping_tree_node_arrays(&backends, &be_names, &be_states, &be_list_count);
slapi_sdn_free(&subtree);
+ slapi_ch_free_string(&plugin_fct);
+ slapi_ch_free_string(&plugin_lib);
return SLAPI_DSE_CALLBACK_ERROR;
}
@@ -1189,12 +1195,16 @@ int mapping_tree_entry_modify_callback(Slapi_PBlock *pb, Slapi_Entry* entryBefor
PR_snprintf(returntext, SLAPI_DSE_RETURNTEXT_SIZE, "must use replace operation to change state\n");
*returncode = LDAP_UNWILLING_TO_PERFORM;
slapi_sdn_free(&subtree);
+ slapi_ch_free_string(&plugin_fct);
+ slapi_ch_free_string(&plugin_lib);
return SLAPI_DSE_CALLBACK_ERROR;
}
if ((mods[i]->mod_bvalues == NULL) || (mods[i]->mod_bvalues[0] == NULL))
{
slapi_sdn_free(&subtree);
*returncode = LDAP_OPERATIONS_ERROR;
+ slapi_ch_free_string(&plugin_fct);
+ slapi_ch_free_string(&plugin_lib);
return SLAPI_DSE_CALLBACK_ERROR;
}
@@ -1208,6 +1218,8 @@ int mapping_tree_entry_modify_callback(Slapi_PBlock *pb, Slapi_Entry* entryBefor
{
PR_snprintf(returntext, SLAPI_DSE_RETURNTEXT_SIZE, "need to set nsslapd-backend before moving to backend state\n");
slapi_sdn_free(&subtree);
+ slapi_ch_free_string(&plugin_fct);
+ slapi_ch_free_string(&plugin_lib);
*returncode = LDAP_UNWILLING_TO_PERFORM;
return SLAPI_DSE_CALLBACK_ERROR;
}
@@ -1220,6 +1232,8 @@ int mapping_tree_entry_modify_callback(Slapi_PBlock *pb, Slapi_Entry* entryBefor
{
PR_snprintf(returntext, SLAPI_DSE_RETURNTEXT_SIZE, "need to set nsslapd-referral before moving to referral state\n");
slapi_sdn_free(&subtree);
+ slapi_ch_free_string(&plugin_fct);
+ slapi_ch_free_string(&plugin_lib);
*returncode = LDAP_UNWILLING_TO_PERFORM;
return SLAPI_DSE_CALLBACK_ERROR;
}
@@ -1258,6 +1272,8 @@ int mapping_tree_entry_modify_callback(Slapi_PBlock *pb, Slapi_Entry* entryBefor
*returncode = LDAP_UNWILLING_TO_PERFORM;
mtn_unlock();
slapi_sdn_free(&subtree);
+ slapi_ch_free_string(&plugin_fct);
+ slapi_ch_free_string(&plugin_lib);
return SLAPI_DSE_CALLBACK_ERROR;
}
diff --git a/ldap/servers/slapd/passwd_extop.c b/ldap/servers/slapd/passwd_extop.c
index 4aebee3..9ad470f 100644
--- a/ldap/servers/slapd/passwd_extop.c
+++ b/ldap/servers/slapd/passwd_extop.c
@@ -905,7 +905,6 @@ static char *passwd_name_list[] = {
int passwd_modify_init( Slapi_PBlock *pb )
{
char **argv;
- char *oid;
/* Get the arguments appended to the plugin extendedop directive. The first argument
* (after the standard arguments for the directive) should contain the OID of the
@@ -924,9 +923,8 @@ int passwd_modify_init( Slapi_PBlock *pb )
"OID is missing or is not %s\n", EXTOP_PASSWD_OID );
return( -1 );
} else {
- oid = slapi_ch_strdup( argv[0] );
slapi_log_error( SLAPI_LOG_PLUGIN, "passwd_modify_init",
- "Registering plug-in for Password Modify extended op %s.\n", oid );
+ "Registering plug-in for Password Modify extended op %s.\n", argv[0] /* oid */);
}
/* Register the plug-in function as an extended operation
diff --git a/ldap/servers/slapd/tools/mmldif.c b/ldap/servers/slapd/tools/mmldif.c
index 1f01976..4213e65 100644
--- a/ldap/servers/slapd/tools/mmldif.c
+++ b/ldap/servers/slapd/tools/mmldif.c
@@ -659,6 +659,7 @@ int mm_init(int argc, char * argv[])
slapd_ldap_debug = 65535;
break;
case 'o':
+ if(ofn) free (ofn);
ofn = strdup(optarg);
break;
case 'h':
@@ -677,6 +678,7 @@ int mm_init(int argc, char * argv[])
ofp = fopen(ofn, "w");
if (ofp == NULL) {
perror(ofn);
+ free(ofn);
return -1;
}
free(ofn);
diff --git a/ldap/servers/slapd/tools/pwenc.c b/ldap/servers/slapd/tools/pwenc.c
index 221398c..34cfe1b 100644
--- a/ldap/servers/slapd/tools/pwenc.c
+++ b/ldap/servers/slapd/tools/pwenc.c
@@ -140,8 +140,10 @@ init_config(char *configdir)
abs_configdir = rel2abspath( configdir );
if ( config_set_configdir( "configdir (-D)", abs_configdir,
- errorbuf, 1) != LDAP_SUCCESS ) {
+ errorbuf, 1) != LDAP_SUCCESS )
+ {
fprintf( stderr, "%s\n", errorbuf );
+ slapi_ch_free_string(&abs_configdir);
return( NULL );
}
slapi_ch_free_string(&abs_configdir);
diff --git a/ldap/servers/slapd/tools/rsearch/sdattable.c b/ldap/servers/slapd/tools/rsearch/sdattable.c
index c0274d0..18417a1 100644
--- a/ldap/servers/slapd/tools/rsearch/sdattable.c
+++ b/ldap/servers/slapd/tools/rsearch/sdattable.c
@@ -141,27 +141,43 @@ int sdt_load(SDatTable *sdt, const char *filename)
if (!fd) return 0;
while (PR_Available(fd) > 0) {
- int rval;
- char temp[256];
- char *dn = NULL;
- char *uid = NULL;
- while (!(rval = PR_GetLine(fd, temp, 256))) {
- char *p;
- if (!strncasecmp(temp, "dn:", 3)) {
- for (p = temp + 4; *p == ' ' || *p == '\t'; p++) ;
- dn = strdup(p);
- if (!dn) break;
- } else if (!strncasecmp(temp, "uid:", 4)) {
- for (p = temp + 5; *p == ' ' || *p == '\t'; p++) ;
- uid = strdup(p);
- if (!uid) break;
- }
- if (uid) { /* dn should come earlier than uid */
- if (!sdt_push(sdt, dn, uid)) goto out;
- break;
- }
- }
- if (rval) break; /* PR_GetLine failed */
+ int rval;
+ int pushed = 0;
+ char temp[256];
+ char *dn = NULL;
+ char *uid = NULL;
+ while (!(rval = PR_GetLine(fd, temp, 256))) {
+ char *p;
+ if (!strncasecmp(temp, "dn:", 3)) {
+ for (p = temp + 4; *p == ' ' || *p == '\t'; p++) ;
+ dn = strdup(p);
+ if (!dn) break;
+ } else if (!strncasecmp(temp, "uid:", 4)) {
+ for (p = temp + 5; *p == ' ' || *p == '\t'; p++) ;
+ uid = strdup(p);
+ if (!uid) break;
+ }
+ if (uid) {
+ /* dn should come earlier than uid - so both dn and uid must be set. */
+ if (!sdt_push(sdt, dn, uid)){
+ /* failure, free the dn and uid */
+ free(dn);
+ free(uid);
+ goto out;
+ }
+ pushed = 1;
+ break;
+ }
+ }
+ if(!pushed){
+ /*
+ * Entry might not have been a user entry with a uid,
+ * so free the dn just in case.
+ */
+ if(dn)
+ free(dn);
+ }
+ if (rval) break; /* PR_GetLine failed */
}
out:
PR_Close(fd);
10 years, 3 months
Branch '389-ds-base-1.3.0' - ldap/servers
by Mark Reynolds
ldap/servers/plugins/replication/legacy_consumer.c | 10 +--
ldap/servers/slapd/back-ldbm/import-threads.c | 1
ldap/servers/slapd/mapping_tree.c | 16 +++++
ldap/servers/slapd/passwd_extop.c | 4 -
ldap/servers/slapd/tools/mmldif.c | 2
ldap/servers/slapd/tools/pwenc.c | 4 +
ldap/servers/slapd/tools/rsearch/sdattable.c | 58 +++++++++++++--------
7 files changed, 65 insertions(+), 30 deletions(-)
New commits:
commit 2b9788b7d282b055b6f1945eb3f3b5c784d779fc
Author: Mark Reynolds <mreynolds(a)redhat.com>
Date: Wed Mar 12 14:38:50 2014 -0400
Ticket 47640 - Fix coverity issues - part 3
12504 - resource leak - /ldap/servers/slapd/back-ldbm/import-threads.c
12499 - resource leak - /ldap/servers/slapd/passwd_extop.c
12497 - resource leak - /ldap/servers/slapd/mapping_tree.c
12496 - resource leak - /ldap/servers/slapd/mapping_tree.c
12495 - resource leak - /ldap/servers/plugins/replication/legacy_consumer.c
12493 - resource leak - /ldap/servers/slapd/tools/rsearch/sdattable.c
12492 - resource leak - /ldap/servers/slapd/tools/pwenc.c
12491 - resource leak - /ldap/servers/slapd/tools/mmldif.c
https://fedorahosted.org/389/ticket/47740
Reviewed by: rmeggins(Thanks!)
(cherry picked from commit ff78177452f1ac3da6039640815cc2eaf55b0b40)
diff --git a/ldap/servers/plugins/replication/legacy_consumer.c b/ldap/servers/plugins/replication/legacy_consumer.c
index 2440ce7..aa5a9b5 100644
--- a/ldap/servers/plugins/replication/legacy_consumer.c
+++ b/ldap/servers/plugins/replication/legacy_consumer.c
@@ -371,11 +371,12 @@ legacy_consumer_config_modify (Slapi_PBlock *pb, Slapi_Entry* entryBefore, Slapi
{
if (mod_type == LDAP_MOD_REPLACE)
{
+ slapi_ch_free_string(&legacy_consumer_replicationpw);
legacy_consumer_replicationpw = config_copy_strval(config_attr_value);
}
else if (mod_type == LDAP_MOD_DELETE)
{
- legacy_consumer_replicationpw = NULL;
+ slapi_ch_free_string(&legacy_consumer_replicationpw);
}
else if (mod_type == LDAP_MOD_ADD)
{
@@ -387,6 +388,7 @@ legacy_consumer_config_modify (Slapi_PBlock *pb, Slapi_Entry* entryBefore, Slapi
}
else
{
+ slapi_ch_free_string(&legacy_consumer_replicationpw);
legacy_consumer_replicationpw = config_copy_strval(config_attr_value);
}
}
@@ -419,11 +421,8 @@ legacy_consumer_config_delete (Slapi_PBlock *pb, Slapi_Entry* e, Slapi_Entry* en
slapi_rwlock_wrlock (legacy_consumer_config_lock);
if (legacy_consumer_replicationdn)
slapi_sdn_free (&legacy_consumer_replicationdn);
- if (legacy_consumer_replicationpw)
- slapi_ch_free ((void**)&legacy_consumer_replicationpw);
-
+ slapi_ch_free_string(&legacy_consumer_replicationpw);
legacy_consumer_replicationdn = NULL;
- legacy_consumer_replicationpw = NULL;
slapi_rwlock_unlock (legacy_consumer_config_lock);
*returncode = LDAP_SUCCESS;
@@ -446,6 +445,7 @@ legacy_consumer_extract_config(Slapi_Entry* entry, char *returntext)
legacy_consumer_replicationdn = slapi_sdn_new_dn_passin (arg);
arg= slapi_entry_attr_get_charptr(entry,CONFIG_LEGACY_REPLICATIONPW_ATTRIBUTE);
+ slapi_ch_free_string(&legacy_consumer_replicationpw);
legacy_consumer_replicationpw = arg;
slapi_rwlock_unlock (legacy_consumer_config_lock);
diff --git a/ldap/servers/slapd/back-ldbm/import-threads.c b/ldap/servers/slapd/back-ldbm/import-threads.c
index 5667acb..0bdfedb 100644
--- a/ldap/servers/slapd/back-ldbm/import-threads.c
+++ b/ldap/servers/slapd/back-ldbm/import-threads.c
@@ -2256,6 +2256,7 @@ import_foreman(void *param)
"of the duplicated entry %s; "
"Entry ID: %d",
orig_dn, fi->entry->ep_id);
+ slapi_ch_free_string(&orig_dn);
goto cont;
}
new_entrydn = slapi_attr_new();
diff --git a/ldap/servers/slapd/mapping_tree.c b/ldap/servers/slapd/mapping_tree.c
index 9336d7c..0b46866 100644
--- a/ldap/servers/slapd/mapping_tree.c
+++ b/ldap/servers/slapd/mapping_tree.c
@@ -1110,6 +1110,8 @@ int mapping_tree_entry_modify_callback(Slapi_PBlock *pb, Slapi_Entry* entryBefor
"Error: could not find parent for %s\n",
slapi_entry_get_dn(entryAfter), 0, 0);
slapi_sdn_free(&subtree);
+ slapi_ch_free_string(&plugin_fct);
+ slapi_ch_free_string(&plugin_lib);
*returncode = LDAP_UNWILLING_TO_PERFORM;
return SLAPI_DSE_CALLBACK_ERROR;
}
@@ -1148,6 +1150,8 @@ int mapping_tree_entry_modify_callback(Slapi_PBlock *pb, Slapi_Entry* entryBefor
{
free_mapping_tree_node_arrays(&backends, &be_names, &be_states, &be_list_count);
slapi_sdn_free(&subtree);
+ slapi_ch_free_string(&plugin_fct);
+ slapi_ch_free_string(&plugin_lib);
*returncode = LDAP_UNWILLING_TO_PERFORM;
return SLAPI_DSE_CALLBACK_ERROR;
}
@@ -1161,6 +1165,8 @@ int mapping_tree_entry_modify_callback(Slapi_PBlock *pb, Slapi_Entry* entryBefor
mtn_unlock();
free_mapping_tree_node_arrays(&backends, &be_names, &be_states, &be_list_count);
slapi_sdn_free(&subtree);
+ slapi_ch_free_string(&plugin_fct);
+ slapi_ch_free_string(&plugin_lib);
return SLAPI_DSE_CALLBACK_ERROR;
}
@@ -1189,12 +1195,16 @@ int mapping_tree_entry_modify_callback(Slapi_PBlock *pb, Slapi_Entry* entryBefor
PR_snprintf(returntext, SLAPI_DSE_RETURNTEXT_SIZE, "must use replace operation to change state\n");
*returncode = LDAP_UNWILLING_TO_PERFORM;
slapi_sdn_free(&subtree);
+ slapi_ch_free_string(&plugin_fct);
+ slapi_ch_free_string(&plugin_lib);
return SLAPI_DSE_CALLBACK_ERROR;
}
if ((mods[i]->mod_bvalues == NULL) || (mods[i]->mod_bvalues[0] == NULL))
{
slapi_sdn_free(&subtree);
*returncode = LDAP_OPERATIONS_ERROR;
+ slapi_ch_free_string(&plugin_fct);
+ slapi_ch_free_string(&plugin_lib);
return SLAPI_DSE_CALLBACK_ERROR;
}
@@ -1208,6 +1218,8 @@ int mapping_tree_entry_modify_callback(Slapi_PBlock *pb, Slapi_Entry* entryBefor
{
PR_snprintf(returntext, SLAPI_DSE_RETURNTEXT_SIZE, "need to set nsslapd-backend before moving to backend state\n");
slapi_sdn_free(&subtree);
+ slapi_ch_free_string(&plugin_fct);
+ slapi_ch_free_string(&plugin_lib);
*returncode = LDAP_UNWILLING_TO_PERFORM;
return SLAPI_DSE_CALLBACK_ERROR;
}
@@ -1220,6 +1232,8 @@ int mapping_tree_entry_modify_callback(Slapi_PBlock *pb, Slapi_Entry* entryBefor
{
PR_snprintf(returntext, SLAPI_DSE_RETURNTEXT_SIZE, "need to set nsslapd-referral before moving to referral state\n");
slapi_sdn_free(&subtree);
+ slapi_ch_free_string(&plugin_fct);
+ slapi_ch_free_string(&plugin_lib);
*returncode = LDAP_UNWILLING_TO_PERFORM;
return SLAPI_DSE_CALLBACK_ERROR;
}
@@ -1258,6 +1272,8 @@ int mapping_tree_entry_modify_callback(Slapi_PBlock *pb, Slapi_Entry* entryBefor
*returncode = LDAP_UNWILLING_TO_PERFORM;
mtn_unlock();
slapi_sdn_free(&subtree);
+ slapi_ch_free_string(&plugin_fct);
+ slapi_ch_free_string(&plugin_lib);
return SLAPI_DSE_CALLBACK_ERROR;
}
diff --git a/ldap/servers/slapd/passwd_extop.c b/ldap/servers/slapd/passwd_extop.c
index af13bd8..999a7af 100644
--- a/ldap/servers/slapd/passwd_extop.c
+++ b/ldap/servers/slapd/passwd_extop.c
@@ -904,7 +904,6 @@ static char *passwd_name_list[] = {
int passwd_modify_init( Slapi_PBlock *pb )
{
char **argv;
- char *oid;
/* Get the arguments appended to the plugin extendedop directive. The first argument
* (after the standard arguments for the directive) should contain the OID of the
@@ -923,9 +922,8 @@ int passwd_modify_init( Slapi_PBlock *pb )
"OID is missing or is not %s\n", EXTOP_PASSWD_OID );
return( -1 );
} else {
- oid = slapi_ch_strdup( argv[0] );
slapi_log_error( SLAPI_LOG_PLUGIN, "passwd_modify_init",
- "Registering plug-in for Password Modify extended op %s.\n", oid );
+ "Registering plug-in for Password Modify extended op %s.\n", argv[0] /* oid */);
}
/* Register the plug-in function as an extended operation
diff --git a/ldap/servers/slapd/tools/mmldif.c b/ldap/servers/slapd/tools/mmldif.c
index 1f01976..4213e65 100644
--- a/ldap/servers/slapd/tools/mmldif.c
+++ b/ldap/servers/slapd/tools/mmldif.c
@@ -659,6 +659,7 @@ int mm_init(int argc, char * argv[])
slapd_ldap_debug = 65535;
break;
case 'o':
+ if(ofn) free (ofn);
ofn = strdup(optarg);
break;
case 'h':
@@ -677,6 +678,7 @@ int mm_init(int argc, char * argv[])
ofp = fopen(ofn, "w");
if (ofp == NULL) {
perror(ofn);
+ free(ofn);
return -1;
}
free(ofn);
diff --git a/ldap/servers/slapd/tools/pwenc.c b/ldap/servers/slapd/tools/pwenc.c
index 221398c..34cfe1b 100644
--- a/ldap/servers/slapd/tools/pwenc.c
+++ b/ldap/servers/slapd/tools/pwenc.c
@@ -140,8 +140,10 @@ init_config(char *configdir)
abs_configdir = rel2abspath( configdir );
if ( config_set_configdir( "configdir (-D)", abs_configdir,
- errorbuf, 1) != LDAP_SUCCESS ) {
+ errorbuf, 1) != LDAP_SUCCESS )
+ {
fprintf( stderr, "%s\n", errorbuf );
+ slapi_ch_free_string(&abs_configdir);
return( NULL );
}
slapi_ch_free_string(&abs_configdir);
diff --git a/ldap/servers/slapd/tools/rsearch/sdattable.c b/ldap/servers/slapd/tools/rsearch/sdattable.c
index c0274d0..18417a1 100644
--- a/ldap/servers/slapd/tools/rsearch/sdattable.c
+++ b/ldap/servers/slapd/tools/rsearch/sdattable.c
@@ -141,27 +141,43 @@ int sdt_load(SDatTable *sdt, const char *filename)
if (!fd) return 0;
while (PR_Available(fd) > 0) {
- int rval;
- char temp[256];
- char *dn = NULL;
- char *uid = NULL;
- while (!(rval = PR_GetLine(fd, temp, 256))) {
- char *p;
- if (!strncasecmp(temp, "dn:", 3)) {
- for (p = temp + 4; *p == ' ' || *p == '\t'; p++) ;
- dn = strdup(p);
- if (!dn) break;
- } else if (!strncasecmp(temp, "uid:", 4)) {
- for (p = temp + 5; *p == ' ' || *p == '\t'; p++) ;
- uid = strdup(p);
- if (!uid) break;
- }
- if (uid) { /* dn should come earlier than uid */
- if (!sdt_push(sdt, dn, uid)) goto out;
- break;
- }
- }
- if (rval) break; /* PR_GetLine failed */
+ int rval;
+ int pushed = 0;
+ char temp[256];
+ char *dn = NULL;
+ char *uid = NULL;
+ while (!(rval = PR_GetLine(fd, temp, 256))) {
+ char *p;
+ if (!strncasecmp(temp, "dn:", 3)) {
+ for (p = temp + 4; *p == ' ' || *p == '\t'; p++) ;
+ dn = strdup(p);
+ if (!dn) break;
+ } else if (!strncasecmp(temp, "uid:", 4)) {
+ for (p = temp + 5; *p == ' ' || *p == '\t'; p++) ;
+ uid = strdup(p);
+ if (!uid) break;
+ }
+ if (uid) {
+ /* dn should come earlier than uid - so both dn and uid must be set. */
+ if (!sdt_push(sdt, dn, uid)){
+ /* failure, free the dn and uid */
+ free(dn);
+ free(uid);
+ goto out;
+ }
+ pushed = 1;
+ break;
+ }
+ }
+ if(!pushed){
+ /*
+ * Entry might not have been a user entry with a uid,
+ * so free the dn just in case.
+ */
+ if(dn)
+ free(dn);
+ }
+ if (rval) break; /* PR_GetLine failed */
}
out:
PR_Close(fd);
10 years, 3 months
Branch '389-ds-base-1.3.1' - ldap/servers
by Mark Reynolds
ldap/servers/plugins/replication/legacy_consumer.c | 10 +--
ldap/servers/slapd/back-ldbm/import-threads.c | 1
ldap/servers/slapd/mapping_tree.c | 16 +++++
ldap/servers/slapd/passwd_extop.c | 4 -
ldap/servers/slapd/tools/mmldif.c | 2
ldap/servers/slapd/tools/pwenc.c | 4 +
ldap/servers/slapd/tools/rsearch/sdattable.c | 58 +++++++++++++--------
7 files changed, 65 insertions(+), 30 deletions(-)
New commits:
commit ff78177452f1ac3da6039640815cc2eaf55b0b40
Author: Mark Reynolds <mreynolds(a)redhat.com>
Date: Wed Mar 12 14:38:50 2014 -0400
Ticket 47640 - Fix coverity issues - part 3
12504 - resource leak - /ldap/servers/slapd/back-ldbm/import-threads.c
12499 - resource leak - /ldap/servers/slapd/passwd_extop.c
12497 - resource leak - /ldap/servers/slapd/mapping_tree.c
12496 - resource leak - /ldap/servers/slapd/mapping_tree.c
12495 - resource leak - /ldap/servers/plugins/replication/legacy_consumer.c
12493 - resource leak - /ldap/servers/slapd/tools/rsearch/sdattable.c
12492 - resource leak - /ldap/servers/slapd/tools/pwenc.c
12491 - resource leak - /ldap/servers/slapd/tools/mmldif.c
https://fedorahosted.org/389/ticket/47740
Reviewed by: rmeggins(Thanks!)
diff --git a/ldap/servers/plugins/replication/legacy_consumer.c b/ldap/servers/plugins/replication/legacy_consumer.c
index 2440ce7..aa5a9b5 100644
--- a/ldap/servers/plugins/replication/legacy_consumer.c
+++ b/ldap/servers/plugins/replication/legacy_consumer.c
@@ -371,11 +371,12 @@ legacy_consumer_config_modify (Slapi_PBlock *pb, Slapi_Entry* entryBefore, Slapi
{
if (mod_type == LDAP_MOD_REPLACE)
{
+ slapi_ch_free_string(&legacy_consumer_replicationpw);
legacy_consumer_replicationpw = config_copy_strval(config_attr_value);
}
else if (mod_type == LDAP_MOD_DELETE)
{
- legacy_consumer_replicationpw = NULL;
+ slapi_ch_free_string(&legacy_consumer_replicationpw);
}
else if (mod_type == LDAP_MOD_ADD)
{
@@ -387,6 +388,7 @@ legacy_consumer_config_modify (Slapi_PBlock *pb, Slapi_Entry* entryBefore, Slapi
}
else
{
+ slapi_ch_free_string(&legacy_consumer_replicationpw);
legacy_consumer_replicationpw = config_copy_strval(config_attr_value);
}
}
@@ -419,11 +421,8 @@ legacy_consumer_config_delete (Slapi_PBlock *pb, Slapi_Entry* e, Slapi_Entry* en
slapi_rwlock_wrlock (legacy_consumer_config_lock);
if (legacy_consumer_replicationdn)
slapi_sdn_free (&legacy_consumer_replicationdn);
- if (legacy_consumer_replicationpw)
- slapi_ch_free ((void**)&legacy_consumer_replicationpw);
-
+ slapi_ch_free_string(&legacy_consumer_replicationpw);
legacy_consumer_replicationdn = NULL;
- legacy_consumer_replicationpw = NULL;
slapi_rwlock_unlock (legacy_consumer_config_lock);
*returncode = LDAP_SUCCESS;
@@ -446,6 +445,7 @@ legacy_consumer_extract_config(Slapi_Entry* entry, char *returntext)
legacy_consumer_replicationdn = slapi_sdn_new_dn_passin (arg);
arg= slapi_entry_attr_get_charptr(entry,CONFIG_LEGACY_REPLICATIONPW_ATTRIBUTE);
+ slapi_ch_free_string(&legacy_consumer_replicationpw);
legacy_consumer_replicationpw = arg;
slapi_rwlock_unlock (legacy_consumer_config_lock);
diff --git a/ldap/servers/slapd/back-ldbm/import-threads.c b/ldap/servers/slapd/back-ldbm/import-threads.c
index 95433aa..c0eddd9 100644
--- a/ldap/servers/slapd/back-ldbm/import-threads.c
+++ b/ldap/servers/slapd/back-ldbm/import-threads.c
@@ -2621,6 +2621,7 @@ import_foreman(void *param)
"of the duplicated entry %s; "
"Entry ID: %d",
orig_dn, fi->entry->ep_id);
+ slapi_ch_free_string(&orig_dn);
goto cont;
}
new_entrydn = slapi_attr_new();
diff --git a/ldap/servers/slapd/mapping_tree.c b/ldap/servers/slapd/mapping_tree.c
index 9336d7c..0b46866 100644
--- a/ldap/servers/slapd/mapping_tree.c
+++ b/ldap/servers/slapd/mapping_tree.c
@@ -1110,6 +1110,8 @@ int mapping_tree_entry_modify_callback(Slapi_PBlock *pb, Slapi_Entry* entryBefor
"Error: could not find parent for %s\n",
slapi_entry_get_dn(entryAfter), 0, 0);
slapi_sdn_free(&subtree);
+ slapi_ch_free_string(&plugin_fct);
+ slapi_ch_free_string(&plugin_lib);
*returncode = LDAP_UNWILLING_TO_PERFORM;
return SLAPI_DSE_CALLBACK_ERROR;
}
@@ -1148,6 +1150,8 @@ int mapping_tree_entry_modify_callback(Slapi_PBlock *pb, Slapi_Entry* entryBefor
{
free_mapping_tree_node_arrays(&backends, &be_names, &be_states, &be_list_count);
slapi_sdn_free(&subtree);
+ slapi_ch_free_string(&plugin_fct);
+ slapi_ch_free_string(&plugin_lib);
*returncode = LDAP_UNWILLING_TO_PERFORM;
return SLAPI_DSE_CALLBACK_ERROR;
}
@@ -1161,6 +1165,8 @@ int mapping_tree_entry_modify_callback(Slapi_PBlock *pb, Slapi_Entry* entryBefor
mtn_unlock();
free_mapping_tree_node_arrays(&backends, &be_names, &be_states, &be_list_count);
slapi_sdn_free(&subtree);
+ slapi_ch_free_string(&plugin_fct);
+ slapi_ch_free_string(&plugin_lib);
return SLAPI_DSE_CALLBACK_ERROR;
}
@@ -1189,12 +1195,16 @@ int mapping_tree_entry_modify_callback(Slapi_PBlock *pb, Slapi_Entry* entryBefor
PR_snprintf(returntext, SLAPI_DSE_RETURNTEXT_SIZE, "must use replace operation to change state\n");
*returncode = LDAP_UNWILLING_TO_PERFORM;
slapi_sdn_free(&subtree);
+ slapi_ch_free_string(&plugin_fct);
+ slapi_ch_free_string(&plugin_lib);
return SLAPI_DSE_CALLBACK_ERROR;
}
if ((mods[i]->mod_bvalues == NULL) || (mods[i]->mod_bvalues[0] == NULL))
{
slapi_sdn_free(&subtree);
*returncode = LDAP_OPERATIONS_ERROR;
+ slapi_ch_free_string(&plugin_fct);
+ slapi_ch_free_string(&plugin_lib);
return SLAPI_DSE_CALLBACK_ERROR;
}
@@ -1208,6 +1218,8 @@ int mapping_tree_entry_modify_callback(Slapi_PBlock *pb, Slapi_Entry* entryBefor
{
PR_snprintf(returntext, SLAPI_DSE_RETURNTEXT_SIZE, "need to set nsslapd-backend before moving to backend state\n");
slapi_sdn_free(&subtree);
+ slapi_ch_free_string(&plugin_fct);
+ slapi_ch_free_string(&plugin_lib);
*returncode = LDAP_UNWILLING_TO_PERFORM;
return SLAPI_DSE_CALLBACK_ERROR;
}
@@ -1220,6 +1232,8 @@ int mapping_tree_entry_modify_callback(Slapi_PBlock *pb, Slapi_Entry* entryBefor
{
PR_snprintf(returntext, SLAPI_DSE_RETURNTEXT_SIZE, "need to set nsslapd-referral before moving to referral state\n");
slapi_sdn_free(&subtree);
+ slapi_ch_free_string(&plugin_fct);
+ slapi_ch_free_string(&plugin_lib);
*returncode = LDAP_UNWILLING_TO_PERFORM;
return SLAPI_DSE_CALLBACK_ERROR;
}
@@ -1258,6 +1272,8 @@ int mapping_tree_entry_modify_callback(Slapi_PBlock *pb, Slapi_Entry* entryBefor
*returncode = LDAP_UNWILLING_TO_PERFORM;
mtn_unlock();
slapi_sdn_free(&subtree);
+ slapi_ch_free_string(&plugin_fct);
+ slapi_ch_free_string(&plugin_lib);
return SLAPI_DSE_CALLBACK_ERROR;
}
diff --git a/ldap/servers/slapd/passwd_extop.c b/ldap/servers/slapd/passwd_extop.c
index af13bd8..999a7af 100644
--- a/ldap/servers/slapd/passwd_extop.c
+++ b/ldap/servers/slapd/passwd_extop.c
@@ -904,7 +904,6 @@ static char *passwd_name_list[] = {
int passwd_modify_init( Slapi_PBlock *pb )
{
char **argv;
- char *oid;
/* Get the arguments appended to the plugin extendedop directive. The first argument
* (after the standard arguments for the directive) should contain the OID of the
@@ -923,9 +922,8 @@ int passwd_modify_init( Slapi_PBlock *pb )
"OID is missing or is not %s\n", EXTOP_PASSWD_OID );
return( -1 );
} else {
- oid = slapi_ch_strdup( argv[0] );
slapi_log_error( SLAPI_LOG_PLUGIN, "passwd_modify_init",
- "Registering plug-in for Password Modify extended op %s.\n", oid );
+ "Registering plug-in for Password Modify extended op %s.\n", argv[0] /* oid */);
}
/* Register the plug-in function as an extended operation
diff --git a/ldap/servers/slapd/tools/mmldif.c b/ldap/servers/slapd/tools/mmldif.c
index 1f01976..4213e65 100644
--- a/ldap/servers/slapd/tools/mmldif.c
+++ b/ldap/servers/slapd/tools/mmldif.c
@@ -659,6 +659,7 @@ int mm_init(int argc, char * argv[])
slapd_ldap_debug = 65535;
break;
case 'o':
+ if(ofn) free (ofn);
ofn = strdup(optarg);
break;
case 'h':
@@ -677,6 +678,7 @@ int mm_init(int argc, char * argv[])
ofp = fopen(ofn, "w");
if (ofp == NULL) {
perror(ofn);
+ free(ofn);
return -1;
}
free(ofn);
diff --git a/ldap/servers/slapd/tools/pwenc.c b/ldap/servers/slapd/tools/pwenc.c
index d6b80ce..998b43a 100644
--- a/ldap/servers/slapd/tools/pwenc.c
+++ b/ldap/servers/slapd/tools/pwenc.c
@@ -140,8 +140,10 @@ init_config(char *configdir)
abs_configdir = rel2abspath( configdir );
if ( config_set_configdir( "configdir (-D)", abs_configdir,
- errorbuf, 1) != LDAP_SUCCESS ) {
+ errorbuf, 1) != LDAP_SUCCESS )
+ {
fprintf( stderr, "%s\n", errorbuf );
+ slapi_ch_free_string(&abs_configdir);
return( NULL );
}
slapi_ch_free_string(&abs_configdir);
diff --git a/ldap/servers/slapd/tools/rsearch/sdattable.c b/ldap/servers/slapd/tools/rsearch/sdattable.c
index c0274d0..18417a1 100644
--- a/ldap/servers/slapd/tools/rsearch/sdattable.c
+++ b/ldap/servers/slapd/tools/rsearch/sdattable.c
@@ -141,27 +141,43 @@ int sdt_load(SDatTable *sdt, const char *filename)
if (!fd) return 0;
while (PR_Available(fd) > 0) {
- int rval;
- char temp[256];
- char *dn = NULL;
- char *uid = NULL;
- while (!(rval = PR_GetLine(fd, temp, 256))) {
- char *p;
- if (!strncasecmp(temp, "dn:", 3)) {
- for (p = temp + 4; *p == ' ' || *p == '\t'; p++) ;
- dn = strdup(p);
- if (!dn) break;
- } else if (!strncasecmp(temp, "uid:", 4)) {
- for (p = temp + 5; *p == ' ' || *p == '\t'; p++) ;
- uid = strdup(p);
- if (!uid) break;
- }
- if (uid) { /* dn should come earlier than uid */
- if (!sdt_push(sdt, dn, uid)) goto out;
- break;
- }
- }
- if (rval) break; /* PR_GetLine failed */
+ int rval;
+ int pushed = 0;
+ char temp[256];
+ char *dn = NULL;
+ char *uid = NULL;
+ while (!(rval = PR_GetLine(fd, temp, 256))) {
+ char *p;
+ if (!strncasecmp(temp, "dn:", 3)) {
+ for (p = temp + 4; *p == ' ' || *p == '\t'; p++) ;
+ dn = strdup(p);
+ if (!dn) break;
+ } else if (!strncasecmp(temp, "uid:", 4)) {
+ for (p = temp + 5; *p == ' ' || *p == '\t'; p++) ;
+ uid = strdup(p);
+ if (!uid) break;
+ }
+ if (uid) {
+ /* dn should come earlier than uid - so both dn and uid must be set. */
+ if (!sdt_push(sdt, dn, uid)){
+ /* failure, free the dn and uid */
+ free(dn);
+ free(uid);
+ goto out;
+ }
+ pushed = 1;
+ break;
+ }
+ }
+ if(!pushed){
+ /*
+ * Entry might not have been a user entry with a uid,
+ * so free the dn just in case.
+ */
+ if(dn)
+ free(dn);
+ }
+ if (rval) break; /* PR_GetLine failed */
}
out:
PR_Close(fd);
10 years, 3 months
Branch '389-ds-base-1.3.2' - ldap/servers
by Mark Reynolds
ldap/servers/plugins/replication/legacy_consumer.c | 10 +--
ldap/servers/slapd/back-ldbm/import-threads.c | 1
ldap/servers/slapd/mapping_tree.c | 32 ++++++++---
ldap/servers/slapd/passwd_extop.c | 4 -
ldap/servers/slapd/tools/mmldif.c | 2
ldap/servers/slapd/tools/pwenc.c | 4 +
ldap/servers/slapd/tools/rsearch/sdattable.c | 58 +++++++++++++--------
7 files changed, 73 insertions(+), 38 deletions(-)
New commits:
commit 9eecbebe83b796e826de0d9f2834a9168b3b1772
Author: Mark Reynolds <mreynolds(a)redhat.com>
Date: Wed Mar 12 14:38:50 2014 -0400
Ticket 47640 - Fix coverity issues - part 3
12504 - resource leak - /ldap/servers/slapd/back-ldbm/import-threads.c
12499 - resource leak - /ldap/servers/slapd/passwd_extop.c
12497 - resource leak - /ldap/servers/slapd/mapping_tree.c
12496 - resource leak - /ldap/servers/slapd/mapping_tree.c
12495 - resource leak - /ldap/servers/plugins/replication/legacy_consumer.c
12493 - resource leak - /ldap/servers/slapd/tools/rsearch/sdattable.c
12492 - resource leak - /ldap/servers/slapd/tools/pwenc.c
12491 - resource leak - /ldap/servers/slapd/tools/mmldif.c
https://fedorahosted.org/389/ticket/47740
Reviewed by: rmeggins(Thanks!)
(cherry picked from commit 06919f531a23297f076048ce174080ec07bbec9a)
diff --git a/ldap/servers/plugins/replication/legacy_consumer.c b/ldap/servers/plugins/replication/legacy_consumer.c
index 2440ce7..aa5a9b5 100644
--- a/ldap/servers/plugins/replication/legacy_consumer.c
+++ b/ldap/servers/plugins/replication/legacy_consumer.c
@@ -371,11 +371,12 @@ legacy_consumer_config_modify (Slapi_PBlock *pb, Slapi_Entry* entryBefore, Slapi
{
if (mod_type == LDAP_MOD_REPLACE)
{
+ slapi_ch_free_string(&legacy_consumer_replicationpw);
legacy_consumer_replicationpw = config_copy_strval(config_attr_value);
}
else if (mod_type == LDAP_MOD_DELETE)
{
- legacy_consumer_replicationpw = NULL;
+ slapi_ch_free_string(&legacy_consumer_replicationpw);
}
else if (mod_type == LDAP_MOD_ADD)
{
@@ -387,6 +388,7 @@ legacy_consumer_config_modify (Slapi_PBlock *pb, Slapi_Entry* entryBefore, Slapi
}
else
{
+ slapi_ch_free_string(&legacy_consumer_replicationpw);
legacy_consumer_replicationpw = config_copy_strval(config_attr_value);
}
}
@@ -419,11 +421,8 @@ legacy_consumer_config_delete (Slapi_PBlock *pb, Slapi_Entry* e, Slapi_Entry* en
slapi_rwlock_wrlock (legacy_consumer_config_lock);
if (legacy_consumer_replicationdn)
slapi_sdn_free (&legacy_consumer_replicationdn);
- if (legacy_consumer_replicationpw)
- slapi_ch_free ((void**)&legacy_consumer_replicationpw);
-
+ slapi_ch_free_string(&legacy_consumer_replicationpw);
legacy_consumer_replicationdn = NULL;
- legacy_consumer_replicationpw = NULL;
slapi_rwlock_unlock (legacy_consumer_config_lock);
*returncode = LDAP_SUCCESS;
@@ -446,6 +445,7 @@ legacy_consumer_extract_config(Slapi_Entry* entry, char *returntext)
legacy_consumer_replicationdn = slapi_sdn_new_dn_passin (arg);
arg= slapi_entry_attr_get_charptr(entry,CONFIG_LEGACY_REPLICATIONPW_ATTRIBUTE);
+ slapi_ch_free_string(&legacy_consumer_replicationpw);
legacy_consumer_replicationpw = arg;
slapi_rwlock_unlock (legacy_consumer_config_lock);
diff --git a/ldap/servers/slapd/back-ldbm/import-threads.c b/ldap/servers/slapd/back-ldbm/import-threads.c
index 9705d9e..96734ac 100644
--- a/ldap/servers/slapd/back-ldbm/import-threads.c
+++ b/ldap/servers/slapd/back-ldbm/import-threads.c
@@ -2621,6 +2621,7 @@ import_foreman(void *param)
"of the duplicated entry %s; "
"Entry ID: %d",
orig_dn, fi->entry->ep_id);
+ slapi_ch_free_string(&orig_dn);
goto cont;
}
new_entrydn = slapi_attr_new();
diff --git a/ldap/servers/slapd/mapping_tree.c b/ldap/servers/slapd/mapping_tree.c
index d0801e7..e3146a9 100644
--- a/ldap/servers/slapd/mapping_tree.c
+++ b/ldap/servers/slapd/mapping_tree.c
@@ -1132,6 +1132,8 @@ int mapping_tree_entry_modify_callback(Slapi_PBlock *pb, Slapi_Entry* entryBefor
"Error: could not find parent for %s\n",
slapi_entry_get_dn(entryAfter), 0, 0);
slapi_sdn_free(&subtree);
+ slapi_ch_free_string(&plugin_fct);
+ slapi_ch_free_string(&plugin_lib);
*returncode = LDAP_UNWILLING_TO_PERFORM;
return SLAPI_DSE_CALLBACK_ERROR;
}
@@ -1170,6 +1172,8 @@ int mapping_tree_entry_modify_callback(Slapi_PBlock *pb, Slapi_Entry* entryBefor
{
free_mapping_tree_node_arrays(&backends, &be_names, &be_states, &be_list_count);
slapi_sdn_free(&subtree);
+ slapi_ch_free_string(&plugin_fct);
+ slapi_ch_free_string(&plugin_lib);
*returncode = LDAP_UNWILLING_TO_PERFORM;
return SLAPI_DSE_CALLBACK_ERROR;
}
@@ -1183,6 +1187,8 @@ int mapping_tree_entry_modify_callback(Slapi_PBlock *pb, Slapi_Entry* entryBefor
mtn_unlock();
free_mapping_tree_node_arrays(&backends, &be_names, &be_states, &be_list_count);
slapi_sdn_free(&subtree);
+ slapi_ch_free_string(&plugin_fct);
+ slapi_ch_free_string(&plugin_lib);
return SLAPI_DSE_CALLBACK_ERROR;
}
@@ -1211,12 +1217,16 @@ int mapping_tree_entry_modify_callback(Slapi_PBlock *pb, Slapi_Entry* entryBefor
PR_snprintf(returntext, SLAPI_DSE_RETURNTEXT_SIZE, "must use replace operation to change state\n");
*returncode = LDAP_UNWILLING_TO_PERFORM;
slapi_sdn_free(&subtree);
+ slapi_ch_free_string(&plugin_fct);
+ slapi_ch_free_string(&plugin_lib);
return SLAPI_DSE_CALLBACK_ERROR;
}
if ((mods[i]->mod_bvalues == NULL) || (mods[i]->mod_bvalues[0] == NULL))
{
slapi_sdn_free(&subtree);
*returncode = LDAP_OPERATIONS_ERROR;
+ slapi_ch_free_string(&plugin_fct);
+ slapi_ch_free_string(&plugin_lib);
return SLAPI_DSE_CALLBACK_ERROR;
}
@@ -1230,6 +1240,8 @@ int mapping_tree_entry_modify_callback(Slapi_PBlock *pb, Slapi_Entry* entryBefor
{
PR_snprintf(returntext, SLAPI_DSE_RETURNTEXT_SIZE, "need to set nsslapd-backend before moving to backend state\n");
slapi_sdn_free(&subtree);
+ slapi_ch_free_string(&plugin_fct);
+ slapi_ch_free_string(&plugin_lib);
*returncode = LDAP_UNWILLING_TO_PERFORM;
return SLAPI_DSE_CALLBACK_ERROR;
}
@@ -1242,6 +1254,8 @@ int mapping_tree_entry_modify_callback(Slapi_PBlock *pb, Slapi_Entry* entryBefor
{
PR_snprintf(returntext, SLAPI_DSE_RETURNTEXT_SIZE, "need to set nsslapd-referral before moving to referral state\n");
slapi_sdn_free(&subtree);
+ slapi_ch_free_string(&plugin_fct);
+ slapi_ch_free_string(&plugin_lib);
*returncode = LDAP_UNWILLING_TO_PERFORM;
return SLAPI_DSE_CALLBACK_ERROR;
}
@@ -1280,6 +1294,8 @@ int mapping_tree_entry_modify_callback(Slapi_PBlock *pb, Slapi_Entry* entryBefor
*returncode = LDAP_UNWILLING_TO_PERFORM;
mtn_unlock();
slapi_sdn_free(&subtree);
+ slapi_ch_free_string(&plugin_fct);
+ slapi_ch_free_string(&plugin_lib);
return SLAPI_DSE_CALLBACK_ERROR;
}
@@ -1353,7 +1369,7 @@ int mapping_tree_entry_modify_callback(Slapi_PBlock *pb, Slapi_Entry* entryBefor
if (SLAPI_IS_MOD_REPLACE(mods[i]->mod_op)
|| SLAPI_IS_MOD_ADD(mods[i]->mod_op))
{
- const char *sval;
+ const char *sval;
slapi_entry_attr_find(entryAfter,
"nsslapd-distribution-root-update", &attr);
slapi_attr_first_value(attr, &val);
@@ -1365,13 +1381,13 @@ int mapping_tree_entry_modify_callback(Slapi_PBlock *pb, Slapi_Entry* entryBefor
plugin_rootmode = CHAIN_ROOT_UPDATE_REJECT;
} else {
sval = slapi_value_get_string(val);
- if (strcmp(sval,"reject") == 0)
- plugin_rootmode = CHAIN_ROOT_UPDATE_REJECT;
- else if (strcmp(sval,"local") == 0)
- plugin_rootmode = CHAIN_ROOT_UPDATE_LOCAL;
- else if (strcmp(sval,"referral") == 0)
- plugin_rootmode = CHAIN_ROOT_UPDATE_REFERRAL;
- }
+ if (strcmp(sval,"reject") == 0)
+ plugin_rootmode = CHAIN_ROOT_UPDATE_REJECT;
+ else if (strcmp(sval,"local") == 0)
+ plugin_rootmode = CHAIN_ROOT_UPDATE_LOCAL;
+ else if (strcmp(sval,"referral") == 0)
+ plugin_rootmode = CHAIN_ROOT_UPDATE_REFERRAL;
+ }
}
else if (SLAPI_IS_MOD_DELETE(mods[i]->mod_op))
{
diff --git a/ldap/servers/slapd/passwd_extop.c b/ldap/servers/slapd/passwd_extop.c
index af13bd8..999a7af 100644
--- a/ldap/servers/slapd/passwd_extop.c
+++ b/ldap/servers/slapd/passwd_extop.c
@@ -904,7 +904,6 @@ static char *passwd_name_list[] = {
int passwd_modify_init( Slapi_PBlock *pb )
{
char **argv;
- char *oid;
/* Get the arguments appended to the plugin extendedop directive. The first argument
* (after the standard arguments for the directive) should contain the OID of the
@@ -923,9 +922,8 @@ int passwd_modify_init( Slapi_PBlock *pb )
"OID is missing or is not %s\n", EXTOP_PASSWD_OID );
return( -1 );
} else {
- oid = slapi_ch_strdup( argv[0] );
slapi_log_error( SLAPI_LOG_PLUGIN, "passwd_modify_init",
- "Registering plug-in for Password Modify extended op %s.\n", oid );
+ "Registering plug-in for Password Modify extended op %s.\n", argv[0] /* oid */);
}
/* Register the plug-in function as an extended operation
diff --git a/ldap/servers/slapd/tools/mmldif.c b/ldap/servers/slapd/tools/mmldif.c
index 1f01976..4213e65 100644
--- a/ldap/servers/slapd/tools/mmldif.c
+++ b/ldap/servers/slapd/tools/mmldif.c
@@ -659,6 +659,7 @@ int mm_init(int argc, char * argv[])
slapd_ldap_debug = 65535;
break;
case 'o':
+ if(ofn) free (ofn);
ofn = strdup(optarg);
break;
case 'h':
@@ -677,6 +678,7 @@ int mm_init(int argc, char * argv[])
ofp = fopen(ofn, "w");
if (ofp == NULL) {
perror(ofn);
+ free(ofn);
return -1;
}
free(ofn);
diff --git a/ldap/servers/slapd/tools/pwenc.c b/ldap/servers/slapd/tools/pwenc.c
index d6b80ce..998b43a 100644
--- a/ldap/servers/slapd/tools/pwenc.c
+++ b/ldap/servers/slapd/tools/pwenc.c
@@ -140,8 +140,10 @@ init_config(char *configdir)
abs_configdir = rel2abspath( configdir );
if ( config_set_configdir( "configdir (-D)", abs_configdir,
- errorbuf, 1) != LDAP_SUCCESS ) {
+ errorbuf, 1) != LDAP_SUCCESS )
+ {
fprintf( stderr, "%s\n", errorbuf );
+ slapi_ch_free_string(&abs_configdir);
return( NULL );
}
slapi_ch_free_string(&abs_configdir);
diff --git a/ldap/servers/slapd/tools/rsearch/sdattable.c b/ldap/servers/slapd/tools/rsearch/sdattable.c
index c0274d0..18417a1 100644
--- a/ldap/servers/slapd/tools/rsearch/sdattable.c
+++ b/ldap/servers/slapd/tools/rsearch/sdattable.c
@@ -141,27 +141,43 @@ int sdt_load(SDatTable *sdt, const char *filename)
if (!fd) return 0;
while (PR_Available(fd) > 0) {
- int rval;
- char temp[256];
- char *dn = NULL;
- char *uid = NULL;
- while (!(rval = PR_GetLine(fd, temp, 256))) {
- char *p;
- if (!strncasecmp(temp, "dn:", 3)) {
- for (p = temp + 4; *p == ' ' || *p == '\t'; p++) ;
- dn = strdup(p);
- if (!dn) break;
- } else if (!strncasecmp(temp, "uid:", 4)) {
- for (p = temp + 5; *p == ' ' || *p == '\t'; p++) ;
- uid = strdup(p);
- if (!uid) break;
- }
- if (uid) { /* dn should come earlier than uid */
- if (!sdt_push(sdt, dn, uid)) goto out;
- break;
- }
- }
- if (rval) break; /* PR_GetLine failed */
+ int rval;
+ int pushed = 0;
+ char temp[256];
+ char *dn = NULL;
+ char *uid = NULL;
+ while (!(rval = PR_GetLine(fd, temp, 256))) {
+ char *p;
+ if (!strncasecmp(temp, "dn:", 3)) {
+ for (p = temp + 4; *p == ' ' || *p == '\t'; p++) ;
+ dn = strdup(p);
+ if (!dn) break;
+ } else if (!strncasecmp(temp, "uid:", 4)) {
+ for (p = temp + 5; *p == ' ' || *p == '\t'; p++) ;
+ uid = strdup(p);
+ if (!uid) break;
+ }
+ if (uid) {
+ /* dn should come earlier than uid - so both dn and uid must be set. */
+ if (!sdt_push(sdt, dn, uid)){
+ /* failure, free the dn and uid */
+ free(dn);
+ free(uid);
+ goto out;
+ }
+ pushed = 1;
+ break;
+ }
+ }
+ if(!pushed){
+ /*
+ * Entry might not have been a user entry with a uid,
+ * so free the dn just in case.
+ */
+ if(dn)
+ free(dn);
+ }
+ if (rval) break; /* PR_GetLine failed */
}
out:
PR_Close(fd);
10 years, 3 months
ldap/servers
by Mark Reynolds
ldap/servers/plugins/replication/legacy_consumer.c | 10 +--
ldap/servers/slapd/back-ldbm/import-threads.c | 1
ldap/servers/slapd/mapping_tree.c | 32 ++++++++---
ldap/servers/slapd/passwd_extop.c | 4 -
ldap/servers/slapd/tools/mmldif.c | 2
ldap/servers/slapd/tools/pwenc.c | 4 +
ldap/servers/slapd/tools/rsearch/sdattable.c | 58 +++++++++++++--------
7 files changed, 73 insertions(+), 38 deletions(-)
New commits:
commit 06919f531a23297f076048ce174080ec07bbec9a
Author: Mark Reynolds <mreynolds(a)redhat.com>
Date: Wed Mar 12 14:38:50 2014 -0400
Ticket 47640 - Fix coverity issues - part 3
12504 - resource leak - /ldap/servers/slapd/back-ldbm/import-threads.c
12499 - resource leak - /ldap/servers/slapd/passwd_extop.c
12497 - resource leak - /ldap/servers/slapd/mapping_tree.c
12496 - resource leak - /ldap/servers/slapd/mapping_tree.c
12495 - resource leak - /ldap/servers/plugins/replication/legacy_consumer.c
12493 - resource leak - /ldap/servers/slapd/tools/rsearch/sdattable.c
12492 - resource leak - /ldap/servers/slapd/tools/pwenc.c
12491 - resource leak - /ldap/servers/slapd/tools/mmldif.c
https://fedorahosted.org/389/ticket/47740
Reviewed by: rmeggins(Thanks!)
diff --git a/ldap/servers/plugins/replication/legacy_consumer.c b/ldap/servers/plugins/replication/legacy_consumer.c
index 2440ce7..aa5a9b5 100644
--- a/ldap/servers/plugins/replication/legacy_consumer.c
+++ b/ldap/servers/plugins/replication/legacy_consumer.c
@@ -371,11 +371,12 @@ legacy_consumer_config_modify (Slapi_PBlock *pb, Slapi_Entry* entryBefore, Slapi
{
if (mod_type == LDAP_MOD_REPLACE)
{
+ slapi_ch_free_string(&legacy_consumer_replicationpw);
legacy_consumer_replicationpw = config_copy_strval(config_attr_value);
}
else if (mod_type == LDAP_MOD_DELETE)
{
- legacy_consumer_replicationpw = NULL;
+ slapi_ch_free_string(&legacy_consumer_replicationpw);
}
else if (mod_type == LDAP_MOD_ADD)
{
@@ -387,6 +388,7 @@ legacy_consumer_config_modify (Slapi_PBlock *pb, Slapi_Entry* entryBefore, Slapi
}
else
{
+ slapi_ch_free_string(&legacy_consumer_replicationpw);
legacy_consumer_replicationpw = config_copy_strval(config_attr_value);
}
}
@@ -419,11 +421,8 @@ legacy_consumer_config_delete (Slapi_PBlock *pb, Slapi_Entry* e, Slapi_Entry* en
slapi_rwlock_wrlock (legacy_consumer_config_lock);
if (legacy_consumer_replicationdn)
slapi_sdn_free (&legacy_consumer_replicationdn);
- if (legacy_consumer_replicationpw)
- slapi_ch_free ((void**)&legacy_consumer_replicationpw);
-
+ slapi_ch_free_string(&legacy_consumer_replicationpw);
legacy_consumer_replicationdn = NULL;
- legacy_consumer_replicationpw = NULL;
slapi_rwlock_unlock (legacy_consumer_config_lock);
*returncode = LDAP_SUCCESS;
@@ -446,6 +445,7 @@ legacy_consumer_extract_config(Slapi_Entry* entry, char *returntext)
legacy_consumer_replicationdn = slapi_sdn_new_dn_passin (arg);
arg= slapi_entry_attr_get_charptr(entry,CONFIG_LEGACY_REPLICATIONPW_ATTRIBUTE);
+ slapi_ch_free_string(&legacy_consumer_replicationpw);
legacy_consumer_replicationpw = arg;
slapi_rwlock_unlock (legacy_consumer_config_lock);
diff --git a/ldap/servers/slapd/back-ldbm/import-threads.c b/ldap/servers/slapd/back-ldbm/import-threads.c
index 6eae676..6fdc289 100644
--- a/ldap/servers/slapd/back-ldbm/import-threads.c
+++ b/ldap/servers/slapd/back-ldbm/import-threads.c
@@ -2621,6 +2621,7 @@ import_foreman(void *param)
"of the duplicated entry %s; "
"Entry ID: %d",
orig_dn, fi->entry->ep_id);
+ slapi_ch_free_string(&orig_dn);
goto cont;
}
new_entrydn = slapi_attr_new();
diff --git a/ldap/servers/slapd/mapping_tree.c b/ldap/servers/slapd/mapping_tree.c
index d0801e7..e3146a9 100644
--- a/ldap/servers/slapd/mapping_tree.c
+++ b/ldap/servers/slapd/mapping_tree.c
@@ -1132,6 +1132,8 @@ int mapping_tree_entry_modify_callback(Slapi_PBlock *pb, Slapi_Entry* entryBefor
"Error: could not find parent for %s\n",
slapi_entry_get_dn(entryAfter), 0, 0);
slapi_sdn_free(&subtree);
+ slapi_ch_free_string(&plugin_fct);
+ slapi_ch_free_string(&plugin_lib);
*returncode = LDAP_UNWILLING_TO_PERFORM;
return SLAPI_DSE_CALLBACK_ERROR;
}
@@ -1170,6 +1172,8 @@ int mapping_tree_entry_modify_callback(Slapi_PBlock *pb, Slapi_Entry* entryBefor
{
free_mapping_tree_node_arrays(&backends, &be_names, &be_states, &be_list_count);
slapi_sdn_free(&subtree);
+ slapi_ch_free_string(&plugin_fct);
+ slapi_ch_free_string(&plugin_lib);
*returncode = LDAP_UNWILLING_TO_PERFORM;
return SLAPI_DSE_CALLBACK_ERROR;
}
@@ -1183,6 +1187,8 @@ int mapping_tree_entry_modify_callback(Slapi_PBlock *pb, Slapi_Entry* entryBefor
mtn_unlock();
free_mapping_tree_node_arrays(&backends, &be_names, &be_states, &be_list_count);
slapi_sdn_free(&subtree);
+ slapi_ch_free_string(&plugin_fct);
+ slapi_ch_free_string(&plugin_lib);
return SLAPI_DSE_CALLBACK_ERROR;
}
@@ -1211,12 +1217,16 @@ int mapping_tree_entry_modify_callback(Slapi_PBlock *pb, Slapi_Entry* entryBefor
PR_snprintf(returntext, SLAPI_DSE_RETURNTEXT_SIZE, "must use replace operation to change state\n");
*returncode = LDAP_UNWILLING_TO_PERFORM;
slapi_sdn_free(&subtree);
+ slapi_ch_free_string(&plugin_fct);
+ slapi_ch_free_string(&plugin_lib);
return SLAPI_DSE_CALLBACK_ERROR;
}
if ((mods[i]->mod_bvalues == NULL) || (mods[i]->mod_bvalues[0] == NULL))
{
slapi_sdn_free(&subtree);
*returncode = LDAP_OPERATIONS_ERROR;
+ slapi_ch_free_string(&plugin_fct);
+ slapi_ch_free_string(&plugin_lib);
return SLAPI_DSE_CALLBACK_ERROR;
}
@@ -1230,6 +1240,8 @@ int mapping_tree_entry_modify_callback(Slapi_PBlock *pb, Slapi_Entry* entryBefor
{
PR_snprintf(returntext, SLAPI_DSE_RETURNTEXT_SIZE, "need to set nsslapd-backend before moving to backend state\n");
slapi_sdn_free(&subtree);
+ slapi_ch_free_string(&plugin_fct);
+ slapi_ch_free_string(&plugin_lib);
*returncode = LDAP_UNWILLING_TO_PERFORM;
return SLAPI_DSE_CALLBACK_ERROR;
}
@@ -1242,6 +1254,8 @@ int mapping_tree_entry_modify_callback(Slapi_PBlock *pb, Slapi_Entry* entryBefor
{
PR_snprintf(returntext, SLAPI_DSE_RETURNTEXT_SIZE, "need to set nsslapd-referral before moving to referral state\n");
slapi_sdn_free(&subtree);
+ slapi_ch_free_string(&plugin_fct);
+ slapi_ch_free_string(&plugin_lib);
*returncode = LDAP_UNWILLING_TO_PERFORM;
return SLAPI_DSE_CALLBACK_ERROR;
}
@@ -1280,6 +1294,8 @@ int mapping_tree_entry_modify_callback(Slapi_PBlock *pb, Slapi_Entry* entryBefor
*returncode = LDAP_UNWILLING_TO_PERFORM;
mtn_unlock();
slapi_sdn_free(&subtree);
+ slapi_ch_free_string(&plugin_fct);
+ slapi_ch_free_string(&plugin_lib);
return SLAPI_DSE_CALLBACK_ERROR;
}
@@ -1353,7 +1369,7 @@ int mapping_tree_entry_modify_callback(Slapi_PBlock *pb, Slapi_Entry* entryBefor
if (SLAPI_IS_MOD_REPLACE(mods[i]->mod_op)
|| SLAPI_IS_MOD_ADD(mods[i]->mod_op))
{
- const char *sval;
+ const char *sval;
slapi_entry_attr_find(entryAfter,
"nsslapd-distribution-root-update", &attr);
slapi_attr_first_value(attr, &val);
@@ -1365,13 +1381,13 @@ int mapping_tree_entry_modify_callback(Slapi_PBlock *pb, Slapi_Entry* entryBefor
plugin_rootmode = CHAIN_ROOT_UPDATE_REJECT;
} else {
sval = slapi_value_get_string(val);
- if (strcmp(sval,"reject") == 0)
- plugin_rootmode = CHAIN_ROOT_UPDATE_REJECT;
- else if (strcmp(sval,"local") == 0)
- plugin_rootmode = CHAIN_ROOT_UPDATE_LOCAL;
- else if (strcmp(sval,"referral") == 0)
- plugin_rootmode = CHAIN_ROOT_UPDATE_REFERRAL;
- }
+ if (strcmp(sval,"reject") == 0)
+ plugin_rootmode = CHAIN_ROOT_UPDATE_REJECT;
+ else if (strcmp(sval,"local") == 0)
+ plugin_rootmode = CHAIN_ROOT_UPDATE_LOCAL;
+ else if (strcmp(sval,"referral") == 0)
+ plugin_rootmode = CHAIN_ROOT_UPDATE_REFERRAL;
+ }
}
else if (SLAPI_IS_MOD_DELETE(mods[i]->mod_op))
{
diff --git a/ldap/servers/slapd/passwd_extop.c b/ldap/servers/slapd/passwd_extop.c
index af13bd8..999a7af 100644
--- a/ldap/servers/slapd/passwd_extop.c
+++ b/ldap/servers/slapd/passwd_extop.c
@@ -904,7 +904,6 @@ static char *passwd_name_list[] = {
int passwd_modify_init( Slapi_PBlock *pb )
{
char **argv;
- char *oid;
/* Get the arguments appended to the plugin extendedop directive. The first argument
* (after the standard arguments for the directive) should contain the OID of the
@@ -923,9 +922,8 @@ int passwd_modify_init( Slapi_PBlock *pb )
"OID is missing or is not %s\n", EXTOP_PASSWD_OID );
return( -1 );
} else {
- oid = slapi_ch_strdup( argv[0] );
slapi_log_error( SLAPI_LOG_PLUGIN, "passwd_modify_init",
- "Registering plug-in for Password Modify extended op %s.\n", oid );
+ "Registering plug-in for Password Modify extended op %s.\n", argv[0] /* oid */);
}
/* Register the plug-in function as an extended operation
diff --git a/ldap/servers/slapd/tools/mmldif.c b/ldap/servers/slapd/tools/mmldif.c
index 1f01976..4213e65 100644
--- a/ldap/servers/slapd/tools/mmldif.c
+++ b/ldap/servers/slapd/tools/mmldif.c
@@ -659,6 +659,7 @@ int mm_init(int argc, char * argv[])
slapd_ldap_debug = 65535;
break;
case 'o':
+ if(ofn) free (ofn);
ofn = strdup(optarg);
break;
case 'h':
@@ -677,6 +678,7 @@ int mm_init(int argc, char * argv[])
ofp = fopen(ofn, "w");
if (ofp == NULL) {
perror(ofn);
+ free(ofn);
return -1;
}
free(ofn);
diff --git a/ldap/servers/slapd/tools/pwenc.c b/ldap/servers/slapd/tools/pwenc.c
index d6b80ce..998b43a 100644
--- a/ldap/servers/slapd/tools/pwenc.c
+++ b/ldap/servers/slapd/tools/pwenc.c
@@ -140,8 +140,10 @@ init_config(char *configdir)
abs_configdir = rel2abspath( configdir );
if ( config_set_configdir( "configdir (-D)", abs_configdir,
- errorbuf, 1) != LDAP_SUCCESS ) {
+ errorbuf, 1) != LDAP_SUCCESS )
+ {
fprintf( stderr, "%s\n", errorbuf );
+ slapi_ch_free_string(&abs_configdir);
return( NULL );
}
slapi_ch_free_string(&abs_configdir);
diff --git a/ldap/servers/slapd/tools/rsearch/sdattable.c b/ldap/servers/slapd/tools/rsearch/sdattable.c
index c0274d0..18417a1 100644
--- a/ldap/servers/slapd/tools/rsearch/sdattable.c
+++ b/ldap/servers/slapd/tools/rsearch/sdattable.c
@@ -141,27 +141,43 @@ int sdt_load(SDatTable *sdt, const char *filename)
if (!fd) return 0;
while (PR_Available(fd) > 0) {
- int rval;
- char temp[256];
- char *dn = NULL;
- char *uid = NULL;
- while (!(rval = PR_GetLine(fd, temp, 256))) {
- char *p;
- if (!strncasecmp(temp, "dn:", 3)) {
- for (p = temp + 4; *p == ' ' || *p == '\t'; p++) ;
- dn = strdup(p);
- if (!dn) break;
- } else if (!strncasecmp(temp, "uid:", 4)) {
- for (p = temp + 5; *p == ' ' || *p == '\t'; p++) ;
- uid = strdup(p);
- if (!uid) break;
- }
- if (uid) { /* dn should come earlier than uid */
- if (!sdt_push(sdt, dn, uid)) goto out;
- break;
- }
- }
- if (rval) break; /* PR_GetLine failed */
+ int rval;
+ int pushed = 0;
+ char temp[256];
+ char *dn = NULL;
+ char *uid = NULL;
+ while (!(rval = PR_GetLine(fd, temp, 256))) {
+ char *p;
+ if (!strncasecmp(temp, "dn:", 3)) {
+ for (p = temp + 4; *p == ' ' || *p == '\t'; p++) ;
+ dn = strdup(p);
+ if (!dn) break;
+ } else if (!strncasecmp(temp, "uid:", 4)) {
+ for (p = temp + 5; *p == ' ' || *p == '\t'; p++) ;
+ uid = strdup(p);
+ if (!uid) break;
+ }
+ if (uid) {
+ /* dn should come earlier than uid - so both dn and uid must be set. */
+ if (!sdt_push(sdt, dn, uid)){
+ /* failure, free the dn and uid */
+ free(dn);
+ free(uid);
+ goto out;
+ }
+ pushed = 1;
+ break;
+ }
+ }
+ if(!pushed){
+ /*
+ * Entry might not have been a user entry with a uid,
+ * so free the dn just in case.
+ */
+ if(dn)
+ free(dn);
+ }
+ if (rval) break; /* PR_GetLine failed */
}
out:
PR_Close(fd);
10 years, 3 months
Branch '389-ds-base-1.3.2' - ldap/servers
by Mark Reynolds
ldap/servers/plugins/sync/sync_refresh.c | 25 ++++++++++++-------------
1 file changed, 12 insertions(+), 13 deletions(-)
New commits:
commit 549b9813f3e11847c72762738bfa71902b6eddba
Author: Mark Reynolds <mreynolds(a)redhat.com>
Date: Wed Mar 12 11:19:31 2014 -0400
Ticket 47740 - Fix sync plugin resource leaks
12503 - resource leak - /ldap/servers/plugin/sync/sync_refresh.c
12502 - resource leak - /ldap/servers/plugin/sync/sync_refresh.c
12501 - resource leak - /ldap/servers/plugin/sync/sync_refresh.c
https://fedorahosted.org/389/ticket/47740
Reviewed by: lkripenz & nhosoi(Thanks!!)
(cherry picked from commit 78f1bda48ba31c71f49ff89e2a32bd2e2227cc1b)
diff --git a/ldap/servers/plugins/sync/sync_refresh.c b/ldap/servers/plugins/sync/sync_refresh.c
index 18f7884..c506a8a 100644
--- a/ldap/servers/plugins/sync/sync_refresh.c
+++ b/ldap/servers/plugins/sync/sync_refresh.c
@@ -467,16 +467,14 @@ sync_read_entry_from_changelog( Slapi_Entry *cl_entry, void *cb_data)
}
uniqueid = sync_get_attr_value_from_entry (cl_entry, CL_ATTR_UNIQUEID);
- chgtype = sync_get_attr_value_from_entry (cl_entry, CL_ATTR_CHGTYPE);
- chgnr = sync_get_attr_value_from_entry (cl_entry, CL_ATTR_CHANGENUMBER);
-
if (uniqueid == NULL) {
slapi_log_error (SLAPI_LOG_FATAL, SYNC_PLUGIN_SUBSYSTEM,
"Retro Changelog does not provied nsuniquedid."
"Check RCL plugin configuration." );
return(1);
}
-
+ chgtype = sync_get_attr_value_from_entry (cl_entry, CL_ATTR_CHGTYPE);
+ chgnr = sync_get_attr_value_from_entry (cl_entry, CL_ATTR_CHANGENUMBER);
index = sync_number2int(chgnr) - cb->change_start;
chg_req = sync_str2chgreq(chgtype);
@@ -496,7 +494,7 @@ sync_read_entry_from_changelog( Slapi_Entry *cl_entry, void *cb_data)
/* was add or mod, keep it */
cb->cb_updates[index].upd_uuid = 0;
cb->cb_updates[index].upd_chgtype = 0;
- slapi_ch_free((void **)&uniqueid);
+ slapi_ch_free_string(&uniqueid);
}
break;
case LDAP_REQ_MODRDN:
@@ -516,12 +514,12 @@ sync_read_entry_from_changelog( Slapi_Entry *cl_entry, void *cb_data)
original_dn = slapi_sdn_new_dn_byref(entrydn);
old_scope = sync_is_active_scope(original_dn,cb->orig_pb);
slapi_sdn_free(&original_dn);
- slapi_ch_free((void **)&entrydn);
+ slapi_ch_free_string(&entrydn);
if (newsuperior) {
Slapi_DN *newbase;
newbase = slapi_sdn_new_dn_byref(newsuperior);
new_scope = sync_is_active_scope(newbase, cb->orig_pb);
- slapi_ch_free((void **)&newsuperior);
+ slapi_ch_free_string(&newsuperior);
slapi_sdn_free(&newbase);
} else {
/* scope didn't change */
@@ -536,7 +534,7 @@ sync_read_entry_from_changelog( Slapi_Entry *cl_entry, void *cb_data)
} else {
cb->cb_updates[index].upd_uuid = 0;
cb->cb_updates[index].upd_chgtype = 0;
- slapi_ch_free((void **)&uniqueid);
+ slapi_ch_free_string(&uniqueid);
}
} else if ( old_scope ) {
/* it was moved out of scope, handle as DEL */
@@ -547,7 +545,7 @@ sync_read_entry_from_changelog( Slapi_Entry *cl_entry, void *cb_data)
} else {
cb->cb_updates[prev].upd_chgtype = LDAP_REQ_DELETE;
cb->cb_updates[prev].upd_e = sync_deleted_entry_from_changelog(cl_entry);
- slapi_ch_free((void **)&uniqueid);
+ slapi_ch_free_string(&uniqueid);
}
} else if ( new_scope ) {
/* moved into scope, handle as ADD */
@@ -555,6 +553,7 @@ sync_read_entry_from_changelog( Slapi_Entry *cl_entry, void *cb_data)
cb->cb_updates[index].upd_uuid = uniqueid;
} else {
/* nothing to do */
+ slapi_ch_free_string(&uniqueid);
}
slapi_sdn_free(&original_dn);
break;
@@ -570,8 +569,7 @@ sync_read_entry_from_changelog( Slapi_Entry *cl_entry, void *cb_data)
/* if it was added since last cookie state, we
* can ignoere it */
if (cb->cb_updates[prev].upd_chgtype == LDAP_REQ_ADD) {
- slapi_ch_free((void **)&(cb->cb_updates[prev].upd_uuid));
- slapi_ch_free((void **)&uniqueid);
+ slapi_ch_free_string(&(cb->cb_updates[prev].upd_uuid));
cb->cb_updates[prev].upd_uuid = NULL;
cb->cb_updates[index].upd_uuid = NULL;
} else {
@@ -580,11 +578,12 @@ sync_read_entry_from_changelog( Slapi_Entry *cl_entry, void *cb_data)
cb->cb_updates[prev].upd_chgtype = LDAP_REQ_DELETE;
cb->cb_updates[prev].upd_e = sync_deleted_entry_from_changelog(cl_entry);
}
+ slapi_ch_free_string(&uniqueid);
}
break;
}
- slapi_ch_free((void **)&chgtype);
- slapi_ch_free((void **)&chgnr);
+ slapi_ch_free_string(&chgtype);
+ slapi_ch_free_string(&chgnr);
return (0);
}
10 years, 3 months