]> The Tcpdump Group git mirrors - tcpdump/blobdiff - tcpdump.c
Check for a TCP header length that's too short, report more information
[tcpdump] / tcpdump.c
index 9d26535322a7249b4e65b7caf6236a2c17da0967..3f175c28fa15f5d082f82748aff1c16aa445d0ea 100644 (file)
--- a/tcpdump.c
+++ b/tcpdump.c
@@ -30,7 +30,7 @@ static const char copyright[] _U_ =
     "@(#) Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 2000\n\
 The Regents of the University of California.  All rights reserved.\n";
 static const char rcsid[] _U_ =
-    "@(#) $Header: /tcpdump/master/tcpdump/tcpdump.c,v 1.216.2.9 2004-01-26 01:59:45 guy Exp $ (LBL)";
+    "@(#) $Header: /tcpdump/master/tcpdump/tcpdump.c,v 1.216.2.12 2004-06-15 00:01:52 guy Exp $ (LBL)";
 #endif
 
 /*
@@ -205,6 +205,9 @@ static struct printer printers[] = {
 #endif
 #ifdef DLT_ENC
        { enc_if_print,         DLT_ENC },
+#endif
+#ifdef DLT_APPLE_IP_OVER_IEEE1394
+       { ap1394_if_print,      DLT_APPLE_IP_OVER_IEEE1394 },
 #endif
        { NULL,                 0 },
 };
@@ -612,7 +615,7 @@ main(int argc, char **argv)
                        /* NOTREACHED */
                }
 
-       if (tflag > 0)
+       if (tflag > 0 || tflag == -3)
                thiszone = gmt2local(0);
 
        if (RFileName != NULL) {
@@ -656,11 +659,8 @@ main(int argc, char **argv)
                                error("%s", ebuf);
                }
 #ifdef WIN32
-               if(IsTextUnicode(device,  
-                       wcslen((short*)device),                // Device always ends with a double \0, so this way to determine its 
-                                                                                                       // length should be always valid
-                       NULL))
-               {
+               if(strlen(device) == 1) //we assume that an ASCII string is always longer than 1 char
+               {                                               //a Unicode string has a \0 as second byte (so strlen() is 1)
                        fprintf(stderr, "%s: listening on %ws\n", program_name, device);
                }
                else
@@ -1059,7 +1059,7 @@ print_packet(u_char *user, const struct pcap_pkthdr *h, const u_char *sp)
        char WDversion[]="current-cvs.tcpdump.org";
        char version[]="current-cvs.tcpdump.org";
        char pcap_version[]="current-cvs.tcpdump.org";
-       char Wpcap_version[]="3.0 alpha";
+       char Wpcap_version[]="3.1";
 #endif
 
 /*
@@ -1094,8 +1094,12 @@ usage(void)
 #endif /* HAVE_PCAP_LIB_VERSION */
 
 #ifdef HAVE_PCAP_LIB_VERSION
+#ifdef WIN32
+       (void)fprintf(stderr, "%s version %s, based on tcpdump version %s\n", program_name, WDversion, version);
+#else /* WIN32 */
        (void)fprintf(stderr, "%s version %s\n", program_name, version);
-       (void)fprintf(stderr, "%s\n", pcap_lib_version());
+#endif /* WIN32 */
+       (void)fprintf(stderr, "%s\n",pcap_lib_version());
 #else /* HAVE_PCAP_LIB_VERSION */
 #ifdef WIN32
        (void)fprintf(stderr, "%s version %s, based on tcpdump version %s\n", program_name, WDversion, version);