discomfitor pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=200f45c2b5841133d3999c6b16c980be0d8a04f2

commit 200f45c2b5841133d3999c6b16c980be0d8a04f2
Author: Mike Blumenkrantz <zm...@osg.samsung.com>
Date:   Mon Jan 25 11:24:54 2016 -0500

    efreet: add locking for efreet_desktop_x_field_get()
    
    in a threaded environment, reading from a hash is not atomic and is
    subject to race conditions
    
    @fix
    
    ref 39417cf0ea4e457fbc8d50d120bb8ac776aa366f
---
 src/lib/efreet/efreet_desktop.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/src/lib/efreet/efreet_desktop.c b/src/lib/efreet/efreet_desktop.c
index f3cef0c..78d0f51 100644
--- a/src/lib/efreet/efreet_desktop.c
+++ b/src/lib/efreet/efreet_desktop.c
@@ -537,8 +537,10 @@ efreet_desktop_x_field_get(Efreet_Desktop *desktop, const 
char *key)
     EINA_SAFETY_ON_NULL_RETURN_VAL(desktop->x, NULL);
     EINA_SAFETY_ON_TRUE_RETURN_VAL(strncmp(key, "X-", 2), NULL);
 
+    eina_lock_take(&_lock);
     ret = eina_hash_find(desktop->x, key);
     ret = eina_stringshare_add(ret);
+    eina_lock_release(&_lock);
     if (ret && (!ret[0]))
       {
          /* invalid null key somehow accepted; remove */

-- 


Reply via email to