Module: wine Branch: master Commit: d1963ee2f19c931cbd6d7c039081440d08cb9011 URL: http://source.winehq.org/git/wine.git/?a=commit;h=d1963ee2f19c931cbd6d7c0390...
Author: Juan Lang juan.lang@gmail.com Date: Fri Oct 16 16:53:53 2009 -0700
ws2_32: Don't overwrite address length before checking it.
---
dlls/ws2_32/socket.c | 5 ++++- 1 files changed, 4 insertions(+), 1 deletions(-)
diff --git a/dlls/ws2_32/socket.c b/dlls/ws2_32/socket.c index a8d3efc..35f7b07 100644 --- a/dlls/ws2_32/socket.c +++ b/dlls/ws2_32/socket.c @@ -1219,13 +1219,16 @@ static int ws_sockaddr_u2ws(const struct sockaddr* uaddr, struct WS_sockaddr* ws win6old->sin6_port = uin6->sin6_port; win6old->sin6_flowinfo = uin6->sin6_flowinfo; memcpy(&win6old->sin6_addr,&uin6->sin6_addr,16); /* 16 bytes = 128 address bits */ - *wsaddrlen = sizeof(struct WS_sockaddr_in6_old); #ifdef HAVE_STRUCT_SOCKADDR_IN6_SIN6_SCOPE_ID if (*wsaddrlen >= sizeof(struct WS_sockaddr_in6)) { struct WS_sockaddr_in6* win6 = (struct WS_sockaddr_in6*)wsaddr; win6->sin6_scope_id = uin6->sin6_scope_id; *wsaddrlen = sizeof(struct WS_sockaddr_in6); } + else + *wsaddrlen = sizeof(struct WS_sockaddr_in6_old); +#else + *wsaddrlen = sizeof(struct WS_sockaddr_in6_old); #endif return 0; }