Commit graph

161 commits

Author SHA1 Message Date
Guy Harris
3295912210 Try to handle lines with NULs in them. They aren't valid lines, but at
least one fuzzed capture contains them, and using ep_strndup() to copy
the line means that the actual amount of memory allocated for the copy
will be less than the length of the line, and code that parses the line
assuming that there are value_len+1 bytes in the buffer (including the
terminating NUL), such as the current parsing code, will break.

We should really have code in Wireshark to handle counted strings, and
have those be what we extract from packets.  (And we should handle
non-UTF-8/non-UTF-16 encodings, and octet sequences that aren't valid
strings for their encoding, and handle display of invalid strings and
non-printable characters, and....).

Use g_ascii_ versions of various isXXX() and to{upper,lower}(), so we
don't get surprised by the behavior of the user's locale.

svn path=/trunk/; revision=48490
2013-03-22 23:18:30 +00:00
Anders Broman
81e80f2c0b From beroset:
remove C++ incompatibilities 
https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=8416

svn path=/trunk/; revision=48355
2013-03-17 16:48:47 +00:00
Anders Broman
30a9b4855d Detect HTTP/1.1 heuristically.
svn path=/trunk/; revision=48263
2013-03-12 19:15:39 +00:00
Anders Broman
2cc00294c7 Use explicit casts.
svn path=/trunk/; revision=48260
2013-03-12 06:41:00 +00:00
Evan Huus
0f8735b8a3 From Dirk via https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=8287
Request-response tracking and response-time calculation for HTTP.

svn path=/trunk/; revision=47694
2013-02-16 14:59:00 +00:00
Guy Harris
a4714f643a Add a routine to allow dissectors to specify ports that carry HTTP
traffic *without* claiming all that traffic for themselves; they might
want, instead, to register for a particular media type.

Not all traffic to or from port 3689 is DAAP - not even traffic between
two Apple machines doing media stuff (e.g., some FairPlay traffic
isn't).  Register for the media type application/x-dmap-tagged, and just
say port 3689 is HTTP.  This means we can get rid of the FPLY hack, as
that traffic is application/octet-stream.  Update some comments.

Leave it up to the DAAP dissector to tag traffic as DAAP in the protocol
column.

svn path=/trunk/; revision=47376
2013-01-30 21:49:33 +00:00
Guy Harris
8ed7a73e22 Fix a bunch of warnings.
Cast away some implicit 64-bit-to-32-bit conversion errors due to use of
sizeof.

Cast away some implicit 64-bit-to-32-bit conversion errors due to use of
strtol() and strtoul().

Change some data types to avoid those implicit conversion warnings.

When assigning a constant to a float, make sure the constant isn't a
double, by appending "f" to the constant.

Constify a bunch of variables, parameters, and return values to
eliminate warnings due to strings being given const qualifiers.  Cast
away those warnings in some cases where an API we don't control forces
us to do so.

Enable a bunch of additional warnings by default.  Note why at least
some of the other warnings aren't enabled.

randpkt.c and text2pcap.c are used to build programs, so they don't need
to be in EXTRA_DIST.

If the user specifies --enable-warnings-as-errors, add -Werror *even if
the user specified --enable-extra-gcc-flags; assume they know what
they're doing and are willing to have the compile fail due to the extra
GCC warnings being treated as errors.

svn path=/trunk/; revision=46748
2012-12-26 05:57:06 +00:00
Alexis La Goutte
94ae27661e From vanviegen via https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=7934 WebSocket dissector improvements
- Now works for WebSocket packets not aligned with IP packets.
- Support subdissectors.

From me :
- Fix checkAPIs warning (about comments)
- Remove some whitespace

svn path=/trunk/; revision=45875
2012-11-02 20:35:24 +00:00
Jeff Morriss
2552c750e5 We always HAVE_CONFIG_H so don't bother checking whether we have it or not.
svn path=/trunk/; revision=45017
2012-09-20 02:03:38 +00:00
Jakub Zawadzki
9f92dc93c5 Add data parameter to call_dissector_only.
svn path=/trunk/; revision=44872
2012-09-11 08:28:07 +00:00
Jakub Zawadzki
dee4443809 Add data parameter to dissector_try_heuristic
svn path=/trunk/; revision=44871
2012-09-11 08:26:48 +00:00
Sake Blok
66115d1200 Enhance the http dissector to correctly reassemble http
headers when the first tcp segment does not contain a
full line.


svn path=/trunk/; revision=44593
2012-08-19 23:52:37 +00:00
Michael Mann
5dd7371960 more ephemeral memory cleanup
svn path=/trunk/; revision=44496
2012-08-14 17:58:41 +00:00
Guy Harris
659cf0527a UATs could be put into "categories". The categories were defined only
implicitly by the #define name and string they were defined to; not all
UATs neatly fit into any of the categories, so some of them were put
into categories that weren't obviously correct for them, and one - the
display filter macro UAT - wasn't put into any category at all (which
caused crashes when editing them, as the GUI code that handled UAT
changes from a dialog assumed the category field was non-null).

