From 9aee7c249a8ef237dbc617474c0e45dea8a42475 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Mon, 25 Jan 2016 11:20:55 -0500 Subject: [PATCH] efreet: reject invalid "" data for Efreet_Desktop->x hash ref T3096 @fix --- src/lib/efreet/efreet_desktop.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/lib/efreet/efreet_desktop.c b/src/lib/efreet/efreet_desktop.c index a49a975776..f3cef0c98a 100644 --- a/src/lib/efreet/efreet_desktop.c +++ b/src/lib/efreet/efreet_desktop.c @@ -515,6 +515,7 @@ efreet_desktop_x_field_set(Efreet_Desktop *desktop, const char *key, const char { EINA_SAFETY_ON_NULL_RETURN_VAL(desktop, EINA_FALSE); EINA_SAFETY_ON_TRUE_RETURN_VAL(strncmp(key, "X-", 2), EINA_FALSE); + EINA_SAFETY_ON_TRUE_RETURN_VAL(data && (!data[0]), EINA_FALSE); eina_lock_take(&_lock); if (!desktop->x) @@ -537,10 +538,15 @@ efreet_desktop_x_field_get(Efreet_Desktop *desktop, const char *key) EINA_SAFETY_ON_TRUE_RETURN_VAL(strncmp(key, "X-", 2), NULL); ret = eina_hash_find(desktop->x, key); - if (!ret) - return NULL; + ret = eina_stringshare_add(ret); + if (ret && (!ret[0])) + { + /* invalid null key somehow accepted; remove */ + efreet_desktop_x_field_del(desktop, key); + eina_stringshare_replace(&ret, NULL); + } - return eina_stringshare_add(ret); + return ret; } EAPI Eina_Bool