devilhorns pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=8009817d0773eb5ad2b6bbccc7f6f19c50f218ca

commit 8009817d0773eb5ad2b6bbccc7f6f19c50f218ca
Author: Christopher Michael <[email protected]>
Date:   Tue Mar 10 10:31:46 2020 -0400

    ecore-evas-wayland: Check for valid 'fd' before passing to write()
    
    write() cannot be passed a negative value. If
    ecore_main_fd_handler_fd_get returns -1, then this is an issue. Check
    for valid fd being returned from fd_handler_fd_get and if it is
    negative, then cleanup and get out.
    
    Fixes CID1420318
---
 src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_common.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_common.c 
b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_common.c
index 0c80b501cb..36d64d9940 100644
--- a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_common.c
+++ b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_common.c
@@ -2603,9 +2603,12 @@ typedef struct {
 static Eina_Bool
 _write_to_fd(void *data, Ecore_Fd_Handler *fd_handler)
 {
-   int fd = ecore_main_fd_handler_fd_get(fd_handler);
+   int fd;
    Delayed_Writing *slice = data;
 
+   fd = ecore_main_fd_handler_fd_get(fd_handler);
+   if (fd < 0) goto end;
+
    size_t len = write(fd, slice->slice.mem + slice->written_bytes, 
slice->slice.len - slice->written_bytes);
 
    slice->written_bytes += len;
@@ -2615,13 +2618,13 @@ _write_to_fd(void *data, Ecore_Fd_Handler *fd_handler)
      }
    else
      {
+end:
         ecore_main_fd_handler_del(fd_handler);
         free(slice->slice.mem);
         free(slice);
         close(fd);
         return EINA_FALSE;
      }
-
 }
 
 static Eina_Bool

-- 


Reply via email to