Package: flow-tools
Version: 1:0.68-6
Severity: normal
Tags: patch

Incorrect print of capture times in flow-print and flow-report.

-- System Information:
Debian Release: 3.1
Architecture: amd64 (x86_64)
Kernel: Linux 2.6.12
Locale: LANG=ru_RU.KOI8-R, LC_CTYPE=ru_RU.KOI8-R (charmap=KOI8-R)

Versions of packages flow-tools depends on:
ii  libc6                  2.3.2.ds1-22      GNU C Library: Shared libraries an
ii  libmysqlclient12       4.0.24-10         mysql database client library
ii  libpq4                 8.0.3-15          PostgreSQL C client library
ii  libwrap0               7.6.dbs-8         Wietse Venema's TCP wrappers libra
ii  python                 2.3.5-2           An interactive high-level object-o
ii  zlib1g                 1:1.2.2-4.sarge.2 compression library - runtime

-- no debconf information
--- flow-tools-0.68.orig/src/flow-print.c
+++ flow-tools-0.68/src/flow-print.c
@@ -298,6 +298,7 @@
   u_long bpp;
   char fmt_buf1[64], fmt_buf2[64];
   char *rec;
+  time_t time_ftt;
 
   if (ftio_check_xfield(ftio, FT_XFIELD_DPKTS |
     FT_XFIELD_DOCTETS | FT_XFIELD_FIRST | FT_XFIELD_LAST | FT_XFIELD_INPUT |
@@ -351,14 +352,16 @@
       (u_long)*cur.dPkts, (u_long)*cur.dOctets);
 
     ftt = ftltime(*cur.sysUpTime, *cur.unix_secs, *cur.unix_nsecs, *cur.First);
-    tm = localtime((time_t*)&ftt.secs);
+    time_ftt = ftt.secs;
+    tm = localtime(&time_ftt);
 
     printf(" %-2.2d%-2.2d.%-2.2d:%-2.2d:%-2.2d.%-3.3lu  ",
       (int)tm->tm_mon+1, (int)tm->tm_mday, (int)tm->tm_hour,
       (int)tm->tm_min, (int)tm->tm_sec, (u_long)ftt.msecs);
 
     ftt = ftltime(*cur.sysUpTime, *cur.unix_secs, *cur.unix_nsecs, *cur.Last);
-    tm = localtime((time_t*)&ftt.secs);
+    time_ftt = ftt.secs;
+    tm = localtime(&time_ftt);
 
     active_secs = (*cur.Last - *cur.First) / 1000;
     active_msecs = (*cur.Last - *cur.First) % 1000;
@@ -398,6 +401,7 @@
   u_long active_secs, active_msecs;
   u_long bpp;
   char *rec;
+  time_t time_ftt;
 
   if (ftio_check_xfield(ftio, FT_XFIELD_DPKTS |
     FT_XFIELD_DOCTETS | FT_XFIELD_FIRST | FT_XFIELD_LAST | FT_XFIELD_INPUT |
@@ -465,14 +469,16 @@
       (u_long)*cur.dPkts, (u_long)*cur.dOctets);
 
     ftt = ftltime(*cur.sysUpTime, *cur.unix_secs, *cur.unix_nsecs, *cur.First);
-    tm = localtime((time_t*)&ftt.secs);
+    time_ftt = ftt.secs;
+    tm = localtime(&time_ftt);
 
     printf(" %-2.2d%-2.2d.%-2.2d:%-2.2d:%-2.2d.%-3.3lu  ",
       (int)tm->tm_mon+1, (int)tm->tm_mday, (int)tm->tm_hour, (int)tm->tm_min,
       (int)tm->tm_sec, (u_long)ftt.msecs);
 
     ftt = ftltime(*cur.sysUpTime, *cur.unix_secs, *cur.unix_nsecs, *cur.Last);
-    tm = localtime((time_t*)&ftt.secs);
+    time_ftt = ftt.secs;
+    tm = localtime(&time_ftt);
 
     active_secs = (*cur.Last - *cur.First) / 1000;
     active_msecs = (*cur.Last - *cur.First) % 1000;
@@ -675,6 +681,7 @@
   struct ftver ftv;
   char fmt_buf1[64], fmt_buf2[64];
   char *rec;
+  time_t time_ftt;
 
   if (ftio_check_xfield(ftio, FT_XFIELD_DPKTS |
     FT_XFIELD_DOCTETS | FT_XFIELD_FIRST | FT_XFIELD_LAST | FT_XFIELD_INPUT |
@@ -711,14 +718,16 @@
     cur.tcp_flags = ((u_int8*)(rec+fo.tcp_flags));
 
     ftt = ftltime(*cur.sysUpTime, *cur.unix_secs, *cur.unix_nsecs, *cur.First);
-    tm = localtime((time_t*)&ftt.secs);
+    time_ftt = ftt.secs;
+    tm = localtime(&time_ftt);
 
     printf("%-2.2d%-2.2d.%-2.2d:%-2.2d:%-2.2d.%-3.3lu ",
       (int)tm->tm_mon+1, (int)tm->tm_mday, (int)tm->tm_hour,
       (int)tm->tm_min, (int)tm->tm_sec, (u_long)ftt.msecs);
 
     ftt = ftltime(*cur.sysUpTime, *cur.unix_secs, *cur.unix_nsecs, *cur.Last);
-    tm = localtime((time_t*)&ftt.secs);
+    time_ftt = ftt.secs;
+    tm = localtime(&time_ftt);
 
     printf("%-2.2d%-2.2d.%-2.2d:%-2.2d:%-2.2d.%-3.3lu ",
       (int)tm->tm_mon+1, (int)tm->tm_mday, (int)tm->tm_hour,
@@ -2173,6 +2182,7 @@
   u_long bpp;
   char fmt_buf1[64], fmt_buf2[64], fmt_buf3[64], fmt_buf4[64], fmt_buf5[64], fmt_buf6[64];
   char *rec;
+  time_t time_ftt;
 
   if (ftio_check_xfield(ftio, FT_XFIELD_DPKTS |
     FT_XFIELD_DOCTETS | FT_XFIELD_FIRST | FT_XFIELD_LAST | FT_XFIELD_INPUT |
@@ -2239,14 +2249,16 @@
       (u_long)*cur.dPkts, (u_long)*cur.dOctets);
 
     ftt = ftltime(*cur.sysUpTime, *cur.unix_secs, *cur.unix_nsecs, *cur.First);
-    tm = localtime((time_t*)&ftt.secs);
+    time_ftt = ftt.secs;
+    tm = localtime(&time_ftt);
 
     printf(" %-4.4d-%-2.2d-%-2.2d %-2.2d:%-2.2d:%-2.2d.%-3.3lu  ",
       (int)tm->tm_year+1900, (int)tm->tm_mon+1, (int)tm->tm_mday, (int)tm->tm_hour,
       (int)tm->tm_min, (int)tm->tm_sec, (u_long)ftt.msecs);
 
     ftt = ftltime(*cur.sysUpTime, *cur.unix_secs, *cur.unix_nsecs, *cur.Last);
-    tm = localtime((time_t*)&ftt.secs);
+    time_ftt = ftt.secs;
+    tm = localtime(&time_ftt);
 
     active_secs = (*cur.Last - *cur.First) / 1000;
     active_msecs = (*cur.Last - *cur.First) % 1000;
--- flow-tools-0.68.orig/lib/ftstat.c
+++ flow-tools-0.68/lib/ftstat.c
@@ -12363,7 +12363,7 @@
 {
   int comma, sort_field;
   char *buf, fmt_buf[32];
-  time_t now;
+  time_t now, time_flow;
 
   /* shortcut */
   if (!(rpt->out->options & FT_STAT_OPT_HEADER))
@@ -12619,11 +12619,13 @@
     fprintf(fp, "# records_shown:      %s\n", fmt_buf);
   }
 
+  time_flow = rpt->time_start;
   fprintf(fp, "# first-flow:           %lu %s",
-    (unsigned long)rpt->time_start, ctime((time_t*)&rpt->time_start));
+    (unsigned long)rpt->time_start, ctime(&time_flow));
 
+  time_flow = rpt->time_end;
   fprintf(fp, "# last-flow:            %lu %s",
-    (unsigned long)rpt->time_end, ctime((time_t*)&rpt->time_end));
+    (unsigned long)rpt->time_end, ctime(&time_flow));
 
   now = time((time_t*)0L);
 

Reply via email to