On Wed Oct 1 23:57:24 2025 +0000, Paul Gofman wrote:
> I think the bug here is most likely in GetBestInterface() and should be
> fixed there (by using SOCKADDR_INET instead of struct sockaddr_in), and
> likely no bug in GetBestRoute2.
> TL;DL; Note GetBestRoute2 even zeroes output bestaddress in full and
> that is backed by the tests. Whether GetBestRoute2 accesses src and dst
> in full or shorter part in case of ipv4 is currently not tested, but I
> think it more likely does on Windows (and if I didn't have to fixup dst
> address in the concerned place I would just do 'connect( s, (struct
> sockaddr *)dst, sizeof(*dst) )' and that access would happen in ws2_32
> where it would copy the address for DeviceIoControl). That
> 'SOCKADDR_INET *' passed for dst, not a void pointer with explicit
> length, so from general sense it is totally valid to access the whole
> structure, and the implementation would naturally do it if it would, e.
> g., passing the address to nsiproxy or ws2_32 without interpreting here.
> Small chance that it doesn't access it on Windows of course, but I'd
> suggest we don't overdo it by testing this implementation detail on
> Windows in the absense of practical motivation, avoid adding extra code
> to GetBestRoute2 and just use the SOCKADDR_INET structure in GetBestInterface().
updated
--
https://gitlab.winehq.org/wine/wine/-/merge_requests/9085#note_117392