Wireshark mailing list archives
Error creating custom giop dissector
From: andy.ling () quantel com
Date: Wed, 4 Dec 2013 10:55:21 +0000
I mentioned this in a previous email, but nobody responded. So it may have got missed. This looks like a bug, so should I raise a bug report or has it been addressed by recent fixes? I am creating a custom dissector from a CORBA IDL file using omniorb.... c:\Python27\omniorb\omniORB-4.1.6\bin\x86_win32\omniidl -p c:\wireshark-1.10.3\tools -b wireshark_be q_quentin.idl > packet-quentin.c I have a function declared in the IDL that looks like.. typedef sequence <long> Longs ; void newThumbnail (in long ident, in long offset, in long width, in long height, in Longs data) ; This produces code that looks like case Request: proto_tree_add_int(tree, hf_Quentin_ThumbnailListener_newThumbnail_ident, tvb, *offset-4, 4, get_CDR_long(tvb,offset,stream_is_big_endian, boundary)); proto_tree_add_int(tree, hf_Quentin_ThumbnailListener_newThumbnail_offset, tvb, *offset-4, 4, get_CDR_long(tvb,offset,stream_is_big_endian, boundary)); proto_tree_add_int(tree, hf_Quentin_ThumbnailListener_newThumbnail_width, tvb, *offset-4, 4, get_CDR_long(tvb,offset,stream_is_big_endian, boundary)); proto_tree_add_int(tree, hf_Quentin_ThumbnailListener_newThumbnail_height, tvb, *offset-4, 4, get_CDR_long(tvb,offset,stream_is_big_endian, boundary)); u_octet4_loop_Quentin_ThumbnailListener_newThumbnail_data = get_CDR_ulong(tvb, offset, stream_is_big_endian, boundary); /* coverity[returned_pointer] */ item = proto_tree_add_uint(tree, hf_Quentin_ThumbnailListener_newThumbnail_data, tvb,*offset-4, 4, u_octet4_loop_Quentin_ThumbnailListener_newThumbnail_data); for (i_Quentin_ThumbnailListener_newThumbnail_data=0; i_Quentin_ThumbnailListener_newThumbnail_data < u_octet4_loop_Quentin_ThumbnailListener_newThumbnail_data; i_Quentin_ThumbnailListener_newThumbnail_data++) { proto_tree_add_int(tree, hf_Quentin_ThumbnailListener_newThumbnail_data, tvb, *offset-4, 4, get_CDR_long(tvb,offset,stream_is_big_endian, boundary)); } If I run this I get an error in the dissector Q_quentin Dissector Using GIOP API ident: 0 offset: 1073 width: 90 height: 72 Seq length of data: 6480 followed by.. Message: proto.c:3174: failed assertion "DISSECTOR_ASSERT_NOT_REACHED" It looks like the variable used in the loop is wrong. This needs a new variable creating. e.g. {&hf_Quentin_ThumbnailListener_newThumbnail_data_int, {"data","giop-q_quentin.ThumbnailListener.newThumbnail.data.int",FT_INT32,BASE_DEC,NULL,0x0,NULL,HFILL}}, and the loop changing to use this e.g. proto_tree_add_int(tree, hf_Quentin_ThumbnailListener_newThumbnail_data_int, tvb, *offset-4, 4, get_CDR_long(tvb,offset,stream_is_big_endian, boundary)); This used to work in version 1.6 (the last one I've used). So something got missed in the recent changes. Thanks for any help sorting this. Regards Andy Ling ___________________________________________________________________________ Sent via: Wireshark-dev mailing list <wireshark-dev () wireshark org> Archives: http://www.wireshark.org/lists/wireshark-dev Unsubscribe: https://wireshark.org/mailman/options/wireshark-dev mailto:wireshark-dev-request () wireshark org?subject=unsubscribe
Current thread:
- Error creating custom giop dissector andy . ling (Dec 04)