From 37d1149f7714b1d8296cbde5f5e541026d7cde86 Mon Sep 17 00:00:00 2001 From: Kevin Clark Date: Wed, 18 Jun 2008 01:07:23 +0000 Subject: [PATCH] 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 --- lib/rb/lib/thrift/protocol/binaryprotocol.rb | 5 +++++ 1 file changed, 5 insertions(+) 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')) -- 2.17.1