Commit graph

1563 commits

Author SHA1 Message Date
Guy Harris
f7390f0ea9 *Properly* get rid of bogus cast.
svn path=/trunk/; revision=36791
2011-04-22 03:27:40 +00:00
Guy Harris
7c378ed025 Cast away alignment warnings about pointers where we never actually
directly dereference pointers to the field members.

Get rid of an unnecessary cast that provokes warnings.

svn path=/trunk/; revision=36789
2011-04-22 03:12:18 +00:00
Guy Harris
8260657dfd Cast away warnings about "struct sockaddr" -> "struct sockaddr_XXX"
casts that are actually safe.

svn path=/trunk/; revision=36788
2011-04-22 03:11:14 +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
3edd2b5b0d In a dump_open routine, you don't need to seek to the beginning of the
file before doing any writes - it starts out at the beginning of the
file.  This means that you *can* write a Network Instruments capture
file to a pipe, or write it out in compressed form, now that its
dump_open routine no longer seeks.

NetXRay format and K12 binary format, however, *do* require a seek when
writing them.

svn path=/trunk/; revision=36776
2011-04-21 18:33:20 +00:00
Guy Harris
140cc563c6 In file_wrappers.c, explicitly set err_info to null for all errors that
don't have an "additional information" string.

Get rid of WTAP_ERR_ZLIB; just report an internal error with
WTAP_ERR_INTERNAL instead.  (If they start happening, we can think about
supplying an "additional information" string for compression errors on
output.)

svn path=/trunk/; revision=36774
2011-04-21 17:51:19 +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
ff783ad1d5 Always check whether NEXT() failed - and rename it to GZ_GETC(), as it
has semantics similar to getc().

If it fails due to an EOF, set state->err to WTAP_ERR_SHORT_READ to
report a premature EOF; otherwise, raw_read() has already set
state->err, so don't set state->err to something else - that loses the
errno value in favor of a generic "bad data" error.

svn path=/trunk/; revision=36744
2011-04-20 21:36:23 +00:00
Guy Harris
c93f8694e3 Sigh. The "data" element of a GArray is, alas, a "gchar *", not a "void
*", and some compilers complain when you cast that pointer to something
requiring stricter alignment.  Maybe the intent is to nudge you into
thinking about whether the pointer really is properly aligned, but....

svn path=/trunk/; revision=36739
2011-04-20 18:04:43 +00:00
Guy Harris
0aeaa16426 pntohll() takes a guint8 * as an argument; there's no need to cast to a
guint64 *, and it causes clang to complain.

svn path=/trunk/; revision=36738
2011-04-20 17:53:11 +00:00
Michael Tüxen
034373cb86 Unbreak live capture using pcapng.
svn path=/trunk/; revision=36714
2011-04-19 13:28:17 +00:00
Chris Maynard
7f06b2e217 Wrap actual_len inside #ifdef DEBUG_K12 to avoid gcc 4.6.0 warning reported by
Kaul: http://www.wireshark.org/lists/wireshark-dev/201104/msg00170.html

