summaryrefslogtreecommitdiff
path: root/src/PeerMessageUtil.cc
diff options
context:
space:
mode:
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());
}
}