From: Kevin Clark Date: Wed, 18 Jun 2008 01:07:23 +0000 (+0000) Subject: Raise a RangeError if Protocol.write_ is called with a value that doesn... X-Git-Tag: 0.2.0~598 X-Git-Url: https://source.supwisdom.com/gerrit/gitweb?a=commitdiff_plain;h=37d1149f7714b1d8296cbde5f5e541026d7cde86;p=common%2Fthrift.git Raise a RangeError if Protocol.write_ is called with a value that doesn't fit in git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@668951 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/lib/rb/lib/thrift/protocol/binaryprotocol.rb b/lib/rb/lib/thrift/protocol/binaryprotocol.rb index 9339b94e..d5aaa91e 100644 --- a/lib/rb/lib/thrift/protocol/binaryprotocol.rb +++ b/lib/rb/lib/thrift/protocol/binaryprotocol.rb @@ -54,18 +54,23 @@ module Thrift end def write_byte(byte) + # yes, -128..255. This covers signed byte min -> unsigned byte max + raise RangeError.new("#{byte} too large to fit in a byte") unless (-128..127).include? byte trans.write([byte].pack('n')[1..1]) end def write_i16(i16) + raise RangeError.new("#{i16} too large to fit in an i16") unless ((-2**15)..(2**15-1)).include? i16 trans.write([i16].pack('n')) end def write_i32(i32) + raise RangeError.new("#{i32} too large to fit in an i32") unless ((-2**31)..(2**31-1)).include? i32 trans.write([i32].pack('N')) end def write_i64(i64) + raise RangeError.new("#{i64} too large to fit in an i32") unless ((-2**63)..(2**63-1)).include? i64 hi = i64 >> 32 lo = i64 & 0xffffffff trans.write([hi, lo].pack('N2'))