diff options
author | dpolukhin@chromium.org <dpolukhin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-11-02 06:31:58 +0000 |
---|---|---|
committer | dpolukhin@chromium.org <dpolukhin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-11-02 06:31:58 +0000 |
commit | 157cc900b4c4e4128fc85c39c6a24bde55237a03 (patch) | |
tree | cc6483c3c1690a037d70b399e139d26d6c6a8512 /ppapi | |
parent | dc2029f0fc2e26e5cb11fe783fd06e380247f4aa (diff) | |
download | chromium_src-157cc900b4c4e4128fc85c39c6a24bde55237a03.zip chromium_src-157cc900b4c4e4128fc85c39c6a24bde55237a03.tar.gz chromium_src-157cc900b4c4e4128fc85c39c6a24bde55237a03.tar.bz2 |
Use extensions socket permission for TCP/UDP socket APIs in Pepper
This CL is first step in removing whitelist of extensions.
It makes permission check same as extensions do.
BUG=124311
TEST=browser_tests for TCP/UDP
Committed: http://src.chromium.org/viewvc/chrome?view=rev&revision=165376
Review URL: https://codereview.chromium.org/10993078
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@165634 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ppapi')
-rw-r--r-- | ppapi/proxy/ppapi_messages.h | 3 | ||||
-rw-r--r-- | ppapi/proxy/ppb_udp_socket_private_proxy.cc | 3 | ||||
-rw-r--r-- | ppapi/shared_impl/private/net_address_private_impl.cc | 33 | ||||
-rw-r--r-- | ppapi/shared_impl/private/net_address_private_impl.h | 4 |
4 files changed, 29 insertions, 14 deletions
diff --git a/ppapi/proxy/ppapi_messages.h b/ppapi/proxy/ppapi_messages.h index 776aa75..9b68c63 100644 --- a/ppapi/proxy/ppapi_messages.h +++ b/ppapi/proxy/ppapi_messages.h @@ -1513,7 +1513,8 @@ IPC_MESSAGE_CONTROL3(PpapiHostMsg_PPBUDPSocket_Bind, IPC_MESSAGE_CONTROL2(PpapiHostMsg_PPBUDPSocket_RecvFrom, uint32 /* socket_id */, int32_t /* num_bytes */) -IPC_MESSAGE_CONTROL3(PpapiHostMsg_PPBUDPSocket_SendTo, +IPC_MESSAGE_CONTROL4(PpapiHostMsg_PPBUDPSocket_SendTo, + int32 /* routing_id */, uint32 /* socket_id */, std::string /* data */, PP_NetAddress_Private /* net_addr */) diff --git a/ppapi/proxy/ppb_udp_socket_private_proxy.cc b/ppapi/proxy/ppb_udp_socket_private_proxy.cc index 9b1184f..b5a6d93 100644 --- a/ppapi/proxy/ppb_udp_socket_private_proxy.cc +++ b/ppapi/proxy/ppb_udp_socket_private_proxy.cc @@ -71,7 +71,8 @@ void UDPSocket::SendRecvFrom(int32_t num_bytes) { void UDPSocket::SendSendTo(const std::string& data, const PP_NetAddress_Private& addr) { - SendToBrowser(new PpapiHostMsg_PPBUDPSocket_SendTo(socket_id_, data, addr)); + SendToBrowser(new PpapiHostMsg_PPBUDPSocket_SendTo( + API_ID_PPB_UDPSOCKET_PRIVATE, socket_id_, data, addr)); } void UDPSocket::SendClose() { diff --git a/ppapi/shared_impl/private/net_address_private_impl.cc b/ppapi/shared_impl/private/net_address_private_impl.cc index 6e15410..7a8e375 100644 --- a/ppapi/shared_impl/private/net_address_private_impl.cc +++ b/ppapi/shared_impl/private/net_address_private_impl.cc @@ -281,19 +281,11 @@ std::string ConvertIPv6AddressToString(const NetAddress* net_addr, PP_Var Describe(PP_Module /*module*/, const struct PP_NetAddress_Private* addr, PP_Bool include_port) { - const NetAddress* net_addr = ToNetAddress(addr); - if (!IsValid(net_addr)) + std::string str = NetAddressPrivateImpl::DescribeNetAddress( + *addr, PP_ToBool(include_port)); + if (str.empty()) return PP_MakeUndefined(); - - std::string description; - if (net_addr->is_ipv6) { - description = ConvertIPv6AddressToString(net_addr, - PP_ToBool(include_port)); - } else { - description = ConvertIPv4AddressToString(net_addr, - PP_ToBool(include_port)); - } - return StringVar::StringToPPVar(description); + return StringVar::StringToPPVar(str); } PP_Bool ReplacePort(const struct PP_NetAddress_Private* src_addr, @@ -498,4 +490,21 @@ bool NetAddressPrivateImpl::NetAddressToIPEndPoint( } #endif // !defined(OS_NACL) +// static +std::string NetAddressPrivateImpl::DescribeNetAddress( + const PP_NetAddress_Private& addr, + bool include_port) { + const NetAddress* net_addr = ToNetAddress(&addr); + if (!IsValid(net_addr)) + return std::string(); + + // On Windows, |NetAddressToString()| doesn't work in the sandbox. On Mac, + // the output isn't consistent with RFC 5952, at least on Mac OS 10.6: + // |getnameinfo()| collapses length-one runs of zeros (and also doesn't + // display the scope). + if (net_addr->is_ipv6) + return ConvertIPv6AddressToString(net_addr, include_port); + return ConvertIPv4AddressToString(net_addr, include_port); +} + } // namespace ppapi diff --git a/ppapi/shared_impl/private/net_address_private_impl.h b/ppapi/shared_impl/private/net_address_private_impl.h index db5d308..248ae14 100644 --- a/ppapi/shared_impl/private/net_address_private_impl.h +++ b/ppapi/shared_impl/private/net_address_private_impl.h @@ -5,6 +5,7 @@ #ifndef PPAPI_SHARED_IMPL_PRIVATE_NET_ADDRESS_PRIVATE_IMPL_H_ #define PPAPI_SHARED_IMPL_PRIVATE_NET_ADDRESS_PRIVATE_IMPL_H_ +#include <string> #include <vector> #include "base/basictypes.h" @@ -32,6 +33,9 @@ class PPAPI_SHARED_EXPORT NetAddressPrivateImpl { std::vector<unsigned char>* address, int* port); + static std::string DescribeNetAddress(const PP_NetAddress_Private& addr, + bool include_port); + static const PP_NetAddress_Private kInvalidNetAddress; private: |