Re: [PATCH v4 0/4] MR8991: iphlpapi: Implement GetBestRoute2() and GetBestInterfaceEx().
Bernhard Übelacker (@bernhardu) commented about dlls/iphlpapi/iphlpapi_main.c:
} }
+ uni_row = NULL; + if (!src && !(v6 && IN6_IS_ADDR_LINKLOCAL(&dst->Ipv6.sin6_addr))) + { + static const struct in6_addr ipv6_default_addr = {{{ 0x20, 0x01, 0x0d, 0xb8 }}}; + SOCKADDR_INET src_addr, dst_addr; + WORD ver = MAKEWORD (2, 2); + WSADATA data; + SOCKET s; + int len; + + WSAStartup ( ver, &data ); + if ((s = socket( dst->si_family, SOCK_DGRAM, IPPROTO_UDP )) == -1) goto skip_system_route; + dst_addr = *dst;
Hello @gofman, I fear asan gets triggered by this assignment. [This is the full output with a backtrace running the iphlpapi:iphlpapi test](https://gitlab.winehq.org/bernhardu/wine/-/blob/asan-pe_2025-09-13_wine-10.1...) If I understand it right, the size of `dst_addr` is 28 bytes, that much it tries to read from the `dst` pointer. Unfortunately this `dst` is reserved on the stack in `GetBestInterface` as `struct sockaddr_in sa_in;` which is just 16 bytes. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/8991#note_117605
participants (1)
-
Bernhard Übelacker