summaryrefslogtreecommitdiff
path: root/src/PeerMessageUtil.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2006-03-31 16:15:23 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2006-03-31 16:15:23 +0000
commitfc2307d47c525fb87bbfb166cfd35a2a2c0e9f56 (patch)
treea417b71c14bf58f03a181bcd84073f807ef3a3b4 /src/PeerMessageUtil.cc
parent3d3363a544290906b577c43583908ca00b2b0b0f (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.cc9
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());
}
}