pentoo-overlay/net-misc/tcpick/files/tcpick-0.2.1-cpu-loop.patch
2014-01-14 01:01:29 +00:00

43 lines
1.4 KiB
Diff

Re-merged patch by Robert Scheck <robert@fedoraproject.org> for tcpick <= 0.2.1,
which fixes a double-free error detected by glibc on runtime during the execute of
commands like "tcpick -wu -p -i eth0" causing a infinite loop after recording some
sessions. The patch is originally from Cédric Delfosse <cedric@debian.org>.
Further information:
- http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=319864
- http://sourceforge.net/mailarchive/message.php?msg_id=20647778
--- tcpick-0.2.1/src/tracker.c 2004-12-31 14:53:30.000000000 +0100
+++ tcpick-0.2.1/src/tracker.c.cpu-loop 2006-09-10 00:17:59.000000000 +0200
@@ -99,8 +99,11 @@
if( curr->next == NULL )
last_conn = prev_ring;
- free_desc( &(curr->client) );
- free_desc( &(curr->server) );
+ free_desc( &(curr->client), 1);
+ if (flags.writer.type == UNIQUE)
+ free_desc( &(curr->server), 0);
+ else
+ free_desc( &(curr->server), 1);
S_free( curr );
conn = first_conn;
@@ -124,7 +127,7 @@
count_opened--;
}
-int free_desc( struct HOST_DESC * desc )
+int free_desc( struct HOST_DESC * desc, int freedescfilename )
/* frees the host descriptor and closes the file */
{
struct FRAGMENT * tmp;
@@ -134,7 +137,7 @@
if (flags.writer.type == UNIQUE)
desc->oth->file = NULL;
}
- if( desc->filename ) {
+ if( desc->filename && freedescfilename ) {
S_free( desc->filename );
desc->filename = NULL;
}