Zebediah Figura z.figura12@gmail.com writes:
unix_len = sizeof(unix_addr);win_addr = (struct WS_sockaddr *)(out_data + req->recv_len + sizeof(int));if (getsockname( fd, &unix_addr.addr, &unix_len ) < 0 ||(win_len = sockaddr_from_unix( &unix_addr, win_addr, req->local_len )) < 0){set_win32_error( sock_get_error( errno ) );free( out_data );return;}*(int *)(out_data + req->recv_len) = win_len;
You need to make sure the lengths are properly aligned, or else use memcpy() when storing ints or WS_sockaddr data into the buffer.