forked from enlightenment/efl
efreet: free the allocated buffer before returning
This fixes the commit 169a08c03a
(efreetd:
BSD optimizations). Coverity rightly pointed out six different leaks of
various buffers on error paths.
CID: 1374949 1374950 1374951 1374952 1374953 1374954
This commit is contained in:
parent
2653fd3fda
commit
55676b335c
|
@ -196,7 +196,11 @@ subdir_cache_save(void)
|
||||||
efreet_cache_home_get(), efreet_hostname_get());
|
efreet_cache_home_get(), efreet_hostname_get());
|
||||||
|
|
||||||
tmpfd = eina_file_mkstemp(eina_strbuf_string_get(buf), &tmpstr);
|
tmpfd = eina_file_mkstemp(eina_strbuf_string_get(buf), &tmpstr);
|
||||||
if (tmpfd < 0) return;
|
if (tmpfd < 0)
|
||||||
|
{
|
||||||
|
eina_strbuf_free(buf);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
eina_strbuf_reset(buf);
|
eina_strbuf_reset(buf);
|
||||||
|
|
||||||
|
@ -324,10 +328,15 @@ icon_cache_update_cache_cb(void *data EINA_UNUSED)
|
||||||
if (icon_cache_exe)
|
if (icon_cache_exe)
|
||||||
{
|
{
|
||||||
icon_queue = EINA_TRUE;
|
icon_queue = EINA_TRUE;
|
||||||
|
eina_strbuf_free(file);
|
||||||
return ECORE_CALLBACK_CANCEL;
|
return ECORE_CALLBACK_CANCEL;
|
||||||
}
|
}
|
||||||
icon_queue = EINA_FALSE;
|
icon_queue = EINA_FALSE;
|
||||||
if ((!icon_flush) && (!icon_exts)) return ECORE_CALLBACK_CANCEL;
|
if ((!icon_flush) && (!icon_exts))
|
||||||
|
{
|
||||||
|
eina_strbuf_free(file);
|
||||||
|
return ECORE_CALLBACK_CANCEL;
|
||||||
|
}
|
||||||
|
|
||||||
if (icon_change_monitors) eina_hash_free(icon_change_monitors);
|
if (icon_change_monitors) eina_hash_free(icon_change_monitors);
|
||||||
if (icon_change_monitors_mon) eina_hash_free(icon_change_monitors_mon);
|
if (icon_change_monitors_mon) eina_hash_free(icon_change_monitors_mon);
|
||||||
|
@ -650,7 +659,11 @@ icon_changes_listen(void)
|
||||||
if (!buf) return;
|
if (!buf) return;
|
||||||
|
|
||||||
stack = eina_inarray_new(sizeof(struct stat), 16);
|
stack = eina_inarray_new(sizeof(struct stat), 16);
|
||||||
if (!stack) return;
|
if (!stack)
|
||||||
|
{
|
||||||
|
eina_strbuf_free(buf);
|
||||||
|
return;
|
||||||
|
}
|
||||||
icon_changes_listen_recursive(stack, efreet_icon_deprecated_user_dir_get(), EINA_TRUE);
|
icon_changes_listen_recursive(stack, efreet_icon_deprecated_user_dir_get(), EINA_TRUE);
|
||||||
eina_inarray_flush(stack);
|
eina_inarray_flush(stack);
|
||||||
icon_changes_listen_recursive(stack, efreet_icon_user_dir_get(), EINA_TRUE);
|
icon_changes_listen_recursive(stack, efreet_icon_user_dir_get(), EINA_TRUE);
|
||||||
|
@ -715,10 +728,10 @@ fill_list(const char *file, Eina_List **l)
|
||||||
Eina_File_Line *line = NULL;
|
Eina_File_Line *line = NULL;
|
||||||
Eina_Strbuf *buf = eina_strbuf_new();
|
Eina_Strbuf *buf = eina_strbuf_new();
|
||||||
if (!buf) return;
|
if (!buf) return;
|
||||||
|
|
||||||
eina_strbuf_append_printf(buf, "%s/efreet/%s", efreet_cache_home_get(), file);
|
eina_strbuf_append_printf(buf, "%s/efreet/%s", efreet_cache_home_get(), file);
|
||||||
f = eina_file_open(eina_strbuf_string_get(buf), EINA_FALSE);
|
f = eina_file_open(eina_strbuf_string_get(buf), EINA_FALSE);
|
||||||
if (!f) return;
|
if (!f) goto error_buf;
|
||||||
it = eina_file_map_lines(f);
|
it = eina_file_map_lines(f);
|
||||||
if (!it) goto error;
|
if (!it) goto error;
|
||||||
EINA_ITERATOR_FOREACH(it, line)
|
EINA_ITERATOR_FOREACH(it, line)
|
||||||
|
@ -731,8 +744,9 @@ fill_list(const char *file, Eina_List **l)
|
||||||
}
|
}
|
||||||
eina_iterator_free(it);
|
eina_iterator_free(it);
|
||||||
error:
|
error:
|
||||||
eina_strbuf_free(buf);
|
|
||||||
eina_file_close(f);
|
eina_file_close(f);
|
||||||
|
error_buf:
|
||||||
|
eina_strbuf_free(buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -757,6 +771,10 @@ save_list(const char *file, Eina_List *l)
|
||||||
eina_strbuf_append_printf(buf, "%s/efreet/%s", efreet_cache_home_get(), file);
|
eina_strbuf_append_printf(buf, "%s/efreet/%s", efreet_cache_home_get(), file);
|
||||||
f = fopen(eina_strbuf_string_get(buf), "wb");
|
f = fopen(eina_strbuf_string_get(buf), "wb");
|
||||||
if (!f) return;
|
if (!f) return;
|
||||||
|
{
|
||||||
|
eina_strbuf_free(buf);
|
||||||
|
return;
|
||||||
|
}
|
||||||
EINA_LIST_FOREACH(l, ll, path)
|
EINA_LIST_FOREACH(l, ll, path)
|
||||||
fprintf(f, "%s\n", path);
|
fprintf(f, "%s\n", path);
|
||||||
fclose(f);
|
fclose(f);
|
||||||
|
|
Loading…
Reference in New Issue