diff --git a/tools/dissectors/1-hfudt.lua b/tools/dissectors/1-hfudt.lua index 70831416b9..00b71a341a 100644 --- a/tools/dissectors/1-hfudt.lua +++ b/tools/dissectors/1-hfudt.lua @@ -158,7 +158,13 @@ local packet_types = { } local unsourced_packet_types = { - ["DomainList"] = true + ["DomainList"] = true, + ["DomainConnectRequest"] = true, + ["ICEPing"] = true, + ["ICEPingReply"] = true, + ["DomainServerConnectionToken"] = true, + ["DomainSettingsRequest"] = true, + ["ICEServerHeartbeatACK"] = true } local fragments = {} @@ -307,7 +313,10 @@ function p_hfudt.dissector(buf, pinfo, tree) -- check if we have part of a message that we need to re-assemble -- before it can be dissected - if message_bit == 1 and message_position ~= 0 then + -- limit array indices to prevent lock-up with arbitrary data + if message_bit == 1 and message_position ~= 0 and message_number < 100 + and message_part_number < 100 then + if fragments[message_number] == nil then fragments[message_number] = {} end