From 83d4890c74a91f9f2a61b3e2e515fbab0da155c3 Mon Sep 17 00:00:00 2001 From: Christopher Michael Date: Mon, 1 Apr 2019 10:02:57 -0400 Subject: efl_ui_selection_manager: Don't leak malloc'd data Summary: Coverity reports that we potentially leak char *s here. If we do not have 'data_ret', then the malloc'd 's' sould be freed as we are not going to use it. Fixes Coverity CID1396949 @fix Reviewers: raster, cedric, bu5hm4n, zmike Reviewed By: bu5hm4n Subscribers: #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D8523 --- src/lib/elementary/efl_ui_selection_manager.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) (limited to 'src/lib') diff --git a/src/lib/elementary/efl_ui_selection_manager.c b/src/lib/elementary/efl_ui_selection_manager.c index ef9d221d0d..cbef9226af 100644 --- a/src/lib/elementary/efl_ui_selection_manager.c +++ b/src/lib/elementary/efl_ui_selection_manager.c @@ -1142,15 +1142,20 @@ static Eina_Bool _x11_vcard_send(char *target EINA_UNUSED, void *data EINA_UNUSED, int size EINA_UNUSED, void **data_ret, int *size_ret, Ecore_X_Atom *ttype EINA_UNUSED, int *typesize EINA_UNUSED) { Sel_Manager_Selection *sel; - char *s; sel_debug("Vcard send called"); sel = *(Sel_Manager_Selection **)data; - s = malloc(sel->data.len + 1); - if (!s) return EINA_FALSE; - memcpy(s, sel->data.mem, sel->data.len); - s[sel->data.len] = 0; - if (data_ret) *data_ret = s; + if (data_ret) + { + char *s; + + s = malloc(sel->data.len + 1); + if (!s) return EINA_FALSE; + memcpy(s, sel->data.mem, sel->data.len); + s[sel->data.len] = 0; + *data_ret = s; + } + if (size_ret) *size_ret = sel->data.len; return EINA_TRUE; } -- cgit v1.2.1