discomfitor pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=9aee7c249a8ef237dbc617474c0e45dea8a42475

commit 9aee7c249a8ef237dbc617474c0e45dea8a42475
Author: Mike Blumenkrantz <zm...@osg.samsung.com>
Date:   Mon Jan 25 11:20:55 2016 -0500

    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 a49a975..f3cef0c 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

-- 


Reply via email to