forked from osmocom/wireshark
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
This commit is contained in:
parent
b547681d56
commit
fba49cfe85
11
follow.c
11
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 <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 );
|
||||
}
|
||||
|
|
4
follow.h
4
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 <mlh@io.com>
|
||||
*
|
||||
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue