winhttp(4/5): Support IPv6 addresses in open_connection (try 2)

Juan Lang juan.lang at gmail.com
Tue Jul 7 17:09:00 CDT 2009


I spotted a possible buffer overrun in the old version, so please use
this one instead.

Thanks,
--Juan
-------------- next part --------------
From 6718d74f588cdd3935b1d1932686de46325d072f Mon Sep 17 00:00:00 2001
From: Juan Lang <juan.lang at gmail.com>
Date: Tue, 7 Jul 2009 15:04:57 -0700
Subject: [PATCH 4/5] Support IPv6 addresses in open_connection

---
 dlls/winhttp/request.c |    9 ++++++++-
 1 files changed, 8 insertions(+), 1 deletions(-)

diff --git a/dlls/winhttp/request.c b/dlls/winhttp/request.c
index d9147d3..af1d5ad 100644
--- a/dlls/winhttp/request.c
+++ b/dlls/winhttp/request.c
@@ -710,11 +710,15 @@ BOOL WINAPI WinHttpQueryHeaders( HINTERNET hrequest, DWORD level, LPCWSTR name,
     return ret;
 }
 
+#ifndef INET6_ADDRSTRLEN
+#define INET6_ADDRSTRLEN 46
+#endif
+
 static BOOL open_connection( request_t *request )
 {
     connect_t *connect;
     const void *addr;
-    char address[32];
+    char address[INET6_ADDRSTRLEN];
     WCHAR *addressW;
     INTERNET_PORT port;
     socklen_t slen;
@@ -733,6 +737,9 @@ static BOOL open_connection( request_t *request )
     case AF_INET:
         addr = &((struct sockaddr_in *)&connect->sockaddr)->sin_addr;
         break;
+    case AF_INET6:
+        addr = &((struct sockaddr_in6 *)&connect->sockaddr)->sin6_addr;
+        break;
     default:
         WARN("unsupported address family %d\n", connect->sockaddr.ss_family);
         return FALSE;
-- 
1.6.3.2


More information about the wine-patches mailing list