Wireshark Lua解剖器中的错误参数#1到'get_index'(索引超出范围)

时间:2014-02-13 08:05:15

标签: lua wireshark wireshark-dissector

在我的解剖器中,我有这段代码

local defaultdata = data_tvb():bytes()
local newdata = ByteArray.new()
newdata:set_size(defaultdata:len())
for i=0,defaultdata:len()-2 do 
local var = bit.band((bit.lshift(defaultdata:get_index(i), 1) + bit.rshift(defaultdata:get_index(i+1), 7)), 0xff)
newdata:set_index(i, var) end
local var = bit.band((bit.lshift(defaultdata:get_index(defaultdata:len()-1), 1) + bit.rshift(defaultdata:get_index(0), 7)), 0xff)
newdata:set_index(defaultdata:len()-1,var)
data_tvb = ByteArray.tvb(newdata, "Decoded") end

我的问题是get_index函数中的第二个按位操作。

我知道,这个问题可能在get_index(0)get_index(defaultdata:len()-1),因为在Lua中没有零索引的元素(不是C的元素),但实际上没有其他值可以使用。

根据任何值我收到此消息:bad argument #1 to 'get_index' (index out of range) 因此,正如我上面提到的那样,不依赖于此代码的部分工作正常。

1 个答案:

答案 0 :(得分:0)

几乎忘了发布解决方案。 问题是我的解剖器不包括空应用程序协议有效负载的情况,这就是我遇到这些错误的原因。解决方案是添加一个“if”语句,用于检查有效负载的长度。