错误参数#1到';获取索引';(索引超出范围)在Wireshark Lua解剖仪中

错误参数#1到';获取索引';(索引超出范围)在Wireshark Lua解剖仪中,lua,wireshark,wireshark-dissector,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

在我的剖析器中,我有以下代码

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\u index
函数中的第二个按位操作

我知道,这个问题可能出现在
get_index(0)
get_index(defaultdata:len()-1)
中,因为在Lua中没有零索引的元素(不是C的元素),但实际上没有任何元素与其他值一起工作

对于任何值,我都会收到以下消息:
bad argument#1到'get_index'(索引超出范围)

所以,正如我前面提到的,不依赖于此代码的部分可以正常工作。

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

可能是
defaultdata:len()
为零?是的,这是正确的。发布了解决方案。非常感谢。