Am 29.11.2016 um 04:00 schrieb Guy Harris:
>
> So you'd either have to fetch the length yourself and use an FT_STRING field, or get FT_UINT_STRING supported in Lua.
Currently I used a workaround and wrote a LUA function that retrieves
the wide char string from the tvb.
-- Get a wide character string from a TVB.
-- Assume the high byte of all 16-bit characters is always zero.
-- If the number of bytes is not know pass -1 to get the remaing
-- bytes of the packet.
function WideCharString(tvb, offset, remaining)
local s = ""
if remaining == -1 then
remaining = tvb:reported_length_remaining()
end
while (offset < remaining) do
local c = tvb:range(offset, 1):string()
if c == "" then return s end
s = s .. c -- string.format("%s", c)
offset = offset + 2
end
return s
end
If I add this to a tree then I get the correct name:
local rem = tvb:reported_length_remaining()
local name = WideCharString(tvb, 8, rem - 8)
tree:add("WName:", tvb:range(8, rem - 8), name)
But although the range is addressed with "tvb:range(8, rem - 8)" the
bytes in the packet panes are not highlighted for this tree item.
So, I fear it would be better to get FT_UINT_STRING in LUA supported.
Regards
Helge