Wireshark-dev: Re: [Wireshark-dev] crash with Preference in Plugin
From: Jaap Keuter <jaap.keuter@xxxxxxxxx>
Date: Mon, 17 Dec 2007 08:22:43 +0100
Hi,Loose the ipt_config_preferencefile variable, just go with gbl_iptConfigDictionary. See packet-cigi.c where global_host_ip is handled similarly.
Thanx, Jaap khushbu thakkar wrote:
Hi Jaap, Thanx for the response. Attached is the part of plugin code.Reply Soon,Thank You, KhushbuOn 12/15/07, *Jaap Keuter* <jaap.keuter@xxxxxxxxx <mailto:jaap.keuter@xxxxxxxxx>> wrote:Hi, If you could post at least your proto_register and proto_handoff code we might be able to get some insight. Thanx, Jaap khushbu thakkar wrote: > Hello, > > I am not actually new to Wireshark, i have build the plugin in > Wireshark which has to be decoded on the top of UDP. I m using this on > Window XP SP1 . I have build Wireshark with GTK+ 2.10.12 and Wireshark > Version is 0.99.6. > > The problem with me is *Wireshark Crash* when the "*Preference*" > of the my *plugin * is set. Whenever the preference value changes from > the initialized value and if we try to capture or load the recorded file > having packets of my plugin protocol it crashes. And one more thing is > if i disable the preference code n use the xxx.dll then it works fine > i.e. problem is due to preference code. > > I m using the Standard code format for registering the > Preference as in Readme.developer. So anybody could please guide me > where should the problem actually be. Thank You in advance for the help. > > Reply Soon, > Best Regards, > Khushbu > _______________________________________________ Wireshark-dev mailing list Wireshark-dev@xxxxxxxxxxxxx <mailto:Wireshark-dev@xxxxxxxxxxxxx> http://www.wireshark.org/mailman/listinfo/wireshark-dev ------------------------------------------------------------------------ /* Global sample preference ("controls" display of numbers) */ static const char *gbl_iptConfigDictionary = NULL; static char *ipt_config_preferencefile = NULL; /* Register the protocol with Wireshark */ /* this format is require because a script is used to build the C function that calls all the protocol registration. */ void proto_register_ipt_spy(void){ module_t *ipt_spy_module;/* Setup list of header fields See Section 1.6.1 for details*/ static hf_register_info hf[] = { { &hf_ipt_spy_timestamp, { "Time Stamp (microseconds)", "iptwp.timestamp",FT_UINT32, BASE_DEC, NULL, 0x0, "", HFILL }}, { &hf_ipt_spy_protocolversion, { "Protocol Version", "iptwp.protocolversion",FT_UINT32, BASE_HEX, VALS(ipt_spy_protocol_ver_vals) , 0x0, "", HFILL }}, . . . . /* Setup protocol subtree array */ static gint *ett[] = { &ett_ipt_spy, &ett_ipt_spy_dscpfield, &ett_ipt_spy_app_data, &ett_ipt_spy_nestd_app_data, &ett_ipt_spy_app_data_booleanfield, &ett_ipt_spy_multiple_app_data, &ett_ipt_spy_app_data_fcs, }; ipt_config_preferencefile = g_strdup(""); gbl_iptConfigDictionary = g_strdup(ipt_config_preferencefile); /* Register the protocol name and description */ proto_ipt_spy = proto_register_protocol("IP Train Wire Protocol", "IPTWP", "iptwp"); register_dissector("IPTWP", dissect_ipt_spy, proto_ipt_spy); /*By Cisco*/ /* Required function calls to register the header fields and subtrees used */ proto_register_field_array(proto_ipt_spy, hf, array_length(hf));proto_register_subtree_array(ett, array_length(ett)); /* Register preferences module (See Section 2.6 for more on preferences) */ ipt_spy_module = prefs_register_protocol(proto_ipt_spy, proto_reg_handoff_ipt_spy);/* Register a sample preference */ prefs_register_string_preference(ipt_spy_module, "iptfile", "IPT configuration file", "IPT configuration file", &gbl_iptConfigDictionary); } /* If this dissector uses sub-dissector registration add a registration routine.This exact format is required because a script is used to find these routines and create the code that calls these routines. This function is also called by preferences whenever "Apply" is pressed (see prefs_register_protocol above) so it should accommodate being called more than once.*/ void proto_reg_handoff_ipt_spy(void) { static gboolean inited = FALSE; dissector_handle_t ipt_spy_handle; //g_free(ipt_config_pref); // current_asn1 = g_strdup(asn1_filename); //ipt_config_pref = g_strdup(gbl_iptConfigDictionary);if(!inited ) {ipt_spy_handle = create_dissector_handle(dissect_ipt_spy, proto_ipt_spy); inited = TRUE; } else { dissector_delete("udp.port", ipt_spy_UDP_MD_PORT, ipt_spy_handle); dissector_delete("udp.port", ipt_spy_UDP_PD_PORT, ipt_spy_handle); } ipt_config_preferencefile = gbl_iptConfigDictionary; dissector_add("udp.port", ipt_spy_UDP_MD_PORT, ipt_spy_handle);dissector_add("udp.port", ipt_spy_UDP_PD_PORT, ipt_spy_handle); /* If you perform registration functions which are dependant uponprefs the you should de-register everything which was associated with the previous settings and re-register using the new prefs settings here. In general this means you need to keep track of what value the preference had at the time you registered using a local static in this function. ie. static int currentPort = -1; if( -1 != currentPort ) { dissector_delete( "tcp.port", currentPort, ipt_spy_handle); } currentPort = gPortPref; dissector_add("tcp.port", currentPort, ipt_spy_handle); */}
- Follow-Ups:
- Re: [Wireshark-dev] crash with Preference in Plugin
- From: khushbu thakkar
- Re: [Wireshark-dev] crash with Preference in Plugin
- References:
- [Wireshark-dev] crash with Preference in Plugin
- From: khushbu thakkar
- Re: [Wireshark-dev] crash with Preference in Plugin
- From: Jaap Keuter
- Re: [Wireshark-dev] crash with Preference in Plugin
- From: khushbu thakkar
- [Wireshark-dev] crash with Preference in Plugin
- Prev by Date: Re: [Wireshark-dev] Wireshark on a Windows XP VMware?
- Next by Date: [Wireshark-dev] RFC: Detecting duplicate IP addresses [PATCH]
- Previous by thread: Re: [Wireshark-dev] crash with Preference in Plugin
- Next by thread: Re: [Wireshark-dev] crash with Preference in Plugin
- Index(es):