| Index: net/ftp/ftp_network_transaction.cc
|
| diff --git a/net/ftp/ftp_network_transaction.cc b/net/ftp/ftp_network_transaction.cc
|
| index 4cbde2725b0b8c1f9bd2601f40b58dd0321a60f8..74bd6bf6f8dcdb9109dbc953fbeb5649084b4c02 100644
|
| --- a/net/ftp/ftp_network_transaction.cc
|
| +++ b/net/ftp/ftp_network_transaction.cc
|
| @@ -965,14 +965,16 @@ int FtpNetworkTransaction::ProcessResponseEPSV(
|
| switch (GetErrorClass(response.status_code)) {
|
| case ERROR_CLASS_INITIATED:
|
| return Stop(ERR_INVALID_RESPONSE);
|
| - case ERROR_CLASS_OK:
|
| - if (!ExtractPortFromEPSVResponse( response, &data_connection_port_))
|
| + case ERROR_CLASS_OK: {
|
| + int port;
|
| + if (!ExtractPortFromEPSVResponse(response, &port))
|
| return Stop(ERR_INVALID_RESPONSE);
|
| - if (data_connection_port_ < 1024 ||
|
| - !IsPortAllowedByFtp(data_connection_port_))
|
| + if (port < 1024 || !IsPortAllowedByFtp(port))
|
| return Stop(ERR_UNSAFE_PORT);
|
| + data_connection_port_ = static_cast<uint16>(port);
|
| next_state_ = STATE_DATA_CONNECT;
|
| break;
|
| + }
|
| case ERROR_CLASS_INFO_NEEDED:
|
| return Stop(ERR_INVALID_RESPONSE);
|
| case ERROR_CLASS_TRANSIENT_ERROR:
|
| @@ -999,14 +1001,16 @@ int FtpNetworkTransaction::ProcessResponsePASV(
|
| switch (GetErrorClass(response.status_code)) {
|
| case ERROR_CLASS_INITIATED:
|
| return Stop(ERR_INVALID_RESPONSE);
|
| - case ERROR_CLASS_OK:
|
| - if (!ExtractPortFromPASVResponse(response, &data_connection_port_))
|
| + case ERROR_CLASS_OK: {
|
| + int port;
|
| + if (!ExtractPortFromPASVResponse(response, &port))
|
| return Stop(ERR_INVALID_RESPONSE);
|
| - if (data_connection_port_ < 1024 ||
|
| - !IsPortAllowedByFtp(data_connection_port_))
|
| + if (port < 1024 || !IsPortAllowedByFtp(port))
|
| return Stop(ERR_UNSAFE_PORT);
|
| + data_connection_port_ = static_cast<uint16>(port);
|
| next_state_ = STATE_DATA_CONNECT;
|
| break;
|
| + }
|
| case ERROR_CLASS_INFO_NEEDED:
|
| return Stop(ERR_INVALID_RESPONSE);
|
| case ERROR_CLASS_TRANSIENT_ERROR:
|
|
|