Index: extensions/browser/api/socket/socket_api.cc |
diff --git a/extensions/browser/api/socket/socket_api.cc b/extensions/browser/api/socket/socket_api.cc |
index 509b060a1b20d6ae02e13d67491bede13f8aa318..f7a712d61161a7e84bb6cefb596a3ce9b3e20d8d 100644 |
--- a/extensions/browser/api/socket/socket_api.cc |
+++ b/extensions/browser/api/socket/socket_api.cc |
@@ -49,7 +49,7 @@ const char kMulticastSocketTypeError[] = "Only UDP socket supports multicast."; |
const char kSecureSocketTypeError[] = "Only TCP sockets are supported for TLS."; |
const char kSocketNotConnectedError[] = "Socket not connected"; |
const char kWildcardAddress[] = "*"; |
-const int kWildcardPort = 0; |
+const uint16 kWildcardPort = 0; |
SocketAsyncApiFunction::SocketAsyncApiFunction() {} |
@@ -192,7 +192,10 @@ SocketConnectFunction::~SocketConnectFunction() {} |
bool SocketConnectFunction::Prepare() { |
EXTENSION_FUNCTION_VALIDATE(args_->GetInteger(0, &socket_id_)); |
EXTENSION_FUNCTION_VALIDATE(args_->GetString(1, &hostname_)); |
- EXTENSION_FUNCTION_VALIDATE(args_->GetInteger(2, &port_)); |
+ int port; |
+ EXTENSION_FUNCTION_VALIDATE( |
+ args_->GetInteger(2, &port) && port >= 0 && port <= 65535); |
Peter Kasting
2014/11/12 23:54:26
Maybe we should have had these checks already?
Jeffrey Yasskin
2014/11/17 07:00:33
Yes.
|
+ port_ = static_cast<uint16>(port); |
return true; |
} |
@@ -278,7 +281,10 @@ void SocketDisconnectFunction::Work() { |
bool SocketBindFunction::Prepare() { |
EXTENSION_FUNCTION_VALIDATE(args_->GetInteger(0, &socket_id_)); |
EXTENSION_FUNCTION_VALIDATE(args_->GetString(1, &address_)); |
- EXTENSION_FUNCTION_VALIDATE(args_->GetInteger(2, &port_)); |
+ int port; |
+ EXTENSION_FUNCTION_VALIDATE( |
+ args_->GetInteger(2, &port) && port >= 0 && port <= 65535); |
+ port_ = static_cast<uint16>(port); |
return true; |
} |
@@ -480,7 +486,7 @@ void SocketRecvFromFunction::AsyncWorkStart() { |
void SocketRecvFromFunction::OnCompleted(int bytes_read, |
scoped_refptr<net::IOBuffer> io_buffer, |
const std::string& address, |
- int port) { |
+ uint16 port) { |
base::DictionaryValue* result = new base::DictionaryValue(); |
result->SetInteger(kResultCodeKey, bytes_read); |
if (bytes_read > 0) { |
@@ -508,7 +514,10 @@ bool SocketSendToFunction::Prepare() { |
base::BinaryValue* data = NULL; |
EXTENSION_FUNCTION_VALIDATE(args_->GetBinary(1, &data)); |
EXTENSION_FUNCTION_VALIDATE(args_->GetString(2, &hostname_)); |
- EXTENSION_FUNCTION_VALIDATE(args_->GetInteger(3, &port_)); |
+ int port; |
+ EXTENSION_FUNCTION_VALIDATE( |
+ args_->GetInteger(3, &port) && port >= 0 && port <= 65535); |
+ port_ = static_cast<uint16>(port); |
io_buffer_size_ = data->GetSize(); |
io_buffer_ = new net::WrappedIOBuffer(data->GetBuffer()); |