Commit Graph

51 Commits

Author SHA1 Message Date
Anders Broman 05a8c94ddf From beroset:
implemented wtap_dump_file_seek() and _tell()

implemented the previously declared but unimplemented wtap_dump_file_seek() and wtap_dump_file_tell() functions and used them in the seven files that had previously used a plain ftell or fseek and added error checking as appropriate.  I also added a new error WTAP_ERR_CANT_SEEK_COMPRESSED and put it next to WTAP_ERR_CANT_SEEK causing renumbering of two of the existing error codes.

https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=8416

svn path=/trunk/; revision=48348
2013-03-17 09:20:13 +00:00
Guy Harris 88e9d1c1e5 Do not call wtap_file_read_unknown_bytes() or
wtap_file_read_expected_bytes() from an open routine - open routines are
supposed to return -1 on error, 0 if the file doesn't appear to be a
file of the specified type, or 1 if the file does appear to be a file of
the specified type, but those macros will cause the caller to return
FALSE on errors (so that, even if there's an I/O error, it reports "the
file isn't a file of the specified type" rather than "we got an error
trying to read the file").

When doing reads in an open routine before we've concluded that the file
is probably of the right type, return 0, rather than -1, if we get
WTAP_ERR_SHORT_READ - if we don't have enough data to check whether a
file is of a given type, we should keep trying other types, not give up.
For reads done *after* we've concluded the file is probably of the right
type, if a read doesn't return the number of bytes we asked for, but
returns an error of 0, return WTAP_ERR_SHORT_READ - the file is
apparently cut short.

For NetMon and NetXRay/Windows Sniffer files, use a #define for the
magic number size, and use that for both magic numbers.

svn path=/trunk/; revision=46803
2012-12-27 12:19:25 +00:00
Guy Harris 5996b49c53 Squelch implicit 64-bit-to-32-bit conversion warnings.
svn path=/trunk/; revision=46650
2012-12-21 03:32:16 +00:00
Guy Harris 0c0cec7e69 Have separate seek-read routines for V1.0 and V2.0.
Set the subtype_read and subtype_seek_read routines for the file type,
rather than having a common read routine that checks the file type each
time.

Make the macros used in the read and seek-read routines more similar,
and use them more similarly in both.

svn path=/trunk/; revision=45706
2012-10-22 11:38:57 +00:00
Guy Harris 5071e32079 Pull the length-and-caplen setting operations in the read routines into
the macros.

Note why we don't pull the time setting operations into the macros (it's
because that would mean the macros can't be used in the seek-read
routines, as calculating time stamps requires accumulating the time
stamps in a sequential pass through the packets, given that the records
have time stamps relative to the previous packet).

Fix what is probably a typo in the definitions of some macros (which
happen to work without the fix because "fp" and "pp" are both local
variable names as well as macro arguments).

svn path=/trunk/; revision=45705
2012-10-22 10:06:13 +00:00
Guy Harris 3f032cdd12 Pass a pointer to a struct wtap_pkthdr to a bunch of macros; this allows
us to avoid one redefinition of those macros that, in the one
definition, for the read routines, refer to the pseudo-header as
wth->phdr.pseudo_header and, in the next definition, for the seek-read
routine, refer to it as *pseudo_header - instead, we pass &wth->phdr in
the read routine and phdr in the seek-read routine.

svn path=/trunk/; revision=45704
2012-10-22 08:09:05 +00:00
Guy Harris a0227ab739 More white-space cleanups.
svn path=/trunk/; revision=45702
2012-10-21 22:47:32 +00:00
Guy Harris 720271dd08 Use phdr->pseudo_header in the seek-read routine, rather than putting
its address into a pseudo_header pointer and using that.

svn path=/trunk/; revision=45701
2012-10-21 22:45:27 +00:00
Guy Harris 7c8f5f852b Tabs -> spaces, and other whitespace cleanups.
svn path=/trunk/; revision=45700
2012-10-21 22:30:01 +00:00
Jakub Zawadzki 78631020b8 Add wtap_pseudo_header union to wtap_pkthdr structure.
Use pkthdr instead of pseudo_header as argument for dissecting.

svn path=/trunk/; revision=45601
2012-10-16 21:50:57 +00:00
Jeff Morriss 3551a86c36 We always HAVE_CONFIG_H so don't bother checking whether we have it or not.
svn path=/trunk/; revision=45015
2012-09-20 01:29:52 +00:00
Anders Broman 19f6a77cee From Nikhil Kalu:
Enhancement to add more trace record fields in Citrix NetScaler capture file format.

https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=7713

svn path=/trunk/; revision=44895
2012-09-14 11:11:37 +00:00
Jakub Zawadzki bf81b42e1e Update Free Software Foundation address.
(COPYING will be updated in next commit)

