[PATCH 2/3] ws2_32: Add page fault handler to inet_addr
Alex Henrie
alexhenrie24 at gmail.com
Wed May 20 09:11:17 CDT 2020
Signed-off-by: Alex Henrie <alexhenrie24 at gmail.com>
---
inet_pton, RtlIpv4StringToAddress, and RtlIpv6StringToAddress crash on
bad pointers, but not inet_addr.
---
dlls/ws2_32/socket.c | 9 +++++++--
dlls/ws2_32/tests/sock.c | 2 ++
2 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/dlls/ws2_32/socket.c b/dlls/ws2_32/socket.c
index 8e66ab8fec..5e1e9201ab 100644
--- a/dlls/ws2_32/socket.c
+++ b/dlls/ws2_32/socket.c
@@ -4462,8 +4462,13 @@ int WINAPI WSAHtons(SOCKET s, WS_u_short hostshort, WS_u_short *lpnetshort)
*/
WS_u_long WINAPI WS_inet_addr(const char *cp)
{
- if (!cp) return INADDR_NONE;
- return inet_addr(cp);
+ WS_u_long ret;
+ __TRY
+ ret = inet_addr(cp);
+ __EXCEPT_PAGE_FAULT
+ ret = INADDR_NONE;
+ __ENDTRY
+ return ret;
}
diff --git a/dlls/ws2_32/tests/sock.c b/dlls/ws2_32/tests/sock.c
index a89a964129..a38db46eab 100644
--- a/dlls/ws2_32/tests/sock.c
+++ b/dlls/ws2_32/tests/sock.c
@@ -4788,6 +4788,8 @@ static void test_inet_addr(void)
addr = inet_addr(NULL);
ok(addr == INADDR_NONE, "inet_addr succeeded unexpectedly\n");
+
+ inet_addr((const char *)0xdeadbeef); /* should not crash */
}
static void test_addr_to_print(void)
--
2.26.2
More information about the wine-devel
mailing list