Skip to content

Commit 3d03a8c

Browse files
committed
Land @jhart-r7's fix for decode_int
2 parents 10d50e7 + 82de2eb commit 3d03a8c

File tree

2 files changed

+12
-11
lines changed

2 files changed

+12
-11
lines changed

lib/rex/encoder/xdr.rb

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,9 @@ def XDR.encode_int(int)
1616
end
1717

1818
def XDR.decode_int!(data)
19-
return data.slice!(0..3).unpack('N')[0] if data
20-
data = 0
19+
raise ArgumentError, 'XDR: No Integer data to decode' unless data
20+
raise ArgumentError, "XDR: Too little data to decode (#{data.size})" if data.size < 4
21+
return data.slice!(0..3).unpack('N')[0]
2122
end
2223

2324
def XDR.encode_lchar(char)

spec/lib/rex/encoder/xdr_spec.rb

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,16 +23,16 @@
2323

2424
context "when data is nil" do
2525
let(:data) { nil }
26-
it "returns 0" do
27-
is_expected.to be(0)
26+
it "raises an error" do
27+
expect { decoded_int }.to raise_error(ArgumentError)
2828
end
2929
end
3030

3131
context "when data is empty" do
3232
let(:data) { '' }
3333

34-
it "returns nil" do
35-
is_expected.to be_nil
34+
it "raises an error" do
35+
expect { decoded_int }.to raise_error(ArgumentError)
3636
end
3737
end
3838

@@ -88,7 +88,7 @@
8888
let(:data) { "\x41" }
8989

9090
it "raises an error" do
91-
expect { decoded_lchar }.to raise_error(NoMethodError)
91+
expect { decoded_lchar }.to raise_error(ArgumentError)
9292
end
9393
end
9494
end
@@ -205,16 +205,16 @@
205205
context "and no values" do
206206
let(:data) { "\x00\x00\x00\x02" }
207207

208-
it "returns an Array filled with nils" do
209-
expect(described_class.decode_varray!(data) { |s| described_class.decode_int!(s) }).to eq([nil, nil])
208+
it "raises an error" do
209+
expect { described_class.decode_varray!(data) { |s| described_class.decode_int!(s) } }.to raise_error(ArgumentError)
210210
end
211211
end
212212

213213
context "longer than available values" do
214214
let(:data) { "\x00\x00\x00\x02\x00\x00\x00\x41" }
215215

216-
it "returns Array padded with nils" do
217-
expect(described_class.decode_varray!(data) { |s| described_class.decode_int!(s) }).to eq([0x41, nil])
216+
it "raises an error" do
217+
expect { described_class.decode_varray!(data) { |s| described_class.decode_int!(s) } }.to raise_error(ArgumentError)
218218
end
219219
end
220220
end

0 commit comments

Comments
 (0)