efreet: reject invalid "" data for Efreet_Desktop->x hash

ref T3096

@fix
This commit is contained in:
Mike Blumenkrantz 2016-01-25 11:20:55 -05:00
parent 3d9a6e238a
commit 9aee7c249a
1 changed files with 9 additions and 3 deletions

View File

@ -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