unix-socket: remove stale socket before calling chdir()
unix_stream_listen() is given a path. It calls unix_sockaddr_init(), which in turn can call chdir(). After that a relative path doesn't mean the same as before. Any use of the original path should thus happen before that call. For that reason, unlink the given path (to get rid of a possibly existing stale socket) right at the beginning of the function. Noticed-by: Karsten Blees <karsten.blees@gmail.com> Signed-off-by: Rene Scharfe <l.s.r@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
8c2cfa5544
commit
2869b3e5da
@ -99,11 +99,12 @@ int unix_stream_listen(const char *path)
|
||||
struct sockaddr_un sa;
|
||||
struct unix_sockaddr_context ctx;
|
||||
|
||||
unlink(path);
|
||||
|
||||
if (unix_sockaddr_init(&sa, path, &ctx) < 0)
|
||||
return -1;
|
||||
fd = unix_stream_socket();
|
||||
|
||||
unlink(path);
|
||||
if (bind(fd, (struct sockaddr *)&sa, sizeof(sa)) < 0)
|
||||
goto fail;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user