mirror of
https://github.com/RetroShare/RetroShare.git
synced 2024-10-01 02:35:48 -04:00
added a workaround for a bug in the cache system that asks for files of size 2^64-1. This results into a division by zero in ftChunkMap. Bu the time I find this bug, the workaroudn should avoid crashes.
git-svn-id: http://svn.code.sf.net/p/retroshare/code/branches/v0.5.0@2931 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
parent
531149d3bd
commit
f24b3c61f4
@ -972,6 +972,20 @@ bool ftController::FileRequest(std::string fname, std::string hash,
|
|||||||
return true ;
|
return true ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Bugs in the cache system can cause files with arbitrary size to be
|
||||||
|
// requested, causing a division by zero in ftChunkMap when size > 1MB *
|
||||||
|
// (2^32-1). I thus conservatively check for large size values.
|
||||||
|
//
|
||||||
|
if(size >= 1024ull*1024ull*((1ull << 32) - 1))
|
||||||
|
{
|
||||||
|
std::cerr << "FileRequest Error: unexpected size. This is probably a bug." << std::endl;
|
||||||
|
std::cerr << " name = " << fname << std::endl ;
|
||||||
|
std::cerr << " flags = " << flags << std::endl ;
|
||||||
|
std::cerr << " dest = " << dest << std::endl ;
|
||||||
|
std::cerr << " size = " << size << std::endl ;
|
||||||
|
return false ;
|
||||||
|
}
|
||||||
|
|
||||||
/* If file transfer is not enabled ....
|
/* If file transfer is not enabled ....
|
||||||
* save request for later. This will also
|
* save request for later. This will also
|
||||||
* mean that we will have to copy local files,
|
* mean that we will have to copy local files,
|
||||||
|
Loading…
Reference in New Issue
Block a user