raster pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=9eee1f80fc8fbd852bdf8b42eec663d818ffd5c2
commit 9eee1f80fc8fbd852bdf8b42eec663d818ffd5c2 Author: Carsten Haitzler (Rasterman) <[email protected]> Date: Thu Feb 9 11:27:48 2017 +0900 evas wayland shm engine - use vpath for getting xdg runtime dir this should make the wayland shm engine safe to use from setuid processes. it shouldnt depend on getenv of specific file paths if setuid. vpatrh takes care of this in one central place --- src/modules/evas/engines/wayland_shm/evas_shm.c | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/src/modules/evas/engines/wayland_shm/evas_shm.c b/src/modules/evas/engines/wayland_shm/evas_shm.c index 9d9535b..05c7ec3 100644 --- a/src/modules/evas/engines/wayland_shm/evas_shm.c +++ b/src/modules/evas/engines/wayland_shm/evas_shm.c @@ -82,11 +82,12 @@ static struct wl_shm_pool * _shm_pool_make(struct wl_shm *shm, int size, void **data) { struct wl_shm_pool *pool; - static const char tmp[] = "/evas-wayland_shm-XXXXXX"; + static const char tmp[] = "evas-wayland_shm-XXXXXX"; const char *path; char *name; int fd = 0; Eina_Tmpstr *fullname; + Efl_Vpath_File *file_obj; LOGFN(__FILE__, __LINE__, __FUNCTION__); @@ -94,19 +95,12 @@ _shm_pool_make(struct wl_shm *shm, int size, void **data) if (!shm) return NULL; /* create tmp file name */ - if ((path = getenv("XDG_RUNTIME_DIR"))) - { - if ((name = malloc(strlen(path) + sizeof(tmp)))) - strcpy(name, path); - } - else - { - if ((name = malloc(strlen("/tmp") + sizeof(tmp)))) - strcpy(name, "/tmp"); - } - + file_obj = efl_vpath_manager_fetch(EFL_VPATH_MANAGER_CLASS, "(:run:)/"); + efl_vpath_file_do(file_obj); + efl_vpath_file_wait(file_obj); + path = efl_vpath_file_result_get(file_obj); + if ((name = malloc(strlen(path) + sizeof(tmp)))) strcpy(name, path); if (!name) return NULL; - strcat(name, tmp); fd = eina_file_mkstemp(name, &fullname); --
