TRANSUM: fix crash when switching profiles
"output_rrpd" is NULL when the TRANSUM dissector is disabled (which is the default behavior). When switching to a profile where the dissector is enabled, redissection happens, but without invoking the init routine. This leads to a crash when dissect_transum tries to query "output_rrpd". Fix this by creating the map unconditionally. Use wmem_map_new_autoreset since its contents should be erased for new capture files. Bug: 13697 Change-Id: Iea897da8faf8042dffdc74327d9d1221e5fb155f Fixes: v2.3.0rc0-1887-g78d56e5dd7 ("Cleanup transum post-dissector.") Reviewed-on: https://code.wireshark.org/review/28474 Petri-Dish: Peter Wu <peter@lekensteyn.nl> Tested-by: Petri Dish Buildbot Reviewed-by: Anders Broman <a.broman58@gmail.com>
This commit is contained in:
parent
e94553167c
commit
910bc034ab
|
@ -801,8 +801,6 @@ static void init_globals(void)
|
|||
|
||||
wmem_map_insert(preferences.tcp_svc_ports, GUINT_TO_POINTER(445), GUINT_TO_POINTER(RTE_CALC_SMB2));
|
||||
wmem_map_insert(preferences.udp_svc_ports, GUINT_TO_POINTER(53), GUINT_TO_POINTER(RTE_CALC_DNS));
|
||||
|
||||
output_rrpd = wmem_map_new(wmem_file_scope(), g_direct_hash, g_direct_equal);
|
||||
}
|
||||
|
||||
/* Undo capture file-specific initializations. */
|
||||
|
@ -1335,6 +1333,8 @@ proto_register_transum(void)
|
|||
register_cleanup_routine(cleanup_globals);
|
||||
|
||||
register_postdissector(transum_handle);
|
||||
|
||||
output_rrpd = wmem_map_new_autoreset(wmem_epan_scope(), wmem_file_scope(), g_direct_hash, g_direct_equal);
|
||||
}
|
||||
|
||||
void proto_reg_handoff_transum(void)
|
||||
|
|
Loading…
Reference in New Issue