diff options
author | dpolukhin@chromium.org <dpolukhin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-11-01 14:46:09 +0000 |
---|---|---|
committer | dpolukhin@chromium.org <dpolukhin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-11-01 14:46:09 +0000 |
commit | 1dddacc24112b17d77f378d05a2ba25600f2a222 (patch) | |
tree | 52ceacc1e4cbd85c3ab87fbb481dbf17556ea2ee /ppapi/shared_impl/private | |
parent | 23c287eb2365b5055200def4e6e7186eef393c92 (diff) | |
download | chromium_src-1dddacc24112b17d77f378d05a2ba25600f2a222.zip chromium_src-1dddacc24112b17d77f378d05a2ba25600f2a222.tar.gz chromium_src-1dddacc24112b17d77f378d05a2ba25600f2a222.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
Review URL: https://chromiumcodereview.appspot.com/10993078
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@165376 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ppapi/shared_impl/private')
-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 |
2 files changed, 25 insertions, 12 deletions
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: |