discomfitor pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=98e14ef3d496c2665395f8d8cf84b35a47739154

commit 98e14ef3d496c2665395f8d8cf84b35a47739154
Author: Mike Blumenkrantz <zm...@osg.samsung.com>
Date:   Wed Jul 12 12:00:52 2017 -0400

    efl_wl: error and cleanup on CLOEXEC fail
    
    CID 1377530, 1377531
---
 src/lib/efl_wl/efl_wl.c | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/src/lib/efl_wl/efl_wl.c b/src/lib/efl_wl/efl_wl.c
index d1760a39e5..6f9dd313d2 100644
--- a/src/lib/efl_wl/efl_wl.c
+++ b/src/lib/efl_wl/efl_wl.c
@@ -3466,10 +3466,15 @@ seat_keymap_update(Comp_Seat *s)
    str = xkb_map_get_as_string(s->kbd.keymap);
    s->kbd.keymap_mem_size = strlen(str) + 1;
    s->kbd.keymap_fd = eina_file_mkstemp("comp-keymapXXXXXX", &file);
-   {
-      int flags = fcntl(s->kbd.keymap_fd, F_GETFD);
-      fcntl(s->kbd.keymap_fd, F_SETFD, flags | FD_CLOEXEC);
-   }
+   if (!eina_file_close_on_exec(s->kbd.keymap_fd, 1))
+     {
+        EINA_LOG_ERR("Failed to set CLOEXEC on fd %d\n", s->kbd.keymap_fd);
+        close(s->kbd.keymap_fd);
+        s->kbd.keymap_fd = -1;
+        xkb_state_unref(s->kbd.state);
+        s->kbd.state = NULL;
+        return;
+     }
    ftruncate(s->kbd.keymap_fd, s->kbd.keymap_mem_size);
    eina_file_unlink(file);
    eina_tmpstr_del(file);

-- 


Reply via email to