Ethereal-users: Re: [Ethereal-users] [BUG] tethereal crashes with -x option

Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.

From: Guy Harris <guy@xxxxxxxxxxxx>
Date: Mon, 26 Jan 2004 10:04:26 -0800
On Mon, Jan 26, 2004 at 06:54:20PM +0100, Antoine wrote:
> First, is there a specific place where to report bugs ? I couldn't find
> one, but a bugzilla or equivalent would certainly be easier than
> subscribing to a specific mailing-list...

There's

	http://sourceforge.net/projects/ethereal/

although if you don't have a SourceForge account you won't, I think, get
mail if the bug item gets updated.

> I have the following problem with the latest ethereal package in
> Mandrake Cooker (0.10.0a-2mdk). When used with the -x option, tethereal
> crashes upon trying to display the first packet received. For example:
> 
> # tethereal -i eth0 -x
> Capturing on eth0
>   0.000000 213.41.191.56 -> 62.4.16.70   DNS Standard query A qa.mandrakesoft.com
>  
> ** ERROR **: file print.c: line 691 (print_line): should not be reached
> aborting...
> Aborted (core dumped)

That's a known bug in 0.10.0a, fixed in the current CVS version.

To get a fixed version, you'd either have to build the current CVS
version (which requires more tools, and more complicated steps, than
building a source tarball), or apply the attached patch to the 0.10.0a
source tarball and rebuild.

To work around the problem without having to compile a fixed version,
don't use "-x" unless you're also using "-V".  ("-V" prints many lines
per packet; don't use it unless you really *want* every packet printed
in detail.)
Index: tethereal.c
===================================================================
RCS file: /usr/local/cvsroot/ethereal/tethereal.c,v
retrieving revision 1.210
retrieving revision 1.211
diff -c -r1.210 -r1.211
*** tethereal.c	11 Dec 2003 01:13:32 -0000	1.210
--- tethereal.c	17 Dec 2003 21:11:25 -0000	1.211
***************
*** 2537,2550 ****
  #ifdef HAVE_LIBPCAP
      ld.packet_count++;
  #endif
      if (verbose) {
        /* Print the information in the protocol tree. */
-       print_args.to_file = TRUE;
-       print_args.format = print_format;
-       print_args.print_summary = FALSE;
-       print_args.print_hex = print_hex;
-       print_args.print_dissections = print_dissections_expanded;
-       print_args.print_range = print_range_all_captured;
        proto_tree_print(&print_args, edt, stdout);
        if (!print_hex) {
          /* "print_hex_data()" will put out a leading blank line, as well
--- 2537,2550 ----
  #ifdef HAVE_LIBPCAP
      ld.packet_count++;
  #endif
+     print_args.to_file = TRUE;
+     print_args.format = print_format;
+     print_args.print_summary = !verbose;
+     print_args.print_hex = print_hex;
+     print_args.print_dissections = print_dissections_expanded;
+     print_args.print_range = print_range_all_captured;
      if (verbose) {
        /* Print the information in the protocol tree. */
        proto_tree_print(&print_args, edt, stdout);
        if (!print_hex) {
          /* "print_hex_data()" will put out a leading blank line, as well