Zebediah Figura (@zfigura) commented about server/sock.c:
if (unix_addr.addr.sa_family == AF_INET && !memcmp( &unix_addr.in.sin_addr, magic_loopback_addr, 4 )) unix_addr.in.sin_addr.s_addr = htonl( INADDR_LOOPBACK );
if (sock->family == WS_AF_UNIX && *((char *)(params + 1) + params->addr_len))
{
char *unix_path = (char *)(params + 1) + params->addr_len;
char unix_path_copy[PATH_MAX];
strcpy(unix_path_copy, unix_path);
if (chdir( dirname( unix_path_copy ) ) == -1)
{
set_error( sock_get_ntstatus( errno ) );
return;
}
memcpy( unix_addr.un.sun_path, basename( unix_path ), sizeof(unix_addr.un.sun_path) );
We shouldn't need this anymore now that we're pssing the real unix path, right?