forked from premiere/premiere-libtorrent
fix asserts in old merkle code
This commit is contained in:
parent
55d549d582
commit
bb10385e6c
|
@ -1019,14 +1019,16 @@ namespace {
|
||||||
char const* ptr = recv_buffer.data() + 9;
|
char const* ptr = recv_buffer.data() + 9;
|
||||||
int const list_size = detail::read_int32(ptr);
|
int const list_size = detail::read_int32(ptr);
|
||||||
|
|
||||||
if (list_size > m_recv_buffer.packet_size() - 13)
|
if (list_size > m_recv_buffer.packet_size() - 13 || list_size < 0)
|
||||||
{
|
{
|
||||||
|
received_bytes(0, received);
|
||||||
disconnect(errors::invalid_hash_list, operation_t::bittorrent, peer_error);
|
disconnect(errors::invalid_hash_list, operation_t::bittorrent, peer_error);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_recv_buffer.packet_size() - 13 - list_size > t->block_size())
|
if (m_recv_buffer.packet_size() - 13 - list_size > t->block_size())
|
||||||
{
|
{
|
||||||
|
received_bytes(0, received);
|
||||||
disconnect(errors::packet_too_large, operation_t::bittorrent, peer_error);
|
disconnect(errors::packet_too_large, operation_t::bittorrent, peer_error);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1037,6 +1039,7 @@ namespace {
|
||||||
{
|
{
|
||||||
if (m_recv_buffer.packet_size() - 9 > t->block_size())
|
if (m_recv_buffer.packet_size() - 9 > t->block_size())
|
||||||
{
|
{
|
||||||
|
received_bytes(0, received);
|
||||||
disconnect(errors::packet_too_large, operation_t::bittorrent, peer_error);
|
disconnect(errors::packet_too_large, operation_t::bittorrent, peer_error);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1060,6 +1063,12 @@ namespace {
|
||||||
if (merkle)
|
if (merkle)
|
||||||
{
|
{
|
||||||
list_size = detail::read_int32(ptr);
|
list_size = detail::read_int32(ptr);
|
||||||
|
if (list_size < 0)
|
||||||
|
{
|
||||||
|
received_bytes(0, received);
|
||||||
|
disconnect(errors::invalid_hash_list, operation_t::bittorrent, peer_error);
|
||||||
|
return;
|
||||||
|
}
|
||||||
p.length = m_recv_buffer.packet_size() - list_size - header_size;
|
p.length = m_recv_buffer.packet_size() - list_size - header_size;
|
||||||
header_size += list_size;
|
header_size += list_size;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue