diff options
author | Guy Harris <guy@alum.mit.edu> | 1999-07-07 01:41:15 +0000 |
---|---|---|
committer | Guy Harris <guy@alum.mit.edu> | 1999-07-07 01:41:15 +0000 |
commit | fba49cfe85d4b23ebbffa97fae126a379e913ecd (patch) | |
tree | 7c5350f877efd5a6887e5d7820dcd6827eb36185 /follow.c | |
parent | b547681d563bdaeece9f62ae43da5ab2ae93d953 (diff) | |
download | wireshark-fba49cfe85d4b23ebbffa97fae126a379e913ecd.tar.gz wireshark-fba49cfe85d4b23ebbffa97fae126a379e913ecd.tar.bz2 wireshark-fba49cfe85d4b23ebbffa97fae126a379e913ecd.zip |
From Jason Lango <jal@netapp.com>, a fix to a long-standing problem
(which could cause core dumps in "Follow TCP Stream") -
"check_fragments()" was, when deleting a TCP segment at the beginning of
the list of segments, setting "src[index]" to point to the next segment,
not "frags[index]". "src[index]" is the source IP address, not a
pointer to a fragment.
Also, make some routines not used outside "follow.c" static.
svn path=/trunk/; revision=341
Diffstat (limited to 'follow.c')
-rw-r--r-- | follow.c | 11 |
1 files changed, 7 insertions, 4 deletions
@@ -1,6 +1,6 @@ /* follow.c * - * $Id: follow.c,v 1.8 1999/06/25 02:57:42 gram Exp $ + * $Id: follow.c,v 1.9 1999/07/07 01:41:15 guy Exp $ * * Copyright 1998 Mike Hall <mlh@io.com> * @@ -47,6 +47,9 @@ extern FILE* data_out_file; gboolean incomplete_tcp_stream = FALSE; +static int check_fragments( int ); +static void write_packet_data( const u_char *, int ); + /* this will build libpcap filter text that will only pass the packets related to the stream. There is a chance that two streams could intersect, but not a @@ -180,7 +183,7 @@ reassemble_tcp( u_long sequence, u_long length, const char* data, u_long data_le /* here we search through all the frag we have collected to see if one fits */ -int +static int check_fragments( int index ) { tcp_frag *prev = NULL; tcp_frag *current; @@ -195,7 +198,7 @@ check_fragments( int index ) { if( prev ) { prev->next = current->next; } else { - src[index] = GPOINTER_TO_UINT(current->next); + frags[index] = current->next; } free( current->data ); free( current ); @@ -227,7 +230,7 @@ reset_tcp_reassembly() { } } -void +static void write_packet_data( const u_char* data, int length ) { fwrite( data, 1, length, data_out_file ); } |