fix error handling of merkle torrents
This commit is contained in:
parent
f29bb69612
commit
a9085db760
|
@ -1,4 +1,5 @@
|
|||
|
||||
* fix error handling of some merkle torrents
|
||||
* fix error handling of unsupported hard-links
|
||||
|
||||
1.1.6 release
|
||||
|
|
|
@ -1258,8 +1258,15 @@ namespace libtorrent
|
|||
m_files.set_piece_length(0);
|
||||
return false;
|
||||
}
|
||||
int num_leafs = merkle_num_leafs(files.num_pieces());
|
||||
int num_nodes = merkle_num_nodes(num_leafs);
|
||||
if (files.num_pieces() <= 0)
|
||||
{
|
||||
ec = errors::no_files_in_torrent;
|
||||
// mark the torrent as invalid
|
||||
m_files.set_piece_length(0);
|
||||
return false;
|
||||
}
|
||||
int const num_leafs = merkle_num_leafs(files.num_pieces());
|
||||
int const num_nodes = merkle_num_nodes(num_leafs);
|
||||
if (num_nodes - num_leafs >= (2<<24))
|
||||
{
|
||||
ec = errors::too_many_pieces_in_torrent;
|
||||
|
|
|
@ -70,6 +70,7 @@ EXTRA_DIST = Jamfile \
|
|||
test_torrents/httpseed.torrent \
|
||||
test_torrents/invalid_file_size.torrent \
|
||||
test_torrents/invalid_info.torrent \
|
||||
test_torrents/invalid_merkle.torrent \
|
||||
test_torrents/invalid_name.torrent \
|
||||
test_torrents/invalid_name2.torrent \
|
||||
test_torrents/invalid_name3.torrent \
|
||||
|
|
|
@ -161,6 +161,7 @@ test_failing_torrent_t test_error_torrents[] =
|
|||
{ "unaligned_pieces.torrent", errors::torrent_invalid_hashes },
|
||||
{ "invalid_root_hash.torrent", errors::torrent_invalid_hashes },
|
||||
{ "invalid_root_hash2.torrent", errors::torrent_missing_pieces },
|
||||
{ "invalid_merkle.torrent", errors::no_files_in_torrent},
|
||||
{ "invalid_file_size.torrent", errors::torrent_invalid_length },
|
||||
{ "invalid_symlink.torrent", errors::torrent_invalid_name },
|
||||
};
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
d10:cion datei15992e4:infod6:lengthi000e4:name4:temp12:piece lengthi12e9:root hash20:‚ž¼Œ&¾ÇJW›}ÜA4u,·¼‘‡ee
|
Loading…
Reference in New Issue