Zebediah Figura (@zfigura) commented about dlls/ws2_32/tests/sock.c:
> +
> + ret = listen(listener, 1);
> + ok(!ret, "Could not listen on Unix socket: %lu\n", GetLastError());
> +
> + client = socket(AF_UNIX, SOCK_STREAM, 0);
> + ok(client != INVALID_SOCKET, "Failed to create second Unix socket: %lu\n",
> + GetLastError());
> +
> + clientThread = CreateThread(NULL, 0, test_afunix_client_connect_thread,
> + &(struct afunix_thread_param){ client, addr }, 0, NULL);
> + ok(clientThread != NULL, "CreateThread failed unexpectedly: %ld\n", GetLastError());
> + server = accept(listener, NULL, NULL);
> + ok(server != INVALID_SOCKET, "Could not accept Unix socket connection: %lu\n",
> + GetLastError());
> +
> + WaitForSingleObject(clientThread, 1000);
If you're going to use a thread you should check this return value; if it fails then that means we have a bug in the implementation. We're also missing a CloseHandle().
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/2786#note_35925
Zebediah Figura (@zfigura) commented about dlls/ws2_32/socket.c:
>
> if (!(sync_event = get_sync_event())) return -1;
>
> - params = malloc( sizeof(int) + len );
> - ret_addr = malloc( len );
> + if (addr->sa_family == AF_UNIX && *addr->sa_data)
Accessing sa_data in this way is convenient, but looks wrong. I'd rather just see the cast to sockaddr_un written out anyway.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/2786#note_35919
Zebediah Figura (@zfigura) commented about dlls/ws2_32/socket.c:
> }
> break;
>
> + case AF_UNIX:
> + if (len < sizeof(struct sockaddr_un))
> + {
> + SetLastError( WSAEFAULT );
> + return -1;
> + }
> + break;
Can the length be less than the whole size of sun_path? As always we should test for this.
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/2786#note_35918