libfm/libfm-1.2.4-fix-use-after-free-cfgfile.patch
2016-08-28 22:25:26 +09:00

28 lines
900 B
Diff

--- libfm-2a537414def87ebd75024a74030e60582cd78c45/src/base/fm-config.c.orig 2016-06-27 17:41:36.000000000 +0900
+++ libfm-2a537414def87ebd75024a74030e60582cd78c45/src/base/fm-config.c 2016-08-28 15:23:42.557464377 +0900
@@ -339,14 +339,15 @@
{
const gchar * const *dirs, * const *dir;
char *path;
+ char *old_cfg_name;
GKeyFile* kf = g_key_file_new();
+ old_cfg_name = cfg->_cfg_name;
g_strfreev(cfg->modules_blacklist);
g_strfreev(cfg->system_modules_blacklist);
cfg->modules_blacklist = NULL;
cfg->system_modules_blacklist = NULL;
_cfg_monitor_free(cfg);
- g_free(cfg->_cfg_name);
if(G_LIKELY(!name))
name = "libfm/libfm.conf";
else
@@ -391,6 +392,7 @@
_out:
g_key_file_free(kf);
g_signal_emit(cfg, signals[CHANGED], 0);
+ g_free(old_cfg_name);
/* FIXME: compare and send individual changes instead */
}