summaryrefslogtreecommitdiffstats
path: root/ppapi
diff options
context:
space:
mode:
authordpolukhin@chromium.org <dpolukhin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-11-02 06:31:58 +0000
committerdpolukhin@chromium.org <dpolukhin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-11-02 06:31:58 +0000
commit157cc900b4c4e4128fc85c39c6a24bde55237a03 (patch)
treecc6483c3c1690a037d70b399e139d26d6c6a8512 /ppapi
parentdc2029f0fc2e26e5cb11fe783fd06e380247f4aa (diff)
downloadchromium_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.h3
-rw-r--r--ppapi/proxy/ppb_udp_socket_private_proxy.cc3
-rw-r--r--ppapi/shared_impl/private/net_address_private_impl.cc33
-rw-r--r--ppapi/shared_impl/private/net_address_private_impl.h4
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: