| Index: native_client_sdk/src/libraries/nacl_io/socket/socket_node.cc
|
| diff --git a/native_client_sdk/src/libraries/nacl_io/socket/socket_node.cc b/native_client_sdk/src/libraries/nacl_io/socket/socket_node.cc
|
| index 831345557bd91d5f3ee3e35d3f3715c6f1a3bfc6..0fef5f269cca74811150fd4cb8b1e71ae4ff0d9a 100644
|
| --- a/native_client_sdk/src/libraries/nacl_io/socket/socket_node.cc
|
| +++ b/native_client_sdk/src/libraries/nacl_io/socket/socket_node.cc
|
| @@ -157,10 +157,11 @@ socklen_t SocketNode::ResourceToSockAddr(PP_Resource addr,
|
| addr4.sin_family = AF_INET;
|
| addr4.sin_port = ipv4.port;
|
| memcpy(&addr4.sin_addr, ipv4.addr, sizeof(ipv4.addr));
|
| - memcpy(out_addr, &addr4, len);
|
| + memcpy(out_addr, &addr4,
|
| + std::min(len, static_cast<socklen_t>(sizeof(addr4))));
|
|
|
| // Returns required size not copied size like getpeername/getsockname.
|
| - return sizeof(sockaddr_in);
|
| + return sizeof(addr4);
|
| }
|
|
|
| if (PP_TRUE == NetInterface()->DescribeAsIPv6Address(addr, &ipv6)) {
|
| @@ -168,10 +169,11 @@ socklen_t SocketNode::ResourceToSockAddr(PP_Resource addr,
|
| addr6.sin6_family = AF_INET6;
|
| addr6.sin6_port = ipv6.port;
|
| memcpy(&addr6.sin6_addr, ipv6.addr, sizeof(ipv6.addr));
|
| - memcpy(out_addr, &addr6, len);
|
| + memcpy(out_addr, &addr6,
|
| + std::min(len, static_cast<socklen_t>(sizeof(addr6))));
|
|
|
| // Returns required size not copied size like getpeername/getsockname.
|
| - return sizeof(sockaddr_in6);
|
| + return sizeof(addr6);
|
| }
|
|
|
| return 0;
|
|
|