You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@thrift.apache.org by kc...@apache.org on 2008/06/18 03:07:23 UTC

svn commit: r668951 - /incubator/thrift/trunk/lib/rb/lib/thrift/protocol/binaryprotocol.rb

Author: kclark
Date: Tue Jun 17 18:07:23 2008
New Revision: 668951

URL: http://svn.apache.org/viewvc?rev=668951&view=rev
Log:
Raise a RangeError if Protocol.write_<numeric> is called with a value that doesn't fit in <numeric>

Modified:
    incubator/thrift/trunk/lib/rb/lib/thrift/protocol/binaryprotocol.rb

Modified: incubator/thrift/trunk/lib/rb/lib/thrift/protocol/binaryprotocol.rb
URL: http://svn.apache.org/viewvc/incubator/thrift/trunk/lib/rb/lib/thrift/protocol/binaryprotocol.rb?rev=668951&r1=668950&r2=668951&view=diff
==============================================================================
--- incubator/thrift/trunk/lib/rb/lib/thrift/protocol/binaryprotocol.rb (original)
+++ incubator/thrift/trunk/lib/rb/lib/thrift/protocol/binaryprotocol.rb Tue Jun 17 18:07:23 2008
@@ -54,18 +54,23 @@
     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'))