diff options
| author | Nikola Pajkovsky <npajkovs@redhat.com> | 2010-10-06 12:46:12 +0200 |
|---|---|---|
| committer | Nikola Pajkovsky <npajkovs@redhat.com> | 2010-10-06 12:46:12 +0200 |
| commit | 35b4fbb2a01107854fdfcee158f642f667f58f0d (patch) | |
| tree | d98294368c154d505dd33069eae5c14a1dbe9104 /src/daemon/Settings.cpp | |
| parent | 350eacf7f1948d52d6c71789845b0b640bb048ac (diff) | |
| download | abrt-35b4fbb2a01107854fdfcee158f642f667f58f0d.tar.gz abrt-35b4fbb2a01107854fdfcee158f642f667f58f0d.tar.xz abrt-35b4fbb2a01107854fdfcee158f642f667f58f0d.zip | |
Settings.cpp: avoid double free corruption
I meant, that settings_free() should not only do
free(g_settings_*);
but also should do
g_settings_* = NULL;
Otherwise calling settings_free() twice will cause double-free
and likely segfault.
Signed-off-by: Nikola Pajkovsky <npajkovs@redhat.com>
Diffstat (limited to 'src/daemon/Settings.cpp')
| -rw-r--r-- | src/daemon/Settings.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/daemon/Settings.cpp b/src/daemon/Settings.cpp index f7b7d2ef..a85bb419 100644 --- a/src/daemon/Settings.cpp +++ b/src/daemon/Settings.cpp @@ -571,18 +571,23 @@ void settings_free() free((char*)li->data); g_list_free(g_settings_setOpenGPGPublicKeys); + g_settings_setOpenGPGPublicKeys = NULL; for (GList *li = g_settings_setBlackListedPkgs; li != NULL; li = g_list_next(li)) free((char*)li->data); g_list_free(g_settings_setBlackListedPkgs); + g_settings_setBlackListedPkgs = NULL; for (GList *li = g_settings_setBlackListedPaths; li != NULL; li = g_list_next(li)) free((char*)li->data); g_list_free(g_settings_setBlackListedPaths); + g_settings_setBlackListedPaths = NULL; free(g_settings_sDatabase); + g_settings_sDatabase = NULL; free(g_settings_sWatchCrashdumpArchiveDir); + g_settings_sWatchCrashdumpArchiveDir = NULL; } |