The category was, in practice, used only to decide, in the
aforementioned GUI code, whether the packet summary pane needed to be
updated or not.  It also offered no option of "don't update the packet
summary pane *and* don't redissect anything", which is what would be
appropriate for the display filter macro UAT.

Replace the category with a set of fields indicating what the UAT
affects; we currently offer "dissection", which applies to most UATs
(any UAT in libwireshark presumably affects dissection at a minimum) and
"the set of named fields that exist".  Changing any UAT that affects
dissection requires a redissection; changing any UAT that affects the
set of named fields that exist requires a redissection *and* rebuilding
the packet summary pane.

Perhaps we also need "filtering", so that if you change a display filter
macro, we re-filter, in case the display is currently filtered with a
display filter that uses a macro that changed.

svn path=/trunk/; revision=43603
2012-07-08 01:00:46 +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
4f2c3a8e86 len is no longer used.
svn path=/trunk/; revision=43200
2012-06-11 08:07:48 +00:00
Anders Broman
34cb6f96d3 From Michael Mann:
NUL terminate the decoded string.  
Updated only dissector that uses epan_base64_decode() (packet-http.c) to assume
NULL termination.

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

svn path=/trunk/; revision=43196
2012-06-11 07:09:11 +00:00
Bill Meier
3523b34d65 Add new HTTP Status Codes from RFC 6585;
Also: Add codes 226 & 426 as specified in the IANA HTTP Status Code Registry

svn path=/trunk/; revision=42372
2012-05-01 02:42:51 +00:00
Alexis La Goutte
284405d5eb From me for https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=6843
Make WebSocket HTTP Header (Sec-WebSocket-*) filterable

svn path=/trunk/; revision=42164
2012-04-20 15:32:45 +00:00
Alexis La Goutte
456d6fbb53 From me for https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=6843
Add WebSocket Protocol dissector (RFC6455)
* Support Base Framing Protocol
* Support of major opcode (Text, Binary, Close, Ping, Pong...)
* Support of unmask Payload (Client-to-Server Masking)

TODO 
* Add fragmentation support
* Add WebSocket Extensions

svn path=/trunk/; revision=42163
2012-04-20 15:31:15 +00:00
Anders Broman
84e8250146 From Pascal Quantin:
Ignore Content-Length if Transfer-Encoding is present

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

svn path=/trunk/; revision=42046
2012-04-13 13:10:38 +00:00
Stig Bjørlykke
019008548b Recreate the packet list when changing UAT for header fields.
This fixes a crash when changing settings for fields used as a custom column.

svn path=/trunk/; revision=41840
2012-03-30 08:57:57 +00:00
Jeff Morriss
c13c14429b Fix https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=6982 :
Check the user-provided custom header string for invalid characters before
trying to register it in an hf; registering invalid characters in an hf will
lead to an assertion.

svn path=/trunk/; revision=41787
2012-03-27 01:43:20 +00:00
Stig Bjørlykke
377ea887bb Improved a if-check to avoid a analyzis warning.
svn path=/trunk/; revision=41508
2012-03-12 17:18:54 +00:00
Guy Harris
7e51e80fe0 To quote section "7.2.1 Type" of RFC 2068, "Hypertext Transfer Protocol
-- HTTP/1.1":

   Any HTTP/1.1 message containing an entity-body SHOULD include a
   Content-Type header field defining the media type of that body. If
   and only if the media type is not given by a Content-Type field, the
   recipient MAY attempt to guess the media type via inspection of its
   content and/or the name extension(s) of the URL used to identify the
   resource. If the media type remains unknown, the recipient SHOULD
   treat it as type "application/octet-stream".

