Wireshark-bugs: [Wireshark-bugs] [Bug 5095] new dissector for Apache Etch
Date: Wed, 11 Aug 2010 11:42:54 -0700 (PDT)
https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=5095 --- Comment #2 from Bill Meier <wmeier@xxxxxxxxxxx> 2010-08-11 14:42:52 EDT --- Some comments: 1. Please put the contents of the packet-etch.h file into the packet-etch.c file. Since the .h file is not used elsewhere there is no need for a separate file. 2. #ifdef DISSECTOR_WITH_GUI doesn't seem necessary #include <stdio.h> doesn't appear to be needed. 3. Wireshark has a standard set of functions for "value to string" lookups. See doc/README.developer section: 1.7.1 match_strval and val_to_str. These should be used instead of the code in read_type & etc. 4. Names of the form g_... are used by GLib. I suggest using something like gbl_... instead of g_... for global vars defined in packet-etch.c. 5. Looking at the code in proto_register and proto_reg_handoff I suspect that a "TCP port preference" is desired (rather than the hard-wiring of port 4001). However, proto_reg_handoff... is only called once at Wireshark startup since you've not specified it as a callback in etch_module = prefs_register_protocol(proto_etch, etch_prefs_apply_cb); The normal way to handle multiple preferences for which an action is needed when the preference is changed is: a. Specify the proto_reg_handoff fcn as the prefs callback; b. Include whatevefr actions are required in the proto_reg_handoff fcn. In this case, I think you might need to keep track of th current value of the keytab_filename so you would know if it has been changed when proto_reg_handoff is called when there is a pref change. doc/README.developer has some information on prefs callbacks and etc. In any case, TCP port 4001 seems to be already assigned. (See http://www.iana.org/assignments/port-numbers). Is there a standard (maybe IANA assigned) port used for etch ?? 6. In general, all functiona and variables other than proto_register... and proto_reg_handoff... should be static so as to prevent any name clashes with other dissectors. 7. Unless I'm missing something, it looks to me like there's a memory leak each time the "hash/symbol" files are reread in that g_symbols_count is reset to 0 but the g_malloc'd storage is not freed up. g_symbols[g_symbols_count].symbol = (char *) g_malloc(strlen(symbol) + 1); 8. dissect_etch() needs to verify that at least 4 bytes are available otherwise the following tvb_memeql will cause an exception. use 'if (tvb_length(...) < 4) return FALSE;' 9. Initializing g_old_frame_num in proto_register won't work as intended since proto_reg_handoff is called only *once* whne Wireshark is started. If you need to initialize a variable each time a file is completely redissected or (re)read, you'll need to register an init fcn. See the register_init_routine in doc/README.developer. --- There are undoubtedly more comments but the above comments are a start. Also: Can you provide a pointer to a specification for the protocol ? -- Configure bugmail: https://bugs.wireshark.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug.
- References:
- [Wireshark-bugs] [Bug 5095] New: new dissector for Apache Etch
- From: bugzilla-daemon
- [Wireshark-bugs] [Bug 5095] New: new dissector for Apache Etch
- Prev by Date: [Wireshark-bugs] [Bug 4421] fix and update radiotap parser
- Next by Date: [Wireshark-bugs] [Bug 5095] new dissector for Apache Etch
- Previous by thread: [Wireshark-bugs] [Bug 5095] new dissector for Apache Etch
- Next by thread: [Wireshark-bugs] [Bug 5095] new dissector for Apache Etch
- Index(es):