summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNoriko Hosoi <nhosoi@redhat.com>2010-06-30 11:03:56 -0700
committerNoriko Hosoi <nhosoi@redhat.com>2010-07-07 17:17:06 -0700
commitf43d023a12e16658f8bc62bc3d471805ec3155d3 (patch)
treef7027365c61ec1a21cdd3ea4a28b9181f3a0d28d
parent55a23aa703421013764231a3dfa547c11ef5e2dc (diff)
downloadds-f43d023a12e16658f8bc62bc3d471805ec3155d3.tar.gz
ds-f43d023a12e16658f8bc62bc3d471805ec3155d3.tar.xz
ds-f43d023a12e16658f8bc62bc3d471805ec3155d3.zip
609255 - fix coverity Defect Type: Memory - illegal accesses issues
https://bugzilla.redhat.com/show_bug.cgi?id=609255 12236 UNINIT Triaged Unassigned Bug Minor Fix Required dblayer_get_aux_id2entry() ds/ldap/servers/slapd/back-ldbm/dblayer.c Comment: If a backend instance info (inst) or ldbminfo (li) or dblayer private info (opriv) is not available, uninitialized priv is passed to slapi_ch_free_string and slapi_ch_free. We need to init priv to NULL and handle done: case if priv is NULL.
-rw-r--r--ldap/servers/slapd/back-ldbm/dblayer.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/ldap/servers/slapd/back-ldbm/dblayer.c b/ldap/servers/slapd/back-ldbm/dblayer.c
index 598b9976..d9f4c2fa 100644
--- a/ldap/servers/slapd/back-ldbm/dblayer.c
+++ b/ldap/servers/slapd/back-ldbm/dblayer.c
@@ -2279,9 +2279,9 @@ int dblayer_get_aux_id2entry(backend *be, DB **ppDB, DB_ENV **ppEnv)
struct dblayer_private_env *mypEnv = NULL;
DB *dbp = NULL;
int rval = 1;
- struct ldbminfo *li;
- dblayer_private *opriv;
- dblayer_private *priv;
+ struct ldbminfo *li = NULL;
+ dblayer_private *opriv = NULL;
+ dblayer_private *priv = NULL;
char *subname = NULL;
int envflags;
size_t cachesize;
@@ -2433,8 +2433,10 @@ err:
ldbm_delete_dirs(priv->dblayer_home_directory);
done:
slapi_ch_free_string(&id2entry_file);
- slapi_ch_free_string(&priv->dblayer_home_directory);
- slapi_ch_free_string(&priv->dblayer_log_directory);
+ if (priv) {
+ slapi_ch_free_string(&priv->dblayer_home_directory);
+ slapi_ch_free_string(&priv->dblayer_log_directory);
+ }
/* Don't free priv->dblayer_data_directories since priv doesn't own the memory */
slapi_ch_free((void **)&priv);
slapi_ch_free((void **)&mypEnv);