Browse Source

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.
Noriko Hosoi 15 years ago
parent
commit
f43d023a12
1 changed files with 7 additions and 5 deletions
  1. 7 5
      ldap/servers/slapd/back-ldbm/dblayer.c

+ 7 - 5
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);