summaryrefslogtreecommitdiffstats
path: root/ldap
diff options
context:
space:
mode:
authorEndi S. Dewata <edewata@redhat.com>2010-07-24 08:49:39 -0500
committerNoriko Hosoi <nhosoi@redhat.com>2010-08-19 16:59:57 -0700
commit8957e148f22062833af9d19bb3488b8e444b8165 (patch)
tree6fc8af821c7d0223a00776b713265aad8e83d39a /ldap
parent3ac3cfc84bdbbc695a251ad057a435b7571fec46 (diff)
downloadds-8957e148f22062833af9d19bb3488b8e444b8165.tar.gz
ds-8957e148f22062833af9d19bb3488b8e444b8165.tar.xz
ds-8957e148f22062833af9d19bb3488b8e444b8165.zip
Bug 617630 - fix coverify Defect Type: Resource leaks issues CID 12052 - 12093
https://bugzilla.redhat.com/show_bug.cgi?id=617630 Resolves: bug 617630 Bug description: fix coverify Defect Type: Resource leaks issues CID 12072, 12088, 12089. description: dse_conf_verify_core() has been modified to release estr before continuing the loop. import_worker() has been modified to release substring_key_buffer before returning. upgradedn_producer() has been modified to release the older data.data and ecopy before reallocating the new ones and before returning.
Diffstat (limited to 'ldap')
-rw-r--r--ldap/servers/slapd/back-ldbm/import-threads.c21
1 files changed, 16 insertions, 5 deletions
diff --git a/ldap/servers/slapd/back-ldbm/import-threads.c b/ldap/servers/slapd/back-ldbm/import-threads.c
index 4525449e..8051ee37 100644
--- a/ldap/servers/slapd/back-ldbm/import-threads.c
+++ b/ldap/servers/slapd/back-ldbm/import-threads.c
@@ -1271,6 +1271,7 @@ upgradedn_producer(void *param)
}
info->state = RUNNING;
+ slapi_ch_free(&(data.data));
key.flags = DB_DBT_MALLOC;
data.flags = DB_DBT_MALLOC;
if (isfirst)
@@ -1304,9 +1305,12 @@ upgradedn_producer(void *param)
/* call post-entry plugin */
plugin_call_entryfetch_plugins((char **)&data.dptr, &data.dsize);
+
+ slapi_ch_free_string((void**)&ecopy);
ecopy = (char *)slapi_ch_malloc(data.dsize + 1);
memcpy(ecopy, data.dptr, data.dsize);
*(ecopy + data.dsize) = '\0';
+
if (entryrdn_get_switch()) {
char *rdn = NULL;
@@ -1391,7 +1395,6 @@ upgradedn_producer(void *param)
e =
slapi_str2entry(data.data, SLAPI_STR2ENTRY_USE_OBSOLETE_DNFORMAT);
}
- slapi_ch_free(&(data.data));
if ( NULL == e ) {
if (job->task) {
slapi_task_log_notice(job->task,
@@ -1534,7 +1537,6 @@ upgradedn_producer(void *param)
}
} /* if (slapi_attr_is_dn_syntax_attr(a)) */
} /* for (a = e->e_attrs; a; a = a->a_next) */
- slapi_ch_free_string(&ecopy);
if (skipit) {
upgradedn_free_list(&ud_list);
slapi_entry_free(e); e = NULL;
@@ -1705,12 +1707,16 @@ bail:
} else {
info->state = FINISHED;
}
- return;
+ goto done;
error:
dbc->c_close(dbc);
dblayer_release_aux_id2entry( be, db, env );
info->state = ABORTED;
+
+done:
+ slapi_ch_free_string((void**)&ecopy);
+ slapi_ch_free(&(data.data));
}
static void
@@ -2536,10 +2542,9 @@ import_worker(void *param)
if (0 != ret) {
goto error;
}
- index_buffer_terminate(substring_key_buffer);
}
info->state = FINISHED;
- return;
+ goto done;
error:
if (ret == DB_RUNRECOVERY) {
@@ -2550,6 +2555,11 @@ error:
}
info->state = ABORTED;
+
+done:
+ if (substring_key_buffer) {
+ index_buffer_terminate(substring_key_buffer);
+ }
}
@@ -3129,6 +3139,7 @@ dse_conf_verify_core(struct ldbminfo *li, char *src_dir, char *file_name, char *
if (entry_filter != NULL) /* Single instance restoration */
{
if (NULL == strstr(estr, entry_filter))
+ slapi_ch_free_string(&estr);
continue;
}