svn path=/trunk/; revision=36710
2011-04-18 20:03:32 +00:00
Chris Maynard
e4c6b7d0c3 Update Motonori Shindo's email address at the author's request. Fixes bug 5840.
svn path=/trunk/; revision=36695
2011-04-18 02:16:36 +00:00
Stig Bjørlykke
bf28f7247c Mark err as unused in k12text_dump_open().
svn path=/trunk/; revision=36682
2011-04-17 17:49:02 +00:00
Guy Harris
cd1a4b036c Return ENOMEM if we run out of memory. (We're either running on UN*X,
in which case ENOMEM is the right error, or we're running on Windows but
using UN*Xy routines, in which case ENOMEM is the right error; unlike
zlib, we don't have to run on a whole pile of OSes.)

svn path=/trunk/; revision=36648
2011-04-15 07:27:03 +00:00
Tomas Kukosa
5653540de6 Export new file_...() functions from libwiretap.dll
svn path=/trunk/; revision=36640
2011-04-14 09:02:01 +00:00
Guy Harris
7fa71ab07e Check for _setmode() failing, Just In Case. Squelches some MSVC static
analyzer warnings.

Return an actual error if we're failing because we're trying to write to
the standard output in compressed mode.

svn path=/trunk/; revision=36636
2011-04-14 02:53:18 +00:00
Guy Harris
e5f767cb50 #if 0 out some unused variables; we may make use of them later, but this
keeps GCC 4.6.0 from complaining about them and failing to build with
-Werror, and may also squelch some Coverity (and other static analyzer)
complaints.

svn path=/trunk/; revision=36599
2011-04-12 18:21:05 +00:00
Guy Harris
92c974f2f7 Now that wtap_read() checks for delayed errors on EOF, there's no need
to check for it on close.

svn path=/trunk/; revision=36593
2011-04-12 17:37:05 +00:00
Guy Harris
fd96236cdf From Jakub Zawadski: some small fixes.
From me: small indentation fix (use spaces rather than tabs in all lines
in that routine).

svn path=/trunk/; revision=36591
2011-04-12 16:31:16 +00:00
Guy Harris
91e1769ac5 Update and expand some comments.
In the end-of-stream code, when we're checking the CRC and length, don't
check the CRC or length if we failed to read them, and don't check the
length if the CRC is bad.

We define O_BINARY as 0 on UN*X in <wsutil/file_util.h>, so we don't
need to avoid using it on UN*X.

In file_gets(), check for delayed errors.

svn path=/trunk/; revision=36590
2011-04-12 16:21:14 +00:00
Martin Mathieson
b76b05b75b A parameter isn't used if ZLIB isn't enabled.
svn path=/trunk/; revision=36584
2011-04-12 14:33:31 +00:00
Guy Harris
bbcb51276a If we hit an EOF - wth->subtype_read returns FALSE, but sets *err to 0 -
call file_error() to fetch any deferred error, so we report an error
rather than an "everything's OK" EOF.

svn path=/trunk/; revision=36578
2011-04-12 03:27:10 +00:00
Guy Harris
b28ee8b331 From Jakub Zawadzki: speed up random access to gzipped files, as per the
zran.c example in the zlib source.

This means that problems in the file's contents might not be reported
when a packet is read, as long as there's no problem in the contents of
the file up to the last bit of compressed data for the packet; we now
check for errors after finishing the sequential read of the file, at
least in some programs, so that shouldn't be an issue (the other
programs need to be changed to do so as well).  This is necessary in
order to be able to read all the packets we saw in the sequential pass;
it also lets us get a few more packets from truncated files in some
cases.

