class Rex::Java::Serialization::Model::Utf

This class provides a Utf string representation

Attributes

contents[RW]

@!attribute contents

@return [String] the contents of the string
length[RW]

@!attribute length

@return [Integer] the length of the string

Public Class Methods

new(stream = nil, contents = '') click to toggle source

@param stream [Rex::Java::Serialization::Model::Stream] the stream where it belongs to @param contents [String] the contents of the utf string

# File lib/rex/java/serialization/model/utf.rb, line 18
def initialize(stream = nil, contents = '')
  super(stream)
  self.contents = contents
  self.length = contents.length
end

Public Instance Methods

decode(io) click to toggle source

Deserializes a Rex::Java::Serialization::Model::Utf

@param io [IO] the io to read from @return [self] if deserialization succeeds @raise [Rex::Java::Serialization::DecodeError] if deserialization doesn't succeed

# File lib/rex/java/serialization/model/utf.rb, line 29
def decode(io)
  raw_length = io.read(2)
  if raw_length.nil? || raw_length.length != 2
    raise Rex::Java::Serialization::DecodeError, 'Failed to unserialize Utf'
  end
  self.length = raw_length.unpack('n')[0]

  if length == 0
    self.contents = ''
  else
    self.contents = io.read(length)
    if contents.nil? || contents.length != length
      raise Rex::Java::Serialization::DecodeError, 'Failed to unserialize Utf'
    end
  end

  self
end
encode() click to toggle source

Serializes the Rex::Java::Serialization::Model::Utf

@return [String]

# File lib/rex/java/serialization/model/utf.rb, line 51
def encode
  encoded = [length].pack('n')
  encoded << contents

  encoded
end
to_s() click to toggle source

Creates a print-friendly string representation

@return [String]

# File lib/rex/java/serialization/model/utf.rb, line 61
def to_s
  contents
end