diff options
author | Nathan Kinder <nkinder@redhat.com> | 2010-09-13 08:10:29 -0700 |
---|---|---|
committer | Nathan Kinder <nkinder@redhat.com> | 2010-09-13 08:10:29 -0700 |
commit | 96cf8e3d42a2c04df7284654fabb31989c58a892 (patch) | |
tree | 7023967b8cb85c868da4a009342d30c4b66b9396 /ldap/servers | |
parent | b99854b931155e4cbaa24e72b3df7debe0418b56 (diff) | |
download | ds-96cf8e3d42a2c04df7284654fabb31989c58a892.tar.gz ds-96cf8e3d42a2c04df7284654fabb31989c58a892.tar.xz ds-96cf8e3d42a2c04df7284654fabb31989c58a892.zip |
Bug 630091 - (cov#15514) Initialize DBT in entryrdn_get_parent()
In entryrdn_get_parent(), there is a DBT structure that we can use
without initializing. If we goto the bail label, we try to free
data.data, but data was never initialized. We should clear the
memory used by data in the beginning of the function before we have
an opportunity to goto bail.
Diffstat (limited to 'ldap/servers')
-rw-r--r-- | ldap/servers/slapd/back-ldbm/ldbm_entryrdn.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/ldap/servers/slapd/back-ldbm/ldbm_entryrdn.c b/ldap/servers/slapd/back-ldbm/ldbm_entryrdn.c index daa116ae..20779994 100644 --- a/ldap/servers/slapd/back-ldbm/ldbm_entryrdn.c +++ b/ldap/servers/slapd/back-ldbm/ldbm_entryrdn.c @@ -1189,6 +1189,9 @@ entryrdn_get_parent(backend *be, slapi_log_error(SLAPI_LOG_TRACE, ENTRYRDN_TAG, "--> entryrdn_get_parent\n"); + /* Initialize data */ + memset(&data, 0, sizeof(data)); + if (NULL == be || NULL == rdn || 0 == id || NULL == prdn || NULL == pid) { slapi_log_error(SLAPI_LOG_FATAL, ENTRYRDN_TAG, "entryrdn_get_parent: Param error: Empty %s\n", @@ -1232,7 +1235,6 @@ entryrdn_get_parent(backend *be, slapi_ch_free_string(&orignrdn); } - memset(&data, 0, sizeof(data)); data.flags = DB_DBT_MALLOC; /* Setting up a key for the node to get its parent */ |