diff options
author | Carsten Haitzler (Rasterman) <raster@rasterman.com> | 2017-02-08 19:10:44 +0900 |
---|---|---|
committer | Carsten Haitzler (Rasterman) <raster@rasterman.com> | 2017-02-08 21:19:39 +0900 |
commit | 24e34e19a1db84cdcb6241207cb99d14ca83c41b (patch) | |
tree | a4d7ff9d6c0a23d16da2a2ce53fd14b9fbabfb28 /src/lib/elput | |
parent | 09e1a75f4fc0f9783d9d9c7a673d6fee2661b25b (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.
Diffstat (limited to 'src/lib/elput')
-rw-r--r-- | src/lib/elput/elput_evdev.c | 15 |
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) | |||
60 | static int | 60 | static 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; |