To quote section "4. Encoding of Transport Layer" of RFC 2565, "Internet
Printing Protocol/1.0: Encoding and Transport":

   HTTP/1.1 [RFC2068] is the transport layer for this protocol.

	...

   Note: even though port 631 is the IPP default, port 80 remains the
   default for an HTTP URI.  Thus a URI for a printer using port 631
   MUST contain an explicit port, e.g. "http://forest:631/pinetree".  An
   HTTP URI for IPP with no explicit port implicitly reference port 80,
   which is consistent with the rules for HTTP/1.1. Each HTTP operation
   MUST use the POST method where the request-URI is the object target
   of the operation, and where the "Content-Type" of the message-body in
   each request and response MUST be "application/ipp". The message-body
   MUST contain the operation layer and MUST have the syntax described
   in section 3.2 "Syntax of Encoding". A client implementation MUST
   adhere to the rules for a client described for HTTP1.1 [RFC2068]. A
   printer (server) implementation MUST adhere the rules for an origin
   server described for HTTP1.1 [RFC2068].

So, when choosing a subdissector for HTTP request bodies, search based
on the media type first, and only if we *don't* find a dissector for the
media type, do other stuff such as heuristics or choosing a subdissector
based on the port number.

This fixes a number of problems; in particular, it fixes bug 6765
"non-IPP packets to or from port 631 are dissected as IPP" without
requiring the IPP dissector to attempt to determine whether an entity
body looks like IPP.  It also ensures that the default dissector for
HTTP entity bodies, the "media" dissector, will get the media type
passed to it in pinfo->match_string.

Don't use "!str*cmp()" while we're at it - it's valid C, but the "!" can
make it look as if it's checking for something not being the case when,
in fact, you're checking for equality rather than inequality.  (The
str*cmp() routines don't return Boolean results.)

svn path=/trunk/; revision=41025
2012-02-14 06:00:14 +00:00
Chris Maynard
3db18f185e Fix some typos.
svn path=/trunk/; revision=40787
2012-02-01 02:05:19 +00:00
Anders Broman
20881c49bb From Claudio:
linear white space (LWS) not ignored after HTTP header field content.

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

svn path=/trunk/; revision=40753
2012-01-28 17:04:48 +00:00
Bill Meier
dda0d791c9 Use correct reported_length for a tvb_new_subset() (not that it makes a difference in this case).
svn path=/trunk/; revision=40257
2011-12-21 03:44:23 +00:00
Bill Meier
a0731cfeb8 Create "Dehunked Entity Body" with O(N) rather than O(N^2) efffort.
[Actually 1 g_malloc() + N tvb_memcpy() instead of
~ N g_malloc()/g_free() + N*(N+1)/2 tvb_memcpy() where N = number of chunks].

svn path=/trunk/; revision=40242
2011-12-18 18:31:30 +00:00
Bill Meier
c60d239123 From Claudio: header value always computed twice
https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=6592

svn path=/trunk/; revision=39975
2011-11-21 17:58:47 +00:00
Bill Meier
794757ae8f For proto_tree_add_item(..., proto_xxx, ...)use ENC_NA as the encoding arg.
Also: remove trailing whitespace for a number of files.

svn path=/trunk/; revision=39503
2011-10-21 02:10:19 +00:00
Bill Meier
126aa85393 Convert proto_tree_add_item() 'encoding' arg for field types FT_STRING, FT_STRINGZ, FT_UINT_STRING as follows:
1. If there's no character encoding (ENC_ASCII, ...) specified
    then use ENC_ASCII.
 2. For all but FT_UINT_STRING, always use ENC_NA
    (replacing any existing True/1/FALSE/0
    /ENC_BIG_ENDIAN/ENC_LITTLE_ENDIAN).



svn path=/trunk/; revision=39426
2011-10-15 18:46:26 +00:00
Stig Bjørlykke
7714898212 Cleanup the unregister loop to avoid freeing wrong data.
svn path=/trunk/; revision=39268
2011-10-05 11:44:29 +00:00
Stig Bjørlykke
19e87afd9d Free duplicated strings in hf entries.
svn path=/trunk/; revision=39258
2011-10-04 21:06:20 +00:00
Stig Bjørlykke
8c8cd4024c Unregister and delete allocated header fields when updating the UAT.
Avoid double loading the UAT.
Use the post update callback in uat_new for regenerating header_fields_hash.

