bytearray: set_size (5) не работает для Lua Wireshark - PullRequest
0 голосов
/ 30 сентября 2011

В диссекторе на основе 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 ожидать пользовательских данных? В качестве альтернативы, как я могу выделить ByteArray данного размера?

Ответы [ 2 ]

0 голосов
/ 30 сентября 2011

Похоже, вы нашли ошибку в их реализации.Согласно их собственному 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)
0 голосов
/ 30 сентября 2011

Следующие работы, но не слишком элегантные:

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