diff options
author | Konrad Grochowski <hcorg@minions.org.pl> | 2014-10-08 15:32:21 +0200 |
---|---|---|
committer | Konrad Grochowski <hcorg@minions.org.pl> | 2014-10-08 15:40:00 +0200 |
commit | d5f3be5ebdb2973b41b9bc902696845ed0b43f75 (patch) | |
tree | a166eeed69318ffa4284568deeb35cff723ed09d /lib/py/src | |
parent | 93fea15b51494a79992a5323c803325537134bd8 (diff) | |
download | thrift-d5f3be5ebdb2973b41b9bc902696845ed0b43f75.tar.gz |
THRIFT-2757: py - checkIntegerLimits optimized
Client: Python
Diffstat (limited to 'lib/py/src')
-rw-r--r-- | lib/py/src/protocol/TProtocol.py | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/lib/py/src/protocol/TProtocol.py b/lib/py/src/protocol/TProtocol.py index bd69067f8..e8ee799d7 100644 --- a/lib/py/src/protocol/TProtocol.py +++ b/lib/py/src/protocol/TProtocol.py @@ -403,11 +403,18 @@ class TProtocolBase: writer(val) def checkIntegerLimits(i, bits): - lo = -(2 ** (bits - 1)) - hi = 2 ** (bits - 1) - 1 - if not lo <= i <= hi: + if bits == 8 and (n < -128 or n > 127): raise TProtocolException(TProtocolException.INVALID_DATA, - "i%d value: %d is outside range: [%d, %d]" % (bits, i, lo, hi)) + "i8 requires -128 <= number <= 127") + elif bits == 16 and (n < -32768 or n > 32767): + raise TProtocolException(TProtocolException.INVALID_DATA, + "i16 requires -32768 <= number <= 32767") + elif bits == 32 and (n < -2147483648 or n > 2147483647): + raise TProtocolException(TProtocolException.INVALID_DATA, + "i32 requires -2147483648 <= number <= 2147483647") + elif bits == 64 and (n < -9223372036854775808 or n > 9223372036854775807): + raise TProtocolException(TProtocolException.INVALID_DATA, + "i64 requires -9223372036854775808 <= number <= 9223372036854775807") class TProtocolFactory: def getProtocol(self, trans): |