aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorDavid Perry <boolean263@protonmail.com>2020-10-21 12:33:21 -0400
committerWireshark GitLab Utility <gerald+gitlab-utility@wireshark.org>2020-12-02 20:09:55 +0000
commit27c00ca0e91d9f849477728b2c5e6f819447b137 (patch)
treeacaecf5bf75c27a2765e9b3d8a382d6fcd1fa3e6 /test
parentf4374967bbf9c12746b8ec3cd54dddada9dd353e (diff)
Lua: make TvbRange:raw() return a subset #12046 v2
My initial fix caused several double-offset errors in TvbRange_raw() because I was adjusting for the TvbRange's offset too early in the process. The proper fix is to only adjust for it in the final call to get the data. I also simplified some of the bounds checks to be based on the values in the TvbRange instead of calling `tvb_captured_length()` and the like, because its bounds are already checked against the backing Tvb when it's first taken. Massively expanded the lua test suite to account for every combination of passing offsets and lengths to a Tvb or TvbRange and to the subsequent `:raw()` call.
Diffstat (limited to 'test')
-rw-r--r--test/lua/tvb.lua96
1 files changed, 95 insertions, 1 deletions
diff --git a/test/lua/tvb.lua b/test/lua/tvb.lua
index 293c97d584..646e5a04cb 100644
--- a/test/lua/tvb.lua
+++ b/test/lua/tvb.lua
@@ -54,7 +54,7 @@ end
-- number of verifyFields() * (1 + number of fields) +
-- number of verifyResults() * (1 + 2 * number of values)
--
-local taptests = { [FRAME]=4, [OTHER]=337 }
+local taptests = { [FRAME]=4, [OTHER]=353 }
local function getResults()
print("\n-----------------------------\n")
@@ -883,6 +883,100 @@ function test_proto.dissector(tvbuf,pktinfo,root)
verifyResults("add_pfield-rfc1123-local", autc_match_values)
----------------------------------------
+ testing(OTHER, "TvbRange subsets")
+
+ resetResults()
+
+ local offset = 5
+ local len = 10
+ local b_offset = 3
+ local b_len = 2
+ local range
+ local range_raw
+ local expected
+
+ -- This is the same data from the "tree:add_packet_field Bytes" test
+ -- copied here for clarity
+ local bytesstring1 = "deadbeef0123456789DEADBEEFabcdef"
+ local bytestvb1 = ByteArray.new(bytesstring1, true):tvb("Bytes hex-string 1")
+
+ -- tvbrange with no offset or length (control test case)
+ range = bytestvb1()
+ range_raw = range:raw()
+ expected = range:bytes():raw()
+ execute ("tvbrange_raw", range_raw == expected,
+ string.format('range_raw="%s" expected="%s"', range_raw, expected))
+ range_raw = range:raw(b_offset)
+ expected = range:bytes():raw(b_offset)
+ execute ("tvbrange_raw_offset", range_raw == expected,
+ string.format('range_raw="%s" expected="%s"', range_raw, expected))
+ range_raw = range:raw(0, b_len)
+ expected = range:bytes():raw(0, b_len)
+ execute ("tvbrange_raw_len", range_raw == expected,
+ string.format('range_raw="%s" expected="%s"', range_raw, expected))
+ range_raw = range:raw(b_offset, b_len)
+ expected = range:bytes():raw(b_offset, b_len)
+ execute ("tvbrange_raw_offset_len", range_raw == expected,
+ string.format('range_raw="%s" expected="%s"', range_raw, expected))
+
+ -- tvbrange with len only
+ range = bytestvb1(0, len)
+ range_raw = range:raw()
+ expected = range:bytes():raw()
+ execute ("tvbrange_len_raw", range_raw == expected,
+ string.format('range_raw="%s" expected="%s"', range_raw, expected))
+ range_raw = range:raw(b_offset)
+ expected = range:bytes():raw(b_offset)
+ execute ("tvbrange_len_raw_offset", range_raw == expected,
+ string.format('range_raw="%s" expected="%s"', range_raw, expected))
+ range_raw = range:raw(0, b_len)
+ expected = range:bytes():raw(0, b_len)
+ execute ("tvbrange_len_raw_len", range_raw == expected,
+ string.format('range_raw="%s" expected="%s"', range_raw, expected))
+ range_raw = range:raw(b_offset, b_len)
+ expected = range:bytes():raw(b_offset, b_len)
+ execute ("tvbrange_len_raw_offset_len", range_raw == expected,
+ string.format('range_raw="%s" expected="%s"', range_raw, expected))
+
+ -- tvbrange with offset only
+ range = bytestvb1(offset)
+ range_raw = range:raw()
+ expected = range:bytes():raw()
+ execute ("tvbrange_offset_raw", range_raw == expected,
+ string.format('range_raw="%s" expected="%s"', range_raw, expected))
+ range_raw = range:raw(b_offset)
+ expected = range:bytes():raw(b_offset)
+ execute ("tvbrange_offset_raw_offset", range_raw == expected,
+ string.format('range_raw="%s" expected="%s"', range_raw, expected))
+ range_raw = range:raw(0, b_len)
+ expected = range:bytes():raw(0, b_len)
+ execute ("tvbrange_offset_raw_len", range_raw == expected,
+ string.format('range_raw="%s" expected="%s"', range_raw, expected))
+ range_raw = range:raw(b_offset, b_len)
+ expected = range:bytes():raw(b_offset, b_len)
+ execute ("tvbrange_offset_raw_offset_len", range_raw == expected,
+ string.format('range_raw="%s" expected="%s"', range_raw, expected))
+
+ -- tvbrange with offset and len
+ range = bytestvb1(offset, len)
+ range_raw = range:raw()
+ expected = range:bytes():raw()
+ execute ("tvbrange_offset_len_raw", range_raw == expected,
+ string.format('range_raw="%s" expected="%s"', range_raw, expected))
+ range_raw = range:raw(b_offset)
+ expected = range:bytes():raw(b_offset)
+ execute ("tvbrange_offset_len_raw_offset", range_raw == expected,
+ string.format('range_raw="%s" expected="%s"', range_raw, expected))
+ range_raw = range:raw(0, b_len)
+ expected = range:bytes():raw(0, b_len)
+ execute ("tvbrange_offset_len_raw_len", range_raw == expected,
+ string.format('range_raw="%s" expected="%s"', range_raw, expected))
+ range_raw = range:raw(b_offset, b_len)
+ expected = range:bytes():raw(b_offset, b_len)
+ execute ("tvbrange_offset_len_raw_offset_len", range_raw == expected,
+ string.format('range_raw="%s" expected="%s"', range_raw, expected))
+
+----------------------------------------
setPassed(FRAME)
end