Skip to content

Commit

Permalink
Fix a negotiation bug due to a bad context field
Browse files Browse the repository at this point in the history
  • Loading branch information
zeroSteiner committed Aug 23, 2021
1 parent 0f884d6 commit 2634473
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 4 deletions.
8 changes: 6 additions & 2 deletions lib/ruby_smb/smb2/negotiate_context.rb
Expand Up @@ -69,7 +69,11 @@ class CompressionCapabilities < BinData::Record
class NetnameNegotiateContextId < BinData::Record
endian :little

stringz16 :net_name, label: 'Net Name'
count_bytes_remaining :bytes_remaining
default_parameter data_length: nil
hide :bytes_remaining

string16 :net_name, label: 'Net Name', read_length: -> { data_length.nil? ? bytes_remaining : data_length }
end

# An SMB2 TRANSPORT_CAPABILITIES context struct as defined in
Expand Down Expand Up @@ -106,7 +110,7 @@ class NegotiateContext < BinData::Record
preauth_integrity_capabilities SMB2_PREAUTH_INTEGRITY_CAPABILITIES, label: 'Preauthentication Integrity Capabilities'
encryption_capabilities SMB2_ENCRYPTION_CAPABILITIES, label: 'Encryption Capabilities'
compression_capabilities SMB2_COMPRESSION_CAPABILITIES, label: 'Compression Capabilities'
netname_negotiate_context_id SMB2_NETNAME_NEGOTIATE_CONTEXT_ID, label: 'Netname Negotiate Context ID'
netname_negotiate_context_id SMB2_NETNAME_NEGOTIATE_CONTEXT_ID, label: 'Netname Negotiate Context ID', data_length: :data_length
transport_capabilities SMB2_TRANSPORT_CAPABILITIES, label: 'Transport Capabilities'
end

Expand Down
4 changes: 2 additions & 2 deletions spec/lib/ruby_smb/smb2/negotiate_context_spec.rb
Expand Up @@ -162,7 +162,7 @@
end
end

RSpec.describe RubySMB::SMB2::NetnameNegotiateContextId do
RSpec.describe RubySMB::SMB2::NetnameNegotiateContextId do
subject(:capability) { described_class.new }

it { is_expected.to respond_to :net_name }
Expand All @@ -173,7 +173,7 @@

describe '#net_name' do
it 'is a unicode string' do
expect(capability.net_name).to be_a RubySMB::Field::Stringz16
expect(capability.net_name).to be_a RubySMB::Field::String16
end
end

Expand Down

0 comments on commit 2634473

Please sign in to comment.