raster pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=6a0de945e00938f86c5224bf4f2fb5e8a526b3b3

commit 6a0de945e00938f86c5224bf4f2fb5e8a526b3b3
Author: Carsten Haitzler (Rasterman) <[email protected]>
Date:   Sat Feb 15 11:56:13 2020 +0000

    ecore con - also be paranoid with same nul byte checks in path str
    
    this won't affect the target system which doesn't do abstract sockets
    anyway, and it's just unlink "" ... but check if first byte is nul for
    an asbtract socket and dont do lock files or unlinking in this case
---
 src/lib/ecore_con/efl_net_server_unix.c | 19 ++++++++++---------
 1 file changed, 10 insertions(+), 9 deletions(-)

diff --git a/src/lib/ecore_con/efl_net_server_unix.c 
b/src/lib/ecore_con/efl_net_server_unix.c
index 9f9af5a2a4..37d2c7302d 100644
--- a/src/lib/ecore_con/efl_net_server_unix.c
+++ b/src/lib/ecore_con/efl_net_server_unix.c
@@ -61,8 +61,6 @@ _efl_net_server_unix_bind_hang_lock_workaround(const char 
*address, Eina_Bool lo
    char *lockfile;
    int ret;
 
-   if (strncmp(address, "abstract:", strlen("abstract:")) == 0) return -1;
-
    addrlen = strlen(address);
    lockfile = malloc(addrlen + 1 + 5);
    if (!lockfile) return -1;
@@ -189,15 +187,18 @@ _efl_net_server_unix_bind(Eo *o, Efl_Net_Server_Unix_Data 
*pd)
           }
 
 #ifdef BIND_HANG_WORKAROUND
-        pd->lock_fd = _efl_net_server_unix_bind_hang_lock_workaround
-                        (address, EINA_TRUE, -1);
-        if (pd->lock_fd < 0)
+        if (addr.sun_path[0] != '\0')
           {
-             err = EADDRINUSE;
-             goto error;
+             pd->lock_fd = _efl_net_server_unix_bind_hang_lock_workaround
+               (addr.sun_path, EINA_TRUE, -1);
+             if (pd->lock_fd < 0)
+               {
+                  err = EADDRINUSE;
+                  goto error;
+               }
+             pd->have_lock_fd = EINA_TRUE;
+             unlink(addr.sun_path);
           }
-        unlink(addr.sun_path);
-        pd->have_lock_fd = EINA_TRUE;
 #endif
         r = bind(fd, (struct sockaddr *)&addr, addrlen);
         if (r != 0)

-- 


Reply via email to