svn path=/trunk/; revision=43536
2012-06-28 22:56:06 +00:00
Anders Broman 2bc42dc547 Try to squelch warnings
svn path=/trunk/; revision=42998
2012-06-02 14:13:14 +00:00
Chris Maynard b2f2e1a675 In ns_hrtime2nsec(), cast "val" to guint64 to fix Coverity CID 702389 Unintentional integer overflow.
svn path=/trunk/; revision=42846
2012-05-25 02:04:29 +00:00
Guy Harris 33bb54a945 file_seek() used to be a wrapper around fseek() or gzseek(), both of
which could use lseek() and were thus expensive due to system call
overhead.  To avoid making a system call for every packet on a
sequential read, we maintained a data_offset field in the wtap structure
for sequential reads.

It's now a routine that just returns information from the FILE_T data
structure, so it's cheap.  Use it, rather than maintaining the data_offset
field.

Readers for some file formats need to maintain file offset themselves;
have them do so in their private data structures.

svn path=/trunk/; revision=42423
2012-05-04 16:56:18 +00:00
Guy Harris ba78859f64 Fix comments.
svn path=/trunk/; revision=42413
2012-05-04 05:43:48 +00:00
Guy Harris 739f7c2f1d Get rid of declaration of non-existent routine.
svn path=/trunk/; revision=42412
2012-05-04 05:42:42 +00:00
Guy Harris 9467af6931 Make everything static that doesn't need to be exported.
svn path=/trunk/; revision=42409
2012-05-04 02:35:12 +00:00
Guy Harris daa7f8851e Fix indentation.
svn path=/trunk/; revision=42408
2012-05-04 02:16:51 +00:00
Jakub Zawadzki 8a1dc57c03 Remove doubled semicolons and semicolons outside function.
svn path=/trunk/; revision=42053
2012-04-13 20:22:31 +00:00
Jakub Zawadzki ac5c40e6c5 Mark some function static.
svn path=/trunk/; revision=41999
2012-04-09 19:43:19 +00:00
Anders Broman efa9387886 From Krishna:
Enhancement to add more trace record fields in Citrix NetScaler capture file format.

https://bugs.wireshark.org/bugzilla/show_bug.cgi?

svn path=/trunk/; revision=41740
2012-03-22 15:36:37 +00:00
Guy Harris b6ff142f60 Add a presence flag field to the packet information structure filled in
by Wiretap, to indicate whether certain fields in that structure
actually have data in them.

Use the "time stamp present" flag to omit showing time stamp information
for packets (and "packets") that don't have time stamps; don't bother
working very hard to "fake" a time stamp for data files.

Use the "interface ID present" flag to omit the interface ID for packets
that don't have an interface ID.

We don't use the "captured length, separate from packet length, present"
flag to omit the captured length; that flag might be present but equal
to the packet length, and if you want to know if a packet was cut short
by a snapshot length, comparing the values would be the way to do that.

More work is needed to have wiretap/pcapng.c properly report the flags,
e.g. reporting no time stamp being present for a Simple Packet Block.

svn path=/trunk/; revision=41185
2012-02-25 23:24:34 +00:00
Jeff Morriss f7e1f76659 From njtaylor0101 [AT] gmail.com via https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=6740 :
Fix an out-of-array-bounds warning from OpenBSD's compiler.  (Note: this is
actually a false positive since adequate memory is allocated.)

From me: some additional code simplification.

svn path=/trunk/; revision=40680
2012-01-24 02:20:46 +00:00
Guy Harris e9fc1b72aa Use guint8 rather than guchar for raw octets and pointers to arrays of
same.

Add to wiretap/pcap-common.c a routine to fill in the pseudo-header for
ATM (by looking at the VPI, VCI, and packet data, and guessing) and
Ethernet (setting the FCS length appropriately).  Use it for both pcap
and pcap-ng files.

svn path=/trunk/; revision=38840
2011-09-01 09:43:10 +00:00
Guy Harris a8c363bd54 Try to squelch some compiler warnings.
svn path=/trunk/; revision=37673
2011-06-15 19:48:27 +00:00
Guy Harris c317a1c3cd Make all the fields in the various structures just arrays of bytes, so
we can cast not-necessarily-aligned pointers to pointers to those
structures without risk of compiler warnings *or* the underlying problem
the compiler's trying to warn us about (no, you can't always dereference
an unaligned pointer - SPARC traps, and at least some ARM processors may
do something other than what you want, for example).

This also caught some cases where we were not even properly
byte-swapping on big-endian platforms.

This also lets us not muck around with splitting 64-bit times into two
32-bit fields - we have pletohll(), after all.

svn path=/trunk/; revision=36787
2011-04-22 03:10:22 +00:00
Guy Harris 6cbf6ce16c Add a new WTAP_ERR_DECOMPRESS error, and use that for errors discovered
by the gunzipping code.  Have it also supply a err_info string, and
report it.  Have file_error() supply an err_info string.

Put "the file" - or, for WTAP_ERR_DECOMPRESS, "the compressed file", to
suggest a decompression error - into the rawshark and tshark errors,
along the lines of what other programs print.

Fix a case in the Netscaler code where we weren't fetching the error
code on a read failure.

