Wireshark-commits: [Wireshark-commits] master a348193: wslua: fix error handling for invalid dissec

From: Wireshark code review <code-review-do-not-reply@xxxxxxxxxxxxx>
Date: Sun, 26 May 2019 13:08:45 +0000
URL: https://code.wireshark.org/review/gitweb?p=wireshark.git;a=commit;h=a3481933f9719b053f3178c3da6fc3af2d9f5c53
Submitter: "Anders Broman <a.broman58@xxxxxxxxx>"
Changed: branch: master
Repository: wireshark

Commits:

a348193 by Martin Kaiser (wireshark@xxxxxxxxx):

    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@xxxxxxxxx>
    Tested-by: Petri Dish Buildbot
    Reviewed-by: Anders Broman <a.broman58@xxxxxxxxx>
    

Actions performed:

    from  ae9d528   [Automatic update for 2019-05-26]
     add  a348193   wslua: fix error handling for invalid dissector table


Summary of changes:
 epan/wslua/wslua_dissector.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)