Author: phater Date: Thu May 25 14:42:24 2017 New Revision: 74650
URL: http://svn.reactos.org/svn/reactos?rev=74650&view=rev Log: [WS2_32] Add some parameters check for getsockname. Use value size for size check instead of type in bind. ROSTEST-278
Modified: trunk/reactos/dll/win32/ws2_32/src/sockctrl.c trunk/reactos/dll/win32/ws2_32/src/socklife.c
Modified: trunk/reactos/dll/win32/ws2_32/src/sockctrl.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ws2_32/src/sockct... ============================================================================== --- trunk/reactos/dll/win32/ws2_32/src/sockctrl.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/ws2_32/src/sockctrl.c [iso-8859-1] Thu May 25 14:42:24 2017 @@ -217,20 +217,28 @@ /* Get the Socket Context */ if ((Socket = WsSockGetSocket(s))) { - /* Make the call */ - Status = Socket->Provider->Service.lpWSPGetSockName(s, - name, - namelen, - &ErrorCode); - - /* Deference the Socket Context */ - WsSockDereference(Socket); - - /* Return Provider Value */ - if (Status == ERROR_SUCCESS) return Status; - - /* If everything seemed fine, then the WSP call failed itself */ - if (ErrorCode == NO_ERROR) ErrorCode = WSASYSCALLFAILURE; + if (name && namelen && (*namelen >= sizeof(*name))) + { + /* Make the call */ + Status = Socket->Provider->Service.lpWSPGetSockName(s, + name, + namelen, + &ErrorCode); + + /* Deference the Socket Context */ + WsSockDereference(Socket); + + /* Return Provider Value */ + if (Status == ERROR_SUCCESS) return Status; + + /* If everything seemed fine, then the WSP call failed itself */ + if (ErrorCode == NO_ERROR) ErrorCode = WSASYSCALLFAILURE; + } + else + { + /* name or namelen not valid */ + ErrorCode = WSAEFAULT; + } } else {
Modified: trunk/reactos/dll/win32/ws2_32/src/socklife.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/ws2_32/src/sockli... ============================================================================== --- trunk/reactos/dll/win32/ws2_32/src/socklife.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/ws2_32/src/socklife.c [iso-8859-1] Thu May 25 14:42:24 2017 @@ -48,7 +48,7 @@ /* Get the Socket Context */ if ((Socket = WsSockGetSocket(s))) { - if (name && (namelen >= sizeof(struct sockaddr))) + if (name && (namelen >= sizeof(*name))) { /* Make the call */ Status = Socket->Provider->Service.lpWSPBind(s,