barbieri pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=763251e50f6e51e5b2385f9e2d366a0b045dbcea

commit 763251e50f6e51e5b2385f9e2d366a0b045dbcea
Author: Gustavo Sverzut Barbieri <barbi...@profusion.mobi>
Date:   Thu Dec 1 16:23:23 2016 -0200

    efl_debugd: check for fwrite() return.
    
    if it fail, close the file and turn off logging for that client.
    
    Fixes CID 1366465
---
 src/bin/efl/efl_debugd.c | 17 +++++++++++++++--
 1 file changed, 15 insertions(+), 2 deletions(-)

diff --git a/src/bin/efl/efl_debugd.c b/src/bin/efl/efl_debugd.c
index 1934c81..5c149d0 100644
--- a/src/bin/efl/efl_debugd.c
+++ b/src/bin/efl/efl_debugd.c
@@ -285,8 +285,21 @@ _process_command(void *data, const char op[static 4], 
const Eina_Slice payload)
                   header[1] = blocksize;
                   memcpy(header + 2, payload.mem, sizeof(int));
 
-                  fwrite(header, 12, 1, c->evlog_file);
-                  fwrite(payload.bytes + sizeof(int), blocksize, 1, 
c->evlog_file);
+                  if ((fwrite(header, 12, 1, c->evlog_file) != 1) ||
+                      (fwrite(payload.bytes + sizeof(int), blocksize, 1, 
c->evlog_file) != 1))
+                    {
+                       fprintf(stderr, "INFO: failed to write log file for 
client %p [pid: %d]\n", c, (int)c->pid);
+                       fclose(c->evlog_file);
+                       c->evlog_file = NULL;
+                       c->evlog_on = 0;
+
+                       send_cli(c, EVOF, NULL, 0);
+                       if (c->evlog_fetch_timer)
+                         {
+                            ecore_timer_del(c->evlog_fetch_timer);
+                            c->evlog_fetch_timer = NULL;
+                         }
+                    }
                }
           }
      }

-- 


Reply via email to