diff options
| author | Noriko Hosoi <nhosoi@redhat.com> | 2010-06-30 11:03:56 -0700 |
|---|---|---|
| committer | Noriko Hosoi <nhosoi@redhat.com> | 2010-07-07 17:17:06 -0700 |
| commit | f43d023a12e16658f8bc62bc3d471805ec3155d3 (patch) | |
| tree | f7027365c61ec1a21cdd3ea4a28b9181f3a0d28d | |
| parent | 55a23aa703421013764231a3dfa547c11ef5e2dc (diff) | |
| download | ds-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.c | 12 |
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); |