svn path=/trunk/; revision=39251
2011-10-04 18:40:56 +00:00
Anders Broman
0d89708ab2 Add notes and links on SSDP
svn path=/trunk/; revision=38913
2011-09-07 09:02:09 +00:00
Gerald Combs
49b92440de More GLIB_CHECK_VERSION cleanups. Update the minimum GLib/GTK+ versions
in README.devloper. Remove g_gnuc.h since it's no longer needed. Remove
tvbuff_init(), tvbuff_cleanup(), reassemble_init(), and
reassemble_cleanup() since they were only used for older GLib versions
which didn't support GSlices. Assume we always support the "matches"
operator.

svn path=/trunk/; revision=37978
2011-07-11 20:32:19 +00:00
Guy Harris
a3ae744636 Add port 2710 for the XBT BitTorrent tracker (and note why it's added;
the other unusual ports should be mentioned as well).

svn path=/trunk/; revision=37952
2011-07-10 18:34:15 +00:00
Jeff Morriss
7ad71a2d78 Treat TVBs as opaque: use the accessor functions instead of accessing the fields
directly.

svn path=/trunk/; revision=37420
2011-05-27 01:57:33 +00:00
Stig Bjørlykke
c92938bbc0 Support content-type x-gzip and x-deflate, as described in RFC2616 as
equivalent to gzip and deflate.

This fixes bug 5882.

svn path=/trunk/; revision=36963
2011-05-02 14:06:33 +00:00
Alexis La Goutte
8b61d83f5e Fix Dead Store (Dead assignement/Dead increment) Warning found by Clang
svn path=/trunk/; revision=36700
2011-04-18 17:38:08 +00:00
Jeff Morriss
dd9f86c38d The 'name's passed to tick_stat_node() do not need to be static.
svn path=/trunk/; revision=36341
2011-03-26 01:21:43 +00:00
Jeff Morriss
bb61772be7 From Dirk: fix https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=2930 :
Make the image (png, gif, jfif) dissectors "new style" so that they don't
dissect data that does not belong to them.

Modify the HTTP dissector to call heuristic dissectors on the body if the
registered subdissector does not accept/dissect the data.

From me: don't use assert() and don't add a preference to the HTTP dissector
for this behavior: it makes sense to behave like that by default.

svn path=/trunk/; revision=36305
2011-03-24 02:49:05 +00:00
Gerald Combs
1b4d847a90 Add 2869 to the list of HTTP ports: http://support.microsoft.com/kb/886257
svn path=/trunk/; revision=35461
2011-01-10 20:23:21 +00:00
Jaap Keuter
302d4c14df From Julien Kerihuel:
I've just finished to write a ncacn_http dissector for Wireshark which
provides the ability to dissect Outlook anywhere packets properly (as
specified by [MS-RPCH].pdf documentation.

svn path=/trunk/; revision=35259
2010-12-23 23:50:14 +00:00
Guy Harris
a8bc4a0d13 Rename the routines that handle dissector tables with unsigned integer
keys to have _uint in their names, to match the routines that handle
dissector tables with string keys.  (Using _port can confuse people into
thinking they're intended solely for use with TCP/UDP/etc. ports when,
in fact, they work better for things such as Ethernet types, where the
binding of particular values to particular protocols are a lot
stronger.)

svn path=/trunk/; revision=35224
2010-12-20 05:35:29 +00:00
Anders Broman
738813862b From Robert Bullen:
Improve the HTTP dissection of the Response Status Line.
https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=5338

svn path=/trunk/; revision=34712
2010-10-30 14:29:20 +00:00
Guy Harris
17d4d51b7d Make the third argument to a UAT copy callback a size_t (not that any of
the callbacks we have use that argument - is it really needed?).

svn path=/trunk/; revision=34694
2010-10-29 21:11:33 +00:00
Jaap Keuter
3db66ff53e Try to decode the unknown multipart subtype anyway.
svn path=/trunk/; revision=34658
2010-10-27 06:49:18 +00:00
Jeff Morriss
36390c306f From Yaniv Kaul via https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=5336 :
Attached patch:
1. Adds port 5985 as a HTTP traffic port (used by MS Powershell remoting over
HTTP)
2. Adds dissection of Kerberos authentication to HTTP.


svn path=/trunk/; revision=34641
2010-10-25 02:17:41 +00:00