svn path=/trunk/; revision=36577
2011-04-12 02:40:14 +00:00
Guy Harris
e5fe0128d7 Allow wtap_sequential_close() and wtap_close() to return an error; this
may happen if, when reading a compressed file, we find an error in the
file's contents past the last packet (e.g., the file being cut short so
that we can't get a full buffer worth of compressed data), and that
reporting of that error is delayed (so that you can get all of the
packets that we *can* decompress).  Check for those errors, at least on
the sequential read pass (the only errors we should see when closing the
random stream are errors we've already seen in the sequential stream).

svn path=/trunk/; revision=36576
2011-04-12 01:36:12 +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
f5f74bed3d Use ws_open(), not open(), so we handle UTF-8 pathnames on Windows.
Update or remove some additional "we don't have ferror() in zlib"
comments to reflect the current reality.

svn path=/trunk/; revision=36568
2011-04-11 22:19:01 +00:00
Guy Harris
35c66a1745 Remove a no-longer-valid comment (we're not using zlib's I/O routines,
and the routines we're now using guarantee that an error has occured in
that case).

svn path=/trunk/; revision=36567
2011-04-11 22:11:44 +00:00
Guy Harris
b184c69559 Don't use the zlib I/O routines for writing compressed files, either;
this frees us from worrying about zlib large file issues on the write
side, and also lets us clean up a few other things.

svn path=/trunk/; revision=36563
2011-04-11 21:33:22 +00:00
Guy Harris
a6fc7f14c4 To fill in a ws_statb64, you must use ws_fstat64.
Declare ws_stdio_stat64, as that's its new name.

svn path=/trunk/; revision=36549
2011-04-10 22:04:14 +00:00
Guy Harris
4fdcc5c180 Rename ws_stat to ws_stat64, and make it take a pointer to a ws_statb64
as an argument, along the lines of ws_fstat64, and, on Windows, make it
use _wstati64, to handle 64-bit file sizes.

svn path=/trunk/; revision=36547
2011-04-10 20:59:10 +00:00
Guy Harris
0629b7399a Define ws_statb64 to be the appropriate "struct XXX" for a
64-bit-file-size-capable stat call, and use it for ws_fstat64().

svn path=/trunk/; revision=36545
2011-04-10 19:56:06 +00:00
Guy Harris
71d4caa5b9 Add ws_fstat64(), defined to be fstat on UN*X and _fstati64 on Windows.
Use it in some places where we're getting the file size.

svn path=/trunk/; revision=36544
2011-04-10 18:55:06 +00:00
Guy Harris
c349caf925 Use AC_SYS_LARGEFILE to turn on large file support on platforms that
support it.

Rename ws_lseek to ws_lseek64, as it should be given a 64-bit offset,
and have it use _lseeki64 on Windows, to try to get 64-bit offset
support; AC_SYS_LARGEFILE should cause lseek() to support 64-bit offsets
on UN*X if possible.

svn path=/trunk/; revision=36542
2011-04-10 18:22:47 +00:00
Guy Harris
f3502974a0 Point to RFC 1952 as a description of the gzip file format.
Point to pages for some other compressed file formats we might want to
support.

svn path=/trunk/; revision=36539
2011-04-10 17:01:13 +00:00
Guy Harris
f27f61ac9e Move the definition of the structure pointed to by a FILE_T into
wiretap/file_wrappers.c; nothing outside of file_wrappers.c needs to
know what it looks like, it just passes around pointers to it.

svn path=/trunk/; revision=36538
2011-04-10 16:53:32 +00:00
Guy Harris
de938dddce Just make the fh member of a wtap_dumper_t a void * for now, and, in all
calls that use it, cast it to whatever it's supposed to be.  Making it a
gzFile means you can't use any stdio macros that reach inside the
structure; making it a FILE *, as it used to be, amounts to trying to
use a FILE * as a void * if we're writing a compressed file out.

svn path=/trunk/; revision=36521
2011-04-08 17:42:20 +00:00
Anders Broman
19642f9dc0 Make wtap plugins build on windows again.
svn path=/trunk/; revision=36517
2011-04-08 15:57:44 +00:00
Guy Harris
44462adc0f Change ng_file_read() to take only one size argument - and make it an
unsigned int - to match file_read().  Shrink some arguments, variables,
and structure members appropriately.

Fix an incorrect sizeof - sizeof a pointer is the size of the pointer,
not the size of what it points to.

svn path=/trunk/; revision=36515
2011-04-08 01:57:02 +00:00
Guy Harris
f3873931ec To squelch some compiler warnings, temporarily cast the argument to
ws_lseek() to the appropriate type for the second argument to _lseek()
for Windows or lseek() for UN*X; ultimately, we want to call the
appropriate 64-bit-offset seek routine if available, otherwise cast the
value down and hand it to the 32-bit-offset seek routine.

svn path=/trunk/; revision=36514
2011-04-08 01:55:25 +00:00
Guy Harris
ab261a3281 From Jakub Zawadzki:
Steal file_wrappers functions from zlib v2.

svn path=/trunk/; revision=36513
2011-04-08 00:28:37 +00:00
Gerald Combs
56bc7f5e47 Be more picky about our sscanf integer field widths. Hopefully this will
help squelch Coverity CIDs 701-709.

svn path=/trunk/; revision=36511
2011-04-07 23:16:05 +00:00
Guy Harris
d00527f369 From Jakub Zawadzki:
Introduce file_clearerr

	I'm unsure of this patch, 

	gzclearerr() is used to clear the end-of-file mark, but for FILE
	there's function which do the same (clearerr).

	I created test program if clearerr() is needed for tailing file. 
	and it seems to work without it (at least on Linux, so for
	!HAVE_LIBZ I commented it out).

	For now this patch introduce file_clearerr macro, and define it
	only when EOF marking must be cleared (i.e.  when HAVE_LIBZ and
	HAVE_GZCLEARERR are defined).

	So everything works like before, patch just to keep same prefix
	for file interface :)

svn path=/trunk/; revision=36510
2011-04-07 21:53:31 +00:00
Guy Harris
f73c579d55 From Jakub Zawadzki:
file-wrappers.[ch] is used only for reading files, and mode is always
"rb".

Attached patch removes 'mode' argument from file_open() & filed_open().

svn path=/trunk/; revision=36493
2011-04-06 07:09:56 +00:00
Guy Harris
7fa6d929cf From Jakub Zawadzki: fix the type of an argument.
svn path=/trunk/; revision=36492
2011-04-06 06:59:19 +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
Chris Maynard
9e49109b28 Check return value of file_seek(). Fixes CID 338.
svn path=/trunk/; revision=36425
2011-03-31 18:28:52 +00:00
Chris Maynard
b92bf3b06c Use BSWAP16 instead of BSWAP32 for 16-bit values. Fixes CID's 1179 and 1180.
svn path=/trunk/; revision=36422
2011-03-31 16:46:16 +00:00
Jeff Morriss
607d944d02 Don't put a 196808 byte variable on the stack: instead, malloc/free it.
Coverity 789-790.

Since we've been keeping track of how many bytes we put in the buffer,
use that value instead of calling strlen() find it again.

Also, some white space/indentation cleanup.

svn path=/trunk/; revision=36397
2011-03-29 14:29:45 +00:00
Jeff Morriss
ce392b5764 Don't put a 65536 byte variable on the stack: instead, malloc/free it.
Coverity 791-794.

Also, some white space/indentation cleanup.

svn path=/trunk/; revision=36394
2011-03-29 14:05:28 +00:00