From 6c98c37e30ea2a728ef27593c094fe8ed669e0a0 Mon Sep 17 00:00:00 2001 From: "Carsten Haitzler (Rasterman)" Date: Thu, 15 Aug 2019 00:22:42 +0100 Subject: [PATCH] dnd - handle dnd data that is not nul terminated already fix issue where we assumed dnd data is a nul terminated string. it's not. it's raw data. fix. --- src/bin/dnd.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/bin/dnd.c b/src/bin/dnd.c index 01daa5c..f68724a 100644 --- a/src/bin/dnd.c +++ b/src/bin/dnd.c @@ -172,12 +172,16 @@ Eina_Bool _cb_drop(void *data, Evas_Object *o EINA_UNUSED, Elm_Selection_Data *ev) { Evas_Object *win = data; - char **plist, **p, *esc; + char **plist, **p, *esc, *tmp; if (!ev->data) return EINA_TRUE; - plist = eina_str_split((char *) ev->data, "\n", -1); + tmp = malloc(ev->len + 1); + if (!tmp) return EINA_TRUE; + memcpy(tmp, ev->data, ev->len); + tmp[ev->len] = 0; + plist = eina_str_split(tmp, "\n", -1); for (p = plist; *p != NULL; ++p) { esc = _escape_parse(*p); @@ -198,6 +202,7 @@ _cb_drop(void *data, Evas_Object *o EINA_UNUSED, Elm_Selection_Data *ev) free(*plist); free(plist); + free(tmp); if (!pending_dir) _dnd_finish(win);