summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarsten Haitzler (Rasterman) <raster@rasterman.com>2017-02-08 19:10:44 +0900
committerCarsten Haitzler (Rasterman) <raster@rasterman.com>2017-02-08 21:19:39 +0900
commit24e34e19a1db84cdcb6241207cb99d14ca83c41b (patch)
treea4d7ff9d6c0a23d16da2a2ce53fd14b9fbabfb28
parent09e1a75f4fc0f9783d9d9c7a673d6fee2661b25b (diff)
elput - use vpath to get xdg runtime to also be setuid safe
this fixes CID 1357168 in the case of setuid binaries as vpath handles setuid cases.
-rw-r--r--src/lib/elput/elput_evdev.c15
1 files changed, 9 insertions, 6 deletions
diff --git a/src/lib/elput/elput_evdev.c b/src/lib/elput/elput_evdev.c
index a83ebc10de..028bf62af4 100644
--- a/src/lib/elput/elput_evdev.c
+++ b/src/lib/elput/elput_evdev.c
@@ -60,16 +60,19 @@ _keyboard_modifiers_update(Elput_Keyboard *kbd, Elput_Seat *seat)
60static int 60static int
61_keyboard_fd_get(off_t size) 61_keyboard_fd_get(off_t size)
62{ 62{
63 const char *path;
64 Eina_Tmpstr *fullname;
65 long flags;
63 int fd = 0; 66 int fd = 0;
64 char *path;
65 char tmp[PATH_MAX]; 67 char tmp[PATH_MAX];
66 long flags;
67 Eina_Tmpstr *fullname;
68
69 if (!(path = getenv("XDG_RUNTIME_DIR")))
70 return -1;
71 68
69 Efl_Vpath_File *file_obj =
70 efl_vpath_manager_fetch(EFL_VPATH_MANAGER_CLASS, "(:run:)");
71 efl_vpath_file_do(file_obj);
72 efl_vpath_file_wait(file_obj);
73 path = efl_vpath_file_result_get(file_obj);
72 snprintf(tmp, sizeof(tmp), "%s/elput-keymap-XXXXXX", path); 74 snprintf(tmp, sizeof(tmp), "%s/elput-keymap-XXXXXX", path);
75 efl_del(file_obj);
73 76
74 fd = eina_file_mkstemp(tmp, &fullname); 77 fd = eina_file_mkstemp(tmp, &fullname);
75 if (fd < 0) return -1; 78 if (fd < 0) return -1;