class RubySMB::Dcerpc::Ndr::NdrFixedByteArray
An NDR Uni-dimensional Fixed Array of bytes representation as defined in: [Transfer Syntax NDR - NDR Constructed Types](pubs.opengroup.org/onlinepubs/9629399/chap14.htm#tagcjh_19_03_03_01)
Public Class Methods
arg_processor()
click to toggle source
# File lib/ruby_smb/dcerpc/ndr.rb, line 121 def arg_processor NdrFixedByteArrayArgProcessor.new end
Public Instance Methods
assign(val)
click to toggle source
Calls superclass method
# File lib/ruby_smb/dcerpc/ndr.rb, line 112 def assign(val) super(fixed_byte_array(val)) end
snapshot()
click to toggle source
Calls superclass method
# File lib/ruby_smb/dcerpc/ndr.rb, line 116 def snapshot clamp_to_length(super) end
Private Instance Methods
clamp_to_length(val)
click to toggle source
# File lib/ruby_smb/dcerpc/ndr.rb, line 128 def clamp_to_length(val) val = fixed_byte_array(val) len = eval_parameter(:length) || val.length if val.length > len val = val.first(len) elsif val.length < len pad = eval_parameter(:pad_byte) if get_parameter(:pad_front) val = val.insert(0, *Array.new(len - val.length, pad)) else val = val.fill(pad, val.length...len) end end val end
fixed_byte_array(val)
click to toggle source
# File lib/ruby_smb/dcerpc/ndr.rb, line 145 def fixed_byte_array(val) val = val.bytes if val.is_a? String val.to_ary end
read_and_return_value(io)
click to toggle source
# File lib/ruby_smb/dcerpc/ndr.rb, line 150 def read_and_return_value(io) len = eval_parameter(:read_length) || eval_parameter(:length) || 0 io.readbytes(len) end
sensible_default()
click to toggle source
# File lib/ruby_smb/dcerpc/ndr.rb, line 155 def sensible_default [ ] end
value_to_binary_string(val)
click to toggle source
# File lib/ruby_smb/dcerpc/ndr.rb, line 159 def value_to_binary_string(val) clamp_to_length(val).pack('C*') end