relax packet length check prior to checking response code

Don't assume that an unsupported version response will contain anything past
the response code.
This commit is contained in:
Steven Siloti 2018-06-09 08:55:49 -07:00
parent 2cf1018fa0
commit f039cffeb3
1 changed files with 10 additions and 1 deletions

View File

@ -640,7 +640,7 @@ void natpmp::on_reply(error_code const& e
error_code ec;
m_send_timer.cancel(ec);
if (bytes_transferred < 12)
if (bytes_transferred < 4)
{
#ifndef TORRENT_DISABLE_LOGGING
log("received packet of invalid size: %d", int(bytes_transferred));
@ -686,6 +686,15 @@ void natpmp::on_reply(error_code const& e
return;
}
if ((version == version_natpmp && bytes_transferred < 12)
|| (version == version_pcp && bytes_transferred < 24))
{
#ifndef TORRENT_DISABLE_LOGGING
log("received packet of invalid size: %d", int(bytes_transferred));
#endif
return;
}
int lifetime = 0;
if (version == version_pcp)
{