Module: RubySMB::Dcerpc::Ndr::VarStringPlugin
- Defined in:
- lib/ruby_smb/dcerpc/ndr.rb
Instance Attribute Summary collapse
-
#actual_count ⇒ Object
Returns the value of attribute actual_count.
-
#offset ⇒ Object
Returns the value of attribute offset.
Instance Method Summary collapse
- #assign(val) ⇒ Object
- #do_num_bytes ⇒ Object
- #do_read(io) ⇒ Object
- #do_write(io) ⇒ Object
- #initialize_instance ⇒ Object
- #update_actual_count(val) ⇒ Object
Instance Attribute Details
#actual_count ⇒ Object
Returns the value of attribute actual_count.
580 581 582 |
# File 'lib/ruby_smb/dcerpc/ndr.rb', line 580 def actual_count @actual_count end |
#offset ⇒ Object
Returns the value of attribute offset.
580 581 582 |
# File 'lib/ruby_smb/dcerpc/ndr.rb', line 580 def offset @offset end |
Instance Method Details
#assign(val) ⇒ Object
609 610 611 612 |
# File 'lib/ruby_smb/dcerpc/ndr.rb', line 609 def assign(val) update_actual_count(val) super end |
#do_num_bytes ⇒ Object
614 615 616 |
# File 'lib/ruby_smb/dcerpc/ndr.rb', line 614 def do_num_bytes @actual_count > 0 ? (8 + super) : 8 end |
#do_read(io) ⇒ Object
597 598 599 600 601 602 603 604 605 606 607 |
# File 'lib/ruby_smb/dcerpc/ndr.rb', line 597 def do_read(io) @offset = io.readbytes(4).unpack('L<').first BinData. do |tracer| tracer.trace_obj("#{debug_name}.offset", @offset.to_s) end @actual_count = io.readbytes(4).unpack('L<').first BinData. do |tracer| tracer.trace_obj("#{debug_name}.actual_count", @actual_count.to_s) end super if @actual_count > 0 end |
#do_write(io) ⇒ Object
591 592 593 594 595 |
# File 'lib/ruby_smb/dcerpc/ndr.rb', line 591 def do_write(io) io.writebytes([@offset].pack('L<')) io.writebytes([@actual_count].pack('L<')) super if @actual_count > 0 end |
#initialize_instance ⇒ Object
582 583 584 585 586 587 588 589 |
# File 'lib/ruby_smb/dcerpc/ndr.rb', line 582 def initialize_instance @offset = 0 @actual_count = 0 if has_parameter?(:initial_value) update_actual_count(eval_parameter(:initial_value)) end super end |
#update_actual_count(val) ⇒ Object
618 619 620 621 622 623 624 625 626 |
# File 'lib/ruby_smb/dcerpc/ndr.rb', line 618 def update_actual_count(val) if is_a?(BinData::Stringz) @actual_count = val.to_s.strip.length # Only count the terminating NULL byte if the string is not empty @actual_count += 1 if @actual_count > 0 else @actual_count = val.to_s.length end end |