From 6a0de945e00938f86c5224bf4f2fb5e8a526b3b3 Mon Sep 17 00:00:00 2001 From: "Carsten Haitzler (Rasterman)" Date: Sat, 15 Feb 2020 11:56:13 +0000 Subject: [PATCH] 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)