Chromium Code Reviews| 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()); |