forked from osmocom/wireshark
wslua: fix error handling for invalid dissector table
Calling DissectorTables's try method for a dissector table of an unknown type crashes Wireshark. local dt = DissectorTable.get("iso14443.subdissector") dt:try(0, tvbuf, pinfo, tree) causes a segmentation fault Thread 1 "wireshark" received signal SIGSEGV, Segmentation fault. except_pop () at /media/sf_wireshark.git/epan/except.c:264 264 set_top(top->except_down); (gdb) print top $1 = (struct except_stacknode *) 0x2 (gdb) bt at /media/sf_wireshark.git/epan/packet.c:590 My gut feeling (I haven't verified this) is that we should not call luaL_error() inside a TRY-CATCH block. DissectorTable_try does this when the type of the dissector table is not supported. Fall back to the data dissector in this case and bring up an expert info instead of aborting the dissection completely. Change-Id: I9a49f738a99b2618014f41050d8c0bf6bfbb4138 Reviewed-on: https://code.wireshark.org/review/33357 Petri-Dish: Anders Broman <a.broman58@gmail.com> Tested-by: Petri Dish Buildbot Reviewed-by: Anders Broman <a.broman58@gmail.com>
This commit is contained in:
parent
ae9d528c5f
commit
a3481933f9
1 changed files with 1 additions and 1 deletions
|
@ -541,7 +541,7 @@ WSLUA_METHOD DissectorTable_try (lua_State *L) {
|
|||
handled = TRUE;
|
||||
}
|
||||
} else {
|
||||
luaL_error(L,"No such type of dissector_table");
|
||||
error = "No such type of dissector table";
|
||||
}
|
||||
|
||||
if (!handled) {
|
||||
|
|
Loading…
Reference in a new issue