diff options
author | David Perry <boolean263@protonmail.com> | 2020-10-21 12:33:21 -0400 |
---|---|---|
committer | Wireshark GitLab Utility <gerald+gitlab-utility@wireshark.org> | 2020-12-02 20:09:55 +0000 |
commit | 27c00ca0e91d9f849477728b2c5e6f819447b137 (patch) | |
tree | acaecf5bf75c27a2765e9b3d8a382d6fcd1fa3e6 /test | |
parent | f4374967bbf9c12746b8ec3cd54dddada9dd353e (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.lua | 96 |
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 |