class RubySMB::Dcerpc::Ndr::NdrPointer
An NDR Top-level Full Pointers representation as defined in [Transfer Syntax NDR - Top-level Full Pointers](pubs.opengroup.org/onlinepubs/9629399/chap14.htm#tagcjh_19_03_11_01) This class must be inherited and the subclass must have a referent property
Public Instance Methods
do_read(io)
click to toggle source
# File lib/ruby_smb/dcerpc/ndr.rb, line 224 def do_read(io) self.referent_id.do_read(io) if process_referent? self.referent.do_read(io) unless self.referent_id == 0 end end
do_write(io)
click to toggle source
# File lib/ruby_smb/dcerpc/ndr.rb, line 231 def do_write(io) self.referent_id.do_write(io) if process_referent? self.referent.do_write(io) unless self.referent_id == 0 end end
get()
click to toggle source
# File lib/ruby_smb/dcerpc/ndr.rb, line 252 def get if self.referent_id == 0 :null else self.referent end end
process_referent?()
click to toggle source
# File lib/ruby_smb/dcerpc/ndr.rb, line 260 def process_referent? current_parent = parent loop do return true unless current_parent return false if current_parent.is_a?(NdrStruct) current_parent = current_parent.parent end end
set(v)
click to toggle source
# File lib/ruby_smb/dcerpc/ndr.rb, line 238 def set(v) if v == :null self.referent.clear self.referent_id = 0 else if self.referent.respond_to?(:set) self.referent.set(v) else self.referent = v end self.referent_id = rand(0xFFFFFFFF) if self.referent_id == 0 end end