在我的解剖器中,我有这段代码
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)
因此,正如我上面提到的那样,不依赖于此代码的部分工作正常。
答案 0 :(得分:0)
几乎忘了发布解决方案。 问题是我的解剖器不包括空应用程序协议有效负载的情况,这就是我遇到这些错误的原因。解决方案是添加一个“if”语句,用于检查有效负载的长度。