diff options
author | Simo Sorce <ssorce@redhat.com> | 2010-11-22 15:17:44 -0500 |
---|---|---|
committer | Simo Sorce <ssorce@redhat.com> | 2010-11-23 11:40:38 -0500 |
commit | aa70959f16bc9111798e14da5371c34438a7c146 (patch) | |
tree | b97b855c7e9ebe062125a6cd6960d5c28012afea | |
parent | 960fc6644714c1231a0822bc24b0750c873557df (diff) | |
download | freeipa-aa70959f16bc9111798e14da5371c34438a7c146.tar.gz freeipa-aa70959f16bc9111798e14da5371c34438a7c146.tar.xz freeipa-aa70959f16bc9111798e14da5371c34438a7c146.zip |
Fix modrdn plugin crash bug.
Constant values were assigned to variables gthat would later be freed
with slapi_ch_free_string(). Make copies instead so the free doesn't
blow. Also remove useless tests, as these functions already check for
NULL on their own.
Fixes: https://fedorahosted.org/freeipa/ticket/529
-rw-r--r-- | daemons/ipa-slapi-plugins/ipa-modrdn/ipa_modrdn.c | 35 |
1 files changed, 10 insertions, 25 deletions
diff --git a/daemons/ipa-slapi-plugins/ipa-modrdn/ipa_modrdn.c b/daemons/ipa-slapi-plugins/ipa-modrdn/ipa_modrdn.c index 5a0cef573..42f1da969 100644 --- a/daemons/ipa-slapi-plugins/ipa-modrdn/ipa_modrdn.c +++ b/daemons/ipa-slapi-plugins/ipa-modrdn/ipa_modrdn.c @@ -444,7 +444,7 @@ ipamodrdn_parse_config_entry(Slapi_Entry * e, bool apply) if (value && value[0]) { entry->prefix = value; } else { - entry->prefix = ""; + entry->prefix = slapi_ch_strdup(""); } LOG_CONFIG("----------> %s [%s]\n", IPAMODRDN_PREFIX, entry->prefix); @@ -452,7 +452,7 @@ ipamodrdn_parse_config_entry(Slapi_Entry * e, bool apply) if (value && value[0]) { entry->suffix = value; } else { - entry->suffix = ""; + entry->suffix = slapi_ch_strdup(""); } LOG_CONFIG("----------> %s [%s]\n", IPAMODRDN_SUFFIX, entry->suffix); @@ -556,30 +556,15 @@ ipamodrdn_free_config_entry(struct configEntry **entry) if (e->dn) { LOG_CONFIG("freeing config entry [%s]\n", e->dn); - slapi_ch_free_string(&e->dn); } - if (e->sattr) { - slapi_ch_free_string(&e->sattr); - } - if (e->tattr) { - slapi_ch_free_string(&e->tattr); - } - if (e->prefix) { - slapi_ch_free_string(&e->prefix); - } - if (e->suffix) { - slapi_ch_free_string(&e->prefix); - } - if (e->filter) { - slapi_ch_free_string(&e->filter); - } - if (e->slapi_filter) { - slapi_filter_free(e->slapi_filter, 1); - } - if (e->scope) { - slapi_ch_free_string(&e->scope); - } - + slapi_ch_free_string(&e->dn); + slapi_ch_free_string(&e->sattr); + slapi_ch_free_string(&e->tattr); + slapi_ch_free_string(&e->prefix); + slapi_ch_free_string(&e->suffix); + slapi_ch_free_string(&e->filter); + slapi_filter_free(e->slapi_filter, 1); + slapi_ch_free_string(&e->scope); slapi_ch_free((void **)entry); } |