From ca164cd99fe1cf839b4c42c4a33fe341c552b96a Mon Sep 17 00:00:00 2001 From: jvazquez-r7 Date: Fri, 5 Dec 2014 16:52:59 -0600 Subject: [PATCH] Support the stream attribute --- .../java/serialization/model/annotation.rb | 3 ++- .../java/serialization/model/block_data.rb | 3 ++- .../serialization/model/block_data_long.rb | 3 ++- .../java/serialization/model/class_desc.rb | 3 ++- lib/rex/java/serialization/model/element.rb | 8 ++++---- lib/rex/java/serialization/model/field.rb | 3 ++- lib/rex/java/serialization/model/new_array.rb | 3 ++- .../serialization/model/new_class_desc.rb | 3 ++- lib/rex/java/serialization/model/new_enum.rb | 3 ++- .../java/serialization/model/new_object.rb | 3 ++- lib/rex/java/serialization/model/reference.rb | 6 ++++++ lib/rex/java/serialization/model/stream.rb | 3 ++- lib/rex/java/serialization/model/utf.rb | 3 ++- .../serialization/model/annotation_spec.rb | 4 ++-- .../serialization/model/class_desc_spec.rb | 6 +++--- .../java/serialization/model/field_spec.rb | 6 +++--- .../serialization/model/new_array_spec.rb | 20 +++++++++---------- .../model/new_class_desc_spec.rb | 6 +++--- .../java/serialization/model/new_enum_spec.rb | 6 +++--- .../serialization/model/new_object_spec.rb | 4 ++-- .../java/serialization/model/stream_spec.rb | 6 +++--- 21 files changed, 61 insertions(+), 44 deletions(-) diff --git a/lib/rex/java/serialization/model/annotation.rb b/lib/rex/java/serialization/model/annotation.rb index e1a8d76238..8ddfc1ab0e 100644 --- a/lib/rex/java/serialization/model/annotation.rb +++ b/lib/rex/java/serialization/model/annotation.rb @@ -12,7 +12,8 @@ module Rex # @return [Array] The annotation contents attr_accessor :contents - def initialize + def initialize(stream = nil) + super(stream) self.contents = [] end diff --git a/lib/rex/java/serialization/model/block_data.rb b/lib/rex/java/serialization/model/block_data.rb index 6863087d8b..5850ef3c25 100644 --- a/lib/rex/java/serialization/model/block_data.rb +++ b/lib/rex/java/serialization/model/block_data.rb @@ -13,7 +13,8 @@ module Rex attr_accessor :contents # @param contents [String] the contents of the block - def initialize(contents = '') + def initialize(stream = nil, contents = '') + super(stream) self.contents = contents self.length = contents.length end diff --git a/lib/rex/java/serialization/model/block_data_long.rb b/lib/rex/java/serialization/model/block_data_long.rb index 9342eba962..e0a04970c2 100644 --- a/lib/rex/java/serialization/model/block_data_long.rb +++ b/lib/rex/java/serialization/model/block_data_long.rb @@ -13,7 +13,8 @@ module Rex attr_accessor :contents # @param contents [String] the contents of the block - def initialize(contents = '') + def initialize(stream = nil, contents = '') + super(stream) self.contents = contents self.length = contents.length end diff --git a/lib/rex/java/serialization/model/class_desc.rb b/lib/rex/java/serialization/model/class_desc.rb index ed4fcd9ddc..7049f52073 100644 --- a/lib/rex/java/serialization/model/class_desc.rb +++ b/lib/rex/java/serialization/model/class_desc.rb @@ -9,7 +9,8 @@ module Rex attr_accessor :description - def initialize + def initialize(stream = nil) + super(stream) self.description = nil end diff --git a/lib/rex/java/serialization/model/element.rb b/lib/rex/java/serialization/model/element.rb index 58c7c540b1..99cd7d6f6f 100644 --- a/lib/rex/java/serialization/model/element.rb +++ b/lib/rex/java/serialization/model/element.rb @@ -11,13 +11,13 @@ module Rex # @param io [IO] the io to read from # @return [Java::Serialization::Model::Element] if deserialization succeeds # @return [nil] if deserialization doesn't succeed - def self.decode(io) - elem = self.new + def self.decode(io, stream = nil) + elem = self.new(stream) elem.decode(io) end - def initialize - + def initialize(stream = nil) + self.stream = stream end def decode(io) diff --git a/lib/rex/java/serialization/model/field.rb b/lib/rex/java/serialization/model/field.rb index e330f652bc..c98fa14a12 100644 --- a/lib/rex/java/serialization/model/field.rb +++ b/lib/rex/java/serialization/model/field.rb @@ -18,7 +18,8 @@ module Rex # @return [Java::Serialization::Model::Utf] The type of the field on object types. attr_accessor :field_type - def initialize + def initialize(stream = nil) + super(stream) self.type = '' self.name = nil self.field_type = nil diff --git a/lib/rex/java/serialization/model/new_array.rb b/lib/rex/java/serialization/model/new_array.rb index 5e55c4bba3..02abc27d2a 100644 --- a/lib/rex/java/serialization/model/new_array.rb +++ b/lib/rex/java/serialization/model/new_array.rb @@ -17,7 +17,8 @@ module Rex # @return [Array] The contents of the java array attr_accessor :values - def initialize + def initialize(stream = nil) + super(stream) self.array_description = nil self.type = '' self.values = [] diff --git a/lib/rex/java/serialization/model/new_class_desc.rb b/lib/rex/java/serialization/model/new_class_desc.rb index 176a9e743a..b565b0f785 100644 --- a/lib/rex/java/serialization/model/new_class_desc.rb +++ b/lib/rex/java/serialization/model/new_class_desc.rb @@ -26,7 +26,8 @@ module Rex # @return [Java::Serialization::Model::ClassDesc] The java class superclass description attr_accessor :super_class - def initialize + def initialize(stream = nil) + super(stream) self.class_name = nil self.serial_version = 0 self.flags = 0 diff --git a/lib/rex/java/serialization/model/new_enum.rb b/lib/rex/java/serialization/model/new_enum.rb index 379cd8cc85..0167e0e00b 100644 --- a/lib/rex/java/serialization/model/new_enum.rb +++ b/lib/rex/java/serialization/model/new_enum.rb @@ -14,7 +14,8 @@ module Rex # @return [Array] The constant value in the Java Enum attr_accessor :constant_name - def initialize + def initialize(stream = nil) + super(stream) self.enum_description = nil self.constant_name = nil end diff --git a/lib/rex/java/serialization/model/new_object.rb b/lib/rex/java/serialization/model/new_object.rb index 1a255270f9..69b12e429d 100644 --- a/lib/rex/java/serialization/model/new_object.rb +++ b/lib/rex/java/serialization/model/new_object.rb @@ -14,7 +14,8 @@ module Rex # @return [Array] The data of the object attr_accessor :class_data - def initialize + def initialize(stream = nil) + super(stream) self.class_desc = nil self.class_data = [] end diff --git a/lib/rex/java/serialization/model/reference.rb b/lib/rex/java/serialization/model/reference.rb index ad82a63f20..42bc3f13d5 100644 --- a/lib/rex/java/serialization/model/reference.rb +++ b/lib/rex/java/serialization/model/reference.rb @@ -3,8 +3,14 @@ module Rex module Serialization module Model class Reference < Element + attr_accessor :handler + def initialize(stream = nil) + super(stream) + handler = 0 + end + def decode(io) handler_raw = io.read(4) unless handler_raw && handler_raw.length == 4 diff --git a/lib/rex/java/serialization/model/stream.rb b/lib/rex/java/serialization/model/stream.rb index 5e6bd05dde..765046c636 100644 --- a/lib/rex/java/serialization/model/stream.rb +++ b/lib/rex/java/serialization/model/stream.rb @@ -17,7 +17,8 @@ module Rex # @return [Array] The stream's contents attr_accessor :contents - def initialize + def initialize(stream = nil) + super(stream) self.magic = STREAM_MAGIC self.version = STREAM_VERSION self.contents = [] diff --git a/lib/rex/java/serialization/model/utf.rb b/lib/rex/java/serialization/model/utf.rb index 16a46205a1..2d428211fe 100644 --- a/lib/rex/java/serialization/model/utf.rb +++ b/lib/rex/java/serialization/model/utf.rb @@ -13,7 +13,8 @@ module Rex attr_accessor :contents # @param contents [String] the contents of the utf string - def initialize(contents = '') + def initialize(stream = nil, contents = '') + super(stream) self.contents = contents self.length = contents.length end diff --git a/spec/lib/rex/java/serialization/model/annotation_spec.rb b/spec/lib/rex/java/serialization/model/annotation_spec.rb index 2e75e542d5..b8ef4a064a 100644 --- a/spec/lib/rex/java/serialization/model/annotation_spec.rb +++ b/spec/lib/rex/java/serialization/model/annotation_spec.rb @@ -32,8 +32,8 @@ describe Rex::Java::Serialization::Model::Annotation do context "when block data contents" do it do - annotation.contents << Rex::Java::Serialization::Model::BlockData.new("\x01\x02\x03\x04\x05") - annotation.contents << Rex::Java::Serialization::Model::BlockDataLong.new("\x01\x02\x03\x04\x05") + annotation.contents << Rex::Java::Serialization::Model::BlockData.new(nil, "\x01\x02\x03\x04\x05") + annotation.contents << Rex::Java::Serialization::Model::BlockDataLong.new(nil, "\x01\x02\x03\x04\x05") annotation.contents << Rex::Java::Serialization::Model::EndBlockData.new expect(annotation.encode).to eq(contents) end diff --git a/spec/lib/rex/java/serialization/model/class_desc_spec.rb b/spec/lib/rex/java/serialization/model/class_desc_spec.rb index d42c0153c8..7d0c44d13f 100644 --- a/spec/lib/rex/java/serialization/model/class_desc_spec.rb +++ b/spec/lib/rex/java/serialization/model/class_desc_spec.rb @@ -40,7 +40,7 @@ describe Rex::Java::Serialization::Model::ClassDesc do describe "#encode" do it "serializes a ClassDesc" do super_class_desc_new = Rex::Java::Serialization::Model::NewClassDesc.new - super_class_desc_new.class_name = Rex::Java::Serialization::Model::Utf.new('java.lang.Number') + super_class_desc_new.class_name = Rex::Java::Serialization::Model::Utf.new(nil, 'java.lang.Number') super_class_desc_new.serial_version = 0x86ac951d0b94e08b super_class_desc_new.flags = 2 super_class_desc_new.class_annotation = Rex::Java::Serialization::Model::Annotation.new @@ -52,12 +52,12 @@ describe Rex::Java::Serialization::Model::ClassDesc do super_class_desc.description = super_class_desc_new class_desc_new = Rex::Java::Serialization::Model::NewClassDesc.new - class_desc_new.class_name = Rex::Java::Serialization::Model::Utf.new('java.lang.Byte') + class_desc_new.class_name = Rex::Java::Serialization::Model::Utf.new(nil, 'java.lang.Byte') class_desc_new.serial_version = 0x9c4e6084ee50f51c class_desc_new.flags = 2 field = Rex::Java::Serialization::Model::Field.new field.type = 'byte' - field.name = Rex::Java::Serialization::Model::Utf.new('value') + field.name = Rex::Java::Serialization::Model::Utf.new(nil, 'value') class_desc_new.fields << field class_desc_new.class_annotation = Rex::Java::Serialization::Model::Annotation.new class_desc_new.class_annotation.contents << Rex::Java::Serialization::Model::EndBlockData.new diff --git a/spec/lib/rex/java/serialization/model/field_spec.rb b/spec/lib/rex/java/serialization/model/field_spec.rb index ac4ebb621a..0e54883171 100644 --- a/spec/lib/rex/java/serialization/model/field_spec.rb +++ b/spec/lib/rex/java/serialization/model/field_spec.rb @@ -37,7 +37,7 @@ describe Rex::Java::Serialization::Model::Field do context "when primitive field" do it do field.type = 'int' - field.name = Rex::Java::Serialization::Model::Utf.new('number') + field.name = Rex::Java::Serialization::Model::Utf.new(nil, 'number') expect(field.encode).to eq(sample_primitive) end end @@ -45,8 +45,8 @@ describe Rex::Java::Serialization::Model::Field do context "when object field" do it do field.type = 'array' - field.name = Rex::Java::Serialization::Model::Utf.new('test_array') - field.field_type = Rex::Java::Serialization::Model::Utf.new('[LEmployee;') + field.name = Rex::Java::Serialization::Model::Utf.new(nil, 'test_array') + field.field_type = Rex::Java::Serialization::Model::Utf.new(nil, '[LEmployee;') expect(field.encode).to eq(sample_object) end end diff --git a/spec/lib/rex/java/serialization/model/new_array_spec.rb b/spec/lib/rex/java/serialization/model/new_array_spec.rb index 9cebb88c58..68045246c6 100644 --- a/spec/lib/rex/java/serialization/model/new_array_spec.rb +++ b/spec/lib/rex/java/serialization/model/new_array_spec.rb @@ -255,7 +255,7 @@ describe Rex::Java::Serialization::Model::NewArray do describe "#encode" do it "serializes a boolean Array" do new_class_desc = Rex::Java::Serialization::Model::NewClassDesc.new - new_class_desc.class_name = Rex::Java::Serialization::Model::Utf.new('[Z') + new_class_desc.class_name = Rex::Java::Serialization::Model::Utf.new(nil, '[Z') new_class_desc.serial_version = 0x578f203914b85de2 new_class_desc.flags = 2 new_class_desc.class_annotation = Rex::Java::Serialization::Model::Annotation.new @@ -273,7 +273,7 @@ describe Rex::Java::Serialization::Model::NewArray do it "serializes a byte Array" do new_class_desc = Rex::Java::Serialization::Model::NewClassDesc.new - new_class_desc.class_name = Rex::Java::Serialization::Model::Utf.new('[B') + new_class_desc.class_name = Rex::Java::Serialization::Model::Utf.new(nil, '[B') new_class_desc.serial_version = 0xacf317f8060854e0 new_class_desc.flags = 2 new_class_desc.class_annotation = Rex::Java::Serialization::Model::Annotation.new @@ -291,7 +291,7 @@ describe Rex::Java::Serialization::Model::NewArray do it "serializes a char Array" do new_class_desc = Rex::Java::Serialization::Model::NewClassDesc.new - new_class_desc.class_name = Rex::Java::Serialization::Model::Utf.new('[C') + new_class_desc.class_name = Rex::Java::Serialization::Model::Utf.new(nil, '[C') new_class_desc.serial_version = 0xb02666b0e25d84ac new_class_desc.flags = 2 new_class_desc.class_annotation = Rex::Java::Serialization::Model::Annotation.new @@ -309,7 +309,7 @@ describe Rex::Java::Serialization::Model::NewArray do it "serializes a short Array" do new_class_desc = Rex::Java::Serialization::Model::NewClassDesc.new - new_class_desc.class_name = Rex::Java::Serialization::Model::Utf.new('[S') + new_class_desc.class_name = Rex::Java::Serialization::Model::Utf.new(nil, '[S') new_class_desc.serial_version = 0xef832e06e55db0fa new_class_desc.flags = 2 new_class_desc.class_annotation = Rex::Java::Serialization::Model::Annotation.new @@ -327,7 +327,7 @@ describe Rex::Java::Serialization::Model::NewArray do it "serializes a double Array" do new_class_desc = Rex::Java::Serialization::Model::NewClassDesc.new - new_class_desc.class_name = Rex::Java::Serialization::Model::Utf.new('[D') + new_class_desc.class_name = Rex::Java::Serialization::Model::Utf.new(nil, '[D') new_class_desc.serial_version = 0x3ea68c14ab635a1e new_class_desc.flags = 2 new_class_desc.class_annotation = Rex::Java::Serialization::Model::Annotation.new @@ -345,7 +345,7 @@ describe Rex::Java::Serialization::Model::NewArray do it "serializes a float Array" do new_class_desc = Rex::Java::Serialization::Model::NewClassDesc.new - new_class_desc.class_name = Rex::Java::Serialization::Model::Utf.new('[F') + new_class_desc.class_name = Rex::Java::Serialization::Model::Utf.new(nil, '[F') new_class_desc.serial_version = 0xb9c818922e00c42 new_class_desc.flags = 2 new_class_desc.class_annotation = Rex::Java::Serialization::Model::Annotation.new @@ -363,7 +363,7 @@ describe Rex::Java::Serialization::Model::NewArray do it "serializes a int Array" do new_class_desc = Rex::Java::Serialization::Model::NewClassDesc.new - new_class_desc.class_name = Rex::Java::Serialization::Model::Utf.new('[I') + new_class_desc.class_name = Rex::Java::Serialization::Model::Utf.new(nil, '[I') new_class_desc.serial_version = 0x4dba602676eab2a5 new_class_desc.flags = 2 new_class_desc.class_annotation = Rex::Java::Serialization::Model::Annotation.new @@ -381,7 +381,7 @@ describe Rex::Java::Serialization::Model::NewArray do it "serializes a long Array" do new_class_desc = Rex::Java::Serialization::Model::NewClassDesc.new - new_class_desc.class_name = Rex::Java::Serialization::Model::Utf.new('[J') + new_class_desc.class_name = Rex::Java::Serialization::Model::Utf.new(nil, '[J') new_class_desc.serial_version = 0x782004b512b17593 new_class_desc.flags = 2 new_class_desc.class_annotation = Rex::Java::Serialization::Model::Annotation.new @@ -399,7 +399,7 @@ describe Rex::Java::Serialization::Model::NewArray do it "serializes a String (Objects) Array" do new_class_desc = Rex::Java::Serialization::Model::NewClassDesc.new - new_class_desc.class_name = Rex::Java::Serialization::Model::Utf.new('[Ljava.lang.String;') + new_class_desc.class_name = Rex::Java::Serialization::Model::Utf.new(nil, '[Ljava.lang.String;') new_class_desc.serial_version = 0xadd256e7e91d7b47 new_class_desc.flags = 2 new_class_desc.class_annotation = Rex::Java::Serialization::Model::Annotation.new @@ -410,7 +410,7 @@ describe Rex::Java::Serialization::Model::NewArray do new_array.array_description = Rex::Java::Serialization::Model::ClassDesc.new new_array.array_description.description = new_class_desc new_array.type = 'java.lang.String;' - new_array.values = [ Rex::Java::Serialization::Model::Utf.new('msf') ] + new_array.values = [ Rex::Java::Serialization::Model::Utf.new(nil, 'msf') ] expect(new_array.encode.unpack("C*")).to eq(string_array.unpack("C*")) end diff --git a/spec/lib/rex/java/serialization/model/new_class_desc_spec.rb b/spec/lib/rex/java/serialization/model/new_class_desc_spec.rb index 49261ce2e0..d3c7b03683 100644 --- a/spec/lib/rex/java/serialization/model/new_class_desc_spec.rb +++ b/spec/lib/rex/java/serialization/model/new_class_desc_spec.rb @@ -105,7 +105,7 @@ describe Rex::Java::Serialization::Model::NewClassDesc do describe "#encode" do it "serializes a NewClassDesc" do super_class_desc_new = Rex::Java::Serialization::Model::NewClassDesc.new - super_class_desc_new.class_name = Rex::Java::Serialization::Model::Utf.new('java.lang.Number') + super_class_desc_new.class_name = Rex::Java::Serialization::Model::Utf.new(nil, 'java.lang.Number') super_class_desc_new.serial_version = 0x86ac951d0b94e08b super_class_desc_new.flags = 2 super_class_desc_new.class_annotation = Rex::Java::Serialization::Model::Annotation.new @@ -116,12 +116,12 @@ describe Rex::Java::Serialization::Model::NewClassDesc do super_class_desc = Rex::Java::Serialization::Model::ClassDesc.new super_class_desc.description = super_class_desc_new - class_desc_new.class_name = Rex::Java::Serialization::Model::Utf.new('java.lang.Byte') + class_desc_new.class_name = Rex::Java::Serialization::Model::Utf.new(nil, 'java.lang.Byte') class_desc_new.serial_version = 0x9c4e6084ee50f51c class_desc_new.flags = 2 field = Rex::Java::Serialization::Model::Field.new field.type = 'byte' - field.name = Rex::Java::Serialization::Model::Utf.new('value') + field.name = Rex::Java::Serialization::Model::Utf.new(nil, 'value') class_desc_new.fields << field class_desc_new.class_annotation = Rex::Java::Serialization::Model::Annotation.new class_desc_new.class_annotation.contents << Rex::Java::Serialization::Model::EndBlockData.new diff --git a/spec/lib/rex/java/serialization/model/new_enum_spec.rb b/spec/lib/rex/java/serialization/model/new_enum_spec.rb index 67e9a5d225..16e0993cb1 100644 --- a/spec/lib/rex/java/serialization/model/new_enum_spec.rb +++ b/spec/lib/rex/java/serialization/model/new_enum_spec.rb @@ -48,14 +48,14 @@ describe Rex::Java::Serialization::Model::NewEnum do describe "#encode" do it "serializes an Enum" do new_class_desc = Rex::Java::Serialization::Model::NewClassDesc.new - new_class_desc.class_name = Rex::Java::Serialization::Model::Utf.new('Enums$Day') + new_class_desc.class_name = Rex::Java::Serialization::Model::Utf.new(nil, 'Enums$Day') new_class_desc.serial_version = 0 new_class_desc.flags = 18 new_class_desc.class_annotation = Rex::Java::Serialization::Model::Annotation.new new_class_desc.class_annotation.contents << Rex::Java::Serialization::Model::EndBlockData.new new_class_desc.super_class = Rex::Java::Serialization::Model::ClassDesc.new new_class_desc.super_class.description = Rex::Java::Serialization::Model::NewClassDesc.new - new_class_desc.super_class.description.class_name = Rex::Java::Serialization::Model::Utf.new('java.lang.Enum') + new_class_desc.super_class.description.class_name = Rex::Java::Serialization::Model::Utf.new(nil, 'java.lang.Enum') new_class_desc.super_class.description.serial_version = 0 new_class_desc.super_class.description.flags = 18 new_class_desc.super_class.description.class_annotation = Rex::Java::Serialization::Model::Annotation.new @@ -65,7 +65,7 @@ describe Rex::Java::Serialization::Model::NewEnum do new_enum.enum_description = Rex::Java::Serialization::Model::ClassDesc.new new_enum.enum_description.description = new_class_desc - new_enum.constant_name = Rex::Java::Serialization::Model::Utf.new('SUNDAY') + new_enum.constant_name = Rex::Java::Serialization::Model::Utf.new(nil, 'SUNDAY') expect(new_enum.encode.unpack("C*")).to eq(sample_enum.unpack("C*")) end diff --git a/spec/lib/rex/java/serialization/model/new_object_spec.rb b/spec/lib/rex/java/serialization/model/new_object_spec.rb index 2eee8162b0..9e04af9c1d 100644 --- a/spec/lib/rex/java/serialization/model/new_object_spec.rb +++ b/spec/lib/rex/java/serialization/model/new_object_spec.rb @@ -50,12 +50,12 @@ describe Rex::Java::Serialization::Model::NewObject do describe "#encode" do it "serializes an Object" do new_class_desc = Rex::Java::Serialization::Model::NewClassDesc.new - new_class_desc.class_name = Rex::Java::Serialization::Model::Utf.new('Easy') + new_class_desc.class_name = Rex::Java::Serialization::Model::Utf.new(nil, 'Easy') new_class_desc.serial_version = 0x741de1bcbb2fcbaa new_class_desc.flags = 2 field = Rex::Java::Serialization::Model::Field.new field.type = 'int' - field.name = Rex::Java::Serialization::Model::Utf.new('SSN') + field.name = Rex::Java::Serialization::Model::Utf.new(nil, 'SSN') new_class_desc.fields << field new_class_desc.class_annotation = Rex::Java::Serialization::Model::Annotation.new new_class_desc.class_annotation.contents << Rex::Java::Serialization::Model::EndBlockData.new diff --git a/spec/lib/rex/java/serialization/model/stream_spec.rb b/spec/lib/rex/java/serialization/model/stream_spec.rb index 447173fe44..b256ea457a 100644 --- a/spec/lib/rex/java/serialization/model/stream_spec.rb +++ b/spec/lib/rex/java/serialization/model/stream_spec.rb @@ -76,12 +76,12 @@ describe Rex::Java::Serialization::Model::Stream do context "when serializing a simple Object stream" do it "serializes the Stream" do new_class_desc = Rex::Java::Serialization::Model::NewClassDesc.new - new_class_desc.class_name = Rex::Java::Serialization::Model::Utf.new('Easy') + new_class_desc.class_name = Rex::Java::Serialization::Model::Utf.new(nil, 'Easy') new_class_desc.serial_version = 0x741de1bcbb2fcbaa new_class_desc.flags = 2 field = Rex::Java::Serialization::Model::Field.new field.type = 'int' - field.name = Rex::Java::Serialization::Model::Utf.new('SSN') + field.name = Rex::Java::Serialization::Model::Utf.new(nil, 'SSN') new_class_desc.fields << field new_class_desc.class_annotation = Rex::Java::Serialization::Model::Annotation.new new_class_desc.class_annotation.contents << Rex::Java::Serialization::Model::EndBlockData.new @@ -101,7 +101,7 @@ describe Rex::Java::Serialization::Model::Stream do context "when serializing a char array" do it "serializes the Stream" do new_class_desc = Rex::Java::Serialization::Model::NewClassDesc.new - new_class_desc.class_name = Rex::Java::Serialization::Model::Utf.new('[C') + new_class_desc.class_name = Rex::Java::Serialization::Model::Utf.new(nil, '[C') new_class_desc.serial_version = 0xb02666b0e25d84ac new_class_desc.flags = 2 new_class_desc.class_annotation = Rex::Java::Serialization::Model::Annotation.new