ruby_smb 1.0.4 → 1.0.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7d5e35bee112d4186cdb919a1041dbd54c72739d
4
- data.tar.gz: 002b2dcada90c5617d15d472f5d06c5f1474619d
3
+ metadata.gz: 104c5f0cf4f597bf65427cf15ab08461943a38aa
4
+ data.tar.gz: e2f05f2857a898cd253afd829babecb715011c12
5
5
  SHA512:
6
- metadata.gz: 8516db67fb88bb248314f69eefef87f8021fcc409fa637e43a1b97474665d28e8d24fe470283d895c65374479d13d372d9eed346814eebd6bf144b63805b8bf2
7
- data.tar.gz: 21632505b70f1af84724a613eb2344fda82e7c60f63255eb92569bef752fd0dcdf1e0fcb58f7f3cf21200b79fdfc3e592fde3643a42b0b5002db963d5f54e3ba
6
+ metadata.gz: 5070ad2e2008739b1b47407c618e0014bc98e7031d72d2cb94daf61c7d21754a8480ef37f8099f90fe31ef0ac95563943951d00ad4bcea110d465c80c6fcf0f8
7
+ data.tar.gz: eb91ae8bff05249dc9ec88c3fa9e18df4b8db979d9e7e9ac702c6f7af237b36c39d9d420dd0e95680e4004480dede90493fc6d58f942f45d08d3a812977a4066
checksums.yaml.gz.sig CHANGED
Binary file
@@ -1,7 +1,7 @@
1
1
  module RubySMB
2
2
  module SMB1
3
3
  module Packet
4
- # This packet represent an SMB1 Response Packet when the parameter and
4
+ # This packet represent an SMB1 Error Response Packet when the parameter and
5
5
  # data blocks will be empty.
6
6
  class EmptyPacket < RubySMB::GenericPacket
7
7
  attr_accessor :original_command
@@ -12,7 +12,9 @@ module RubySMB
12
12
 
13
13
  def valid?
14
14
  return smb_header.protocol == RubySMB::SMB1::SMB_PROTOCOL_ID &&
15
- smb_header.command == @original_command
15
+ smb_header.command == @original_command &&
16
+ parameter_block.word_count == 0 &&
17
+ data_block.byte_count == 0
16
18
  end
17
19
  end
18
20
  end
@@ -1,18 +1,25 @@
1
1
  module RubySMB
2
2
  module SMB2
3
3
  module Packet
4
- # An SMB2 Error packet for when an incomplete response comes back
4
+ # This class represents an SMB2 Error Response Packet as defined in
5
+ # [2.2.2 SMB2 ERROR Response](https://msdn.microsoft.com/en-us/library/cc246530.aspx)
5
6
  class ErrorPacket < RubySMB::GenericPacket
6
7
  attr_accessor :original_command
7
8
 
8
9
  endian :little
9
10
  smb2_header :smb2_header
10
- uint16 :structure_size, label: 'Structure Size', initial_value: 4
11
- uint8 :error_data
11
+ uint16 :structure_size, label: 'Structure Size', initial_value: 9
12
+ uint8 :error_context_count, label: 'ErrorContextCount'
13
+ uint8 :reserved
14
+ uint32 :byte_count, label: 'Byte Count of ErrorData',
15
+ initial_value: -> { error_data.num_bytes == 1 ? 0 : error_data.num_bytes }
16
+ string :error_data, label: 'Error Data', initial_value: "\x00",
17
+ read_length: -> { byte_count == 0 ? 1 : byte_count }
12
18
 
13
19
  def valid?
14
20
  return smb2_header.protocol == RubySMB::SMB2::SMB2_PROTOCOL_ID &&
15
- smb2_header.command == @original_command
21
+ smb2_header.command == @original_command &&
22
+ structure_size == 9
16
23
  end
17
24
  end
18
25
  end
@@ -1,3 +1,3 @@
1
1
  module RubySMB
2
- VERSION = '1.0.4'.freeze
2
+ VERSION = '1.0.5'.freeze
3
3
  end
