From fba49cfe85d4b23ebbffa97fae126a379e913ecd Mon Sep 17 00:00:00 2001 From: Guy Harris Date: Wed, 7 Jul 1999 01:41:15 +0000 Subject: From Jason Lango , 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 --- follow.c | 11 +++++++---- follow.h | 4 +--- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/follow.c b/follow.c index 5e56cec3a3..006b62dd2a 100644 --- a/follow.c +++ b/follow.c @@ -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 * @@ -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 ); } diff --git a/follow.h b/follow.h index cffcd5e01b..7af23bef81 100644 --- a/follow.h +++ b/follow.h @@ -1,6 +1,6 @@ /* follow.h * - * $Id: follow.h,v 1.3 1999/03/23 20:25:50 deniel Exp $ + * $Id: follow.h,v 1.4 1999/07/07 01:41:15 guy Exp $ * * Copyright 1998 Mike Hall * @@ -42,8 +42,6 @@ typedef struct _tcp_frag { char* build_follow_filter( packet_info * ); void reassemble_tcp( u_long, u_long, const char*, u_long, int, u_long ); -int check_fragments( int ); void reset_tcp_reassembly( void ); -void write_packet_data( const u_char *, int ); #endif -- cgit v1.2.3