对于Lua Wireshark,bytearray:set_size(5)失败

时间:2011-09-30 07:50:26

标签: lua wireshark

在基于Lua的解剖器中,我想将tvb内容转换为其他tvb。代码:

local strbuf = buffer(offset, strlen * 2) -- range from tvb
offset = offset + strlen * 2

local inbytes = strbuf:bytes()
local outbytes = ByteArray.new()            
outbytes:set_size(strlen) -- fails; using a number instead strlen fails to

失败消息为expected userdata, got number。为什么set_size会期望userdata?或者,如何分配给定大小的ByteArray?

2 个答案:

答案 0 :(得分:0)

以下作品,但不太优雅:

local s = ""
for i = 0, strlen-1 do
    s = s .. "ff"
end
local outbytes = ByteArray.new(s)            

答案 1 :(得分:0)

您似乎在其实施中发现了一个错误。根据他们自己的API,创建一个空的ByteArray与使用set_size不相容。

我找不到问题跟踪器,但您可以尝试将找到的错误发送到他们的邮件列表:https://www.wireshark.org/mailman/listinfo/wireshark-dev

作为一种解决方法,您是否尝试使用空字符串初始化ByteArray?

local outbytes = ByteArray.new("") -- notice the empty string here            
outbytes:set_size(strlen)