@@ -54,5 +54,15 @@ RSpec.describe RubySMB::SMB1::Packet::EmptyPacket do
54
54
  packet.smb_header.command = RubySMB::SMB1::Commands::SMB_COM_NEGOTIATE
55
55
  expect(packet).to_not be_valid
56
56
  end
57
+
58
+ it 'returns false if the packet parameter block size is not 0' do
59
+ packet.parameter_block.word_count = 10
60
+ expect(packet).to_not be_valid
61
+ end
62
+
63
+ it 'returns false if the packet data block size is not 0' do
64
+ packet.data_block.byte_count = 10
65
+ expect(packet).to_not be_valid
66
+ end
57
67
  end
58
68
  end
@@ -19,11 +19,54 @@ RSpec.describe RubySMB::SMB2::Packet::ErrorPacket do
19
19
  it 'should be a 16-bit unsigned integer' do
20
20
  expect(packet.structure_size).to be_a BinData::Uint16le
21
21
  end
22
+
23
+ it 'should be 9 by default' do
24
+ expect(packet.structure_size).to eq 9
25
+ end
22
26
  end
23
27
 
24
- describe '#error_data' do
28
+ describe '#error_context_count' do
25
29
  it 'should be a 8-bit unsigned integer' do
26
- expect(packet.error_data).to be_a BinData::Uint8
30
+ expect(packet.error_context_count).to be_a BinData::Uint8
31
+ end
32
+ end
33
+
34
+ describe '#byte_count' do
35
+ it 'should be a 32-bit unsigned integer' do
36
+ expect(packet.byte_count).to be_a BinData::Uint32le
37
+ end
38
+
39
+ it 'should be the number of bytes in #error_data' do
40
+ str = 'testing'
41
+ packet.error_data = str
42
+ expect(packet.byte_count).to eq str.size
43
+ end
44
+
45
+ it 'should be 0 when #error_data is 1-byte long' do
46
+ packet.error_data = "\x00"
47
+ expect(packet.byte_count).to eq 0
48
+ end
49
+ end
50
+
51
+ describe '#error_data' do
52
+ it 'should be a String' do
53
+ expect(packet.error_data).to be_a BinData::String
54
+ end
55
+
56
+ it 'should be \x00 by default' do
57
+ expect(packet.error_data).to eq "\x00"
58
+ end
59
+
60
+ it 'should read 1 byte when #byte_count is 0' do
61
+ packet.error_data = 'test'
62
+ packet.byte_count = 0
63
+ expect(described_class.read(packet.to_binary_s).error_data.size).to eq 1
64
+ end
65
+
66
+ it 'should read #byte_count bytes when #byte_count is not 0' do
67
+ packet.error_data = 'test'
68
+ packet.byte_count = 4
69
+ expect(described_class.read(packet.to_binary_s).error_data.size).to eq 4
27
70
  end
28
71
  end
29
72
 
@@ -46,6 +89,11 @@ RSpec.describe RubySMB::SMB2::Packet::ErrorPacket do
46
89
  packet.smb2_header.command = RubySMB::SMB2::Commands::NEGOTIATE
47
90
  expect(packet).to_not be_valid
48
91
  end
92
+
93
+ it 'returns false if the packet #structure_size is wrong' do
94
+ packet.structure_size = 10
95
+ expect(packet).to_not be_valid
96
+ end
49
97
  end
50
98
  end
51
99
 
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby_smb
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.4
4
+ version: 1.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Maloney
@@ -91,7 +91,7 @@ cert_chain:
91
91
  G+Hmcg1v810agasPdoydE0RTVZgEOOMoQ07qu7JFXVWZ9ZQpHT7qJATWL/b2csFG
92
92
  8mVuTXnyJOKRJA==
93
93
  -----END CERTIFICATE-----
94
- date: 2018-09-12 00:00:00.000000000 Z
94
+ date: 2018-10-25 00:00:00.000000000 Z
95
95
  dependencies:
96
96
  - !ruby/object:Gem::Dependency
97
97
  name: redcarpet
metadata.gz.sig CHANGED
Binary file