svn path=/trunk/; revision=36748
2011-04-21 09:41:52 +00:00
Guy Harris 2b8ebd389b "This file format can't be written to a pipe" and "this file format
can't be saved in compress form" are both equivalent to "this file file
format requires seeking when writing it".  Change the "can compress"
Boolean in the file format table to "writing requires seeking", give all
the entries the proper value, and do the checks for attempting to write
a file format to a pipe or write it in compressed format to common code.

This means we don't need to pass the "can't seek" flag to the dump open
routines.

svn path=/trunk/; revision=36575
2011-04-12 00:44:44 +00:00
Guy Harris 4c93827e34 From Jakub Zawadzki:
file_read(buf, bsize, count, file) macro is compilant with fread
function and takes elements count+ size of each element, however to make
it compilant with gzread() it always returns number of bytes.

In wiretap file_read() this is not really used, file_read is called
either with bsize set to 1 or count to 1.

Attached patch remove bsize argument from macro.

svn path=/trunk/; revision=36491
2011-04-06 06:51:19 +00:00
Gerald Combs b2d28ce435 Fix checkapi.
svn path=/trunk/; revision=35955
2011-02-16 01:28:29 +00:00
Gerald Combs 8af7080001 Fix errors found by the Visual C++ analyzer.
svn path=/trunk/; revision=35954
2011-02-16 00:44:12 +00:00
Jaap Keuter d6c7ebee86 From Alexis La Goutte:
Replace all *_min()/*_max() by MIN() and MAX().

svn path=/trunk/; revision=34770
2010-11-04 06:37:58 +00:00
Guy Harris 194cfe2d2f Don't use fwrite directly when writing a dump file; call it through
wtap_dump_file_write().  Replace various wrappers around fwrite() with
wtap_dump_file_write(), or at least make the wrappers call
wtap_dump_file_write().

svn path=/trunk/; revision=33116
2010-06-06 22:19:30 +00:00
Stig Bjørlykke 7b1e97b64e Make it build without zlib on OSX.
svn path=/trunk/; revision=32472
2010-04-15 13:59:15 +00:00
Guy Harris 17392a865a Move the definitions of all the private data structures out of
wtap-int.h, and change the unions of pointers to those private data
structures into just void *'s.

Have the generic wtap close routine free up the private data, rather
than the type-specific close routine, just as the wtap_dumper close
routine does for its private data.  Get rid of close routines that don't
do anything any more.

svn path=/trunk/; revision=32015
2010-02-26 07:59:54 +00:00
Bill Meier cc43ff3835 From: Ravi Kondamuru:
"... a patch to make the netscaler wiretap code independent of the
 host system endian-ness. 
 I have taken care of (1) reading and writing nstrace files (netscaler.c) and
 (2) reading in dissector code (packet-nstrace.c) also."

See: https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=3540#c26

svn path=/trunk/; revision=31171
2009-12-04 15:21:48 +00:00
Stig Bjørlykke e6a57f0107 Switch HighHdr and LowHdr to build correct absolute time.
svn path=/trunk/; revision=31005
2009-11-18 16:29:13 +00:00
Stig Bjørlykke 0eba377436 Another try to treat the two 32bit time values (low, high) in v23 format
as a 64bit value.

svn path=/trunk/; revision=31002
2009-11-18 07:48:03 +00:00
Guy Harris d393e03e07 If no error is returned by a Wiretap routine, err_info is presumed not
to have been set.  Do not set it to something g_mallocated in that case,
as that will cause a memory leak - the error string will not be freed by
the caller, as it's presumed not to have been set.

svn path=/trunk/; revision=31001
2009-11-18 06:36:13 +00:00
Stig Bjørlykke 99b8600eca From Ravi Kondamuru via bug 3540:
Treat the two 32bit time values (low, high) in v23 format as a 64bit value.

svn path=/trunk/; revision=30994
2009-11-17 18:23:40 +00:00
Stig Bjørlykke d9b405deb9 Optimized check if file is a nstrace file.
svn path=/trunk/; revision=28614
2009-06-02 20:59:48 +00:00
Stig Bjørlykke e12f08aa8b Corrected nspm_signature_version() again.
svn path=/trunk/; revision=28588
2009-06-02 09:23:48 +00:00
Stig Bjørlykke a9c95008c7 Avoid infinite loop in nspm_signature_version().
svn path=/trunk/; revision=28585
2009-06-02 08:47:45 +00:00
Stig Bjørlykke 496e7909ba Try Jakub's casting with GPOINTER_TO_INT().
svn path=/trunk/; revision=28579
2009-06-01 21:47:45 +00:00
Stig Bjørlykke 29839540cf Adding casts, take 3.
svn path=/trunk/; revision=28578
2009-06-01 21:26:50 +00:00
Stig Bjørlykke c5bba6e8d8 Adding casts, take 2.
svn path=/trunk/; revision=28576
2009-06-01 19:55:57 +00:00
Stig Bjørlykke c1ef7b0135 Added/Changed some more casts to build.
svn path=/trunk/; revision=28575
2009-06-01 19:46:40 +00:00
Stig Bjørlykke ffd02e49f5 Added some casts to remove some warnings.
svn path=/trunk/; revision=28573
2009-06-01 18:50:16 +00:00