diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2006-03-31 16:15:23 +0000 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2006-03-31 16:15:23 +0000 |
| commit | fc2307d47c525fb87bbfb166cfd35a2a2c0e9f56 (patch) | |
| tree | a417b71c14bf58f03a181bcd84073f807ef3a3b4 /src/PeerMessageUtil.cc | |
| parent | 3d3363a544290906b577c43583908ca00b2b0b0f (diff) | |
* src/Util.cc (isPowerOf): New function.
* src/Util.h (isPowerOf): New function.
* src/PeerMessageUtil.cc (checkLength): Added a check for length
whether or not it is power of 2.
Diffstat (limited to 'src/PeerMessageUtil.cc')
| -rw-r--r-- | src/PeerMessageUtil.cc | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/PeerMessageUtil.cc b/src/PeerMessageUtil.cc index 0585866a..29b1768d 100644 --- a/src/PeerMessageUtil.cc +++ b/src/PeerMessageUtil.cc @@ -151,8 +151,13 @@ void PeerMessageUtil::checkPieceOffset(const PeerMessage* message, int pieceLeng } void PeerMessageUtil::checkLength(const PeerMessage* message) { - if(message->getLength() > 128*1024) { - throw new DlAbortEx("too large length %d > 128KB", message->getLength()); + if(message->getLength() > MAX_BLOCK_LENGTH) { + throw new DlAbortEx("too large length %d > %dKB", message->getLength(), + MAX_BLOCK_LENGTH/1024); + } + if(!Util::isPowerOf(message->getLength(), 2)) { + throw new DlAbortEx("invalid length %d, which is not power of 2", + message->getLength()); } } |
