Commit graph

245 commits

Author SHA1 Message Date
Michael Mann
6de6f7f0f8 Further refactor SRT stats.
Create "common" SRT tap data collection intended for all GUIs.   Refactor/merge functionality of existing dissectors that have SRT support (AFP, DCERPC, Diameter, FC, GTP, LDAP, NCP, RPC, SCIS, SMB, and SMB2) for both TShark and GTK.

SMB and DCERPC "tap packet filtering" were different between TShark and GTK, so I went with GTK filter logic.
CAMEL "tap packet filtering" was different between TShark and GTK, so GTK filtering logic was pushed to the dissector and the TShark tap was left alone.

Change-Id: I7d6eaad0673fe628ef337f9165d7ed94f4a5e1cc
Reviewed-on: https://code.wireshark.org/review/8894
Petri-Dish: Michael Mann <mmann78@netscape.net>
Reviewed-by: Gerald Combs <gerald@wireshark.org>
Reviewed-by: Michael Mann <mmann78@netscape.net>
2015-06-21 03:35:13 +00:00
Alexis La Goutte
31f5e79d20 DCERPC: There are identical sub-expressions 'tvb_reported_length(tvb)' to the left and to the right of the '==' operator found by PVS Studio (V501)
Change-Id: I6cd745d07c89a5fa08ef976bab406f96cdae2881
Reviewed-on: https://code.wireshark.org/review/8789
Reviewed-by: Pascal Quantin <pascal.quantin@gmail.com>
2015-06-06 14:05:45 +00:00
Michael Mann
4d74d0dccd Eliminate proto_tree_add_text from packet-dcerpc-ndr.c and packet-dcerpc-netlogon.c
Change-Id: I65eff9c8087424087a307f18b96a202f0364e371
Reviewed-on: https://code.wireshark.org/review/8714
Reviewed-by: Alexis La Goutte <alexis.lagoutte@gmail.com>
2015-05-31 21:08:59 +00:00
Michael Mann
aeb9827e4a Convert proto_tree_add_boolean to proto_tree_add_bitmask_[value|value_with_flags|list]
Part 1 of a few

Change-Id: I413f23dfa92da5488ca8a7f62ca0738b25004635
Reviewed-on: https://code.wireshark.org/review/8117
Reviewed-by: Michael Mann <mmann78@netscape.net>
2015-04-18 16:32:27 +00:00
Guy Harris
499d95964d Eliminate e_uuid_t in favor of e_guid_t.
That eliminates a redundant and confusing data type, and avoids issues
with one piece of code using e_uuid_t but wanting to use routines
expecting an e_guid_t.

Change-Id: I95e172d46d342ab40f6254300ecbd2a0530cde60
Reviewed-on: https://code.wireshark.org/review/7506
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2015-03-03 10:55:29 +00:00
Hadriel Kaplan
ceb8d954d2 Lua: Expose tcp_dissect_pdus() to Lua
Provide a way for Lua-based dissectors to invoke tcp_dissect_pdus()
to make TCP-based dissection easier.

Bug: 9851
Change-Id: I91630ebf1f1fc1964118b6750cc34238e18a8ad3
Reviewed-on: https://code.wireshark.org/review/6778
Reviewed-by: Alexis La Goutte <alexis.lagoutte@gmail.com>
Reviewed-by: Hadriel Kaplan <hadrielk@yahoo.com>
Tested-by: Hadriel Kaplan <hadrielk@yahoo.com>
2015-01-27 15:14:12 +00:00
Stefan Metzmacher
97d0f36f17 packet-smb2: correctly dissect dcerpc traffic over different named pipe handles
Change-Id: Id98d1c7e28d88f6cd50f5ef770eec95e57008458
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-on: https://code.wireshark.org/review/6709
Petri-Dish: Alexis La Goutte <alexis.lagoutte@gmail.com>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Alexis La Goutte <alexis.lagoutte@gmail.com>
2015-01-22 13:29:31 +00:00
Stefan Metzmacher
749c68cb56 packet-dcerpc: change transportsalt to guint64
This will be able to hold also SMB2 file ids and maybe other stuff in future.

Change-Id: Ib55895a346b7dc6562291730693453728c99fe91
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-on: https://code.wireshark.org/review/6708
Petri-Dish: Alexis La Goutte <alexis.lagoutte@gmail.com>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Alexis La Goutte <alexis.lagoutte@gmail.com>
2015-01-22 12:26:34 +00:00
Michael Mann
cff098e3eb guid_to_ep_str -> guid_to_str
guid_to_str now uses wmem allocation.

Change-Id: I8e48d1a720942fbefbaa6227ae0929cb9f856359
Reviewed-on: https://code.wireshark.org/review/6391
Reviewed-by: Anders Broman <a.broman58@gmail.com>
2015-01-08 07:18:09 +00:00
Bill Meier
10bfe2c43f dcerpc: Replace g_warning() by expert...() (dissectors shouldn't do termio).
Change-Id: If51a9acbb3b5a5b1623c72651c8a3ef2dd8ad068
Also: Replace (one of many) proto_tree_add_text() instances.
Reviewed-on: https://code.wireshark.org/review/6117
Reviewed-by: Bill Meier <wmeier@newsguy.com>
2014-12-29 16:18:57 +00:00
Martin Mathieson
596669f921 First batch of unincludes. Last attempt...
Change-Id: I3681462aeb98ca62ed3ec5eb226b2553317391a9
Reviewed-on: https://code.wireshark.org/review/5997
Petri-Dish: Martin Mathieson <martin.r.mathieson@googlemail.com>
Reviewed-by: Martin Mathieson <martin.r.mathieson@googlemail.com>
2014-12-22 21:03:13 +00:00
Bill Meier
b5d7b7ab6e Cleanup use of #includes in non-generated epan/dissector/*.c
Specifically:
- Set packet.h to be the first wireshark #include after
   config.h and "system" #includes.
   packet.h added as an #include in some cases when missing.
- Remove some #includes included (directly/indirectly) in
   packet.h. E.g., glib.h.
   (Done only for those files including packet.h).
- As needed, move "system" #includes to be after config.h and
   before wireshark #includes.
- Rework various #include file specifications for consistency.
- Misc.

Change-Id: Ifaa1a14b50b69fbad38ea4838a49dfe595c54c95
Reviewed-on: https://code.wireshark.org/review/5923
Petri-Dish: Alexis La Goutte <alexis.lagoutte@gmail.com>
Reviewed-by: Bill Meier <wmeier@newsguy.com>
2014-12-21 05:46:22 +00:00
Alexis La Goutte
42cdc2bc9b dcerpc: Missing break in switch (CID 280449 & 280450 & 284051)
Change-Id: I68fa9650c234c0f1fb8464b464a781b54f2c728c
Reviewed-on: https://code.wireshark.org/review/5657
Reviewed-by: Michael Mann <mmann78@netscape.net>
2014-12-07 19:15:11 +00:00
Michael Mann
6d207fe5f4 Remove private_data member from packet_info structure.
Dissectors should pass data directly to their subdissectors through the data parameter (of new-style dissectors). This avoids unintentional "trampling" from other dissectors trying to "share" private_data member.

Change-Id: I2efef5c8dfeef64588ba3ac6e695b469238c6468
Reviewed-on: https://code.wireshark.org/review/5487
Petri-Dish: Michael Mann <mmann78@netscape.net>
Reviewed-by: Michael Mann <mmann78@netscape.net>
2014-12-01 14:05:44 +00:00
AndersBroman
1f0a68d61a Missed cahnges from last commit:
- Replace some deprecated APIs

Change-Id: If815e7191afb445c474a59cf1e3af603fc7b0b28
Reviewed-on: https://code.wireshark.org/review/5018
Reviewed-by: Anders Broman <a.broman58@gmail.com>
2014-11-01 08:01:28 +00:00
AndersBroman
c427839a66 Fix:
- packet-dcerpc.c:4664:51: error: unused parameter 'pinfo' [-Werror=unused-parameter]
- packet-dcerpc.c:5083:83: error: unused parameter 'offset' [-Werror=unused-parameter]
- Replace some deprecated APIs

Change-Id: I12cbc92a1f07252ebc3ff638b0a8436b2e226a18
Reviewed-on: https://code.wireshark.org/review/5017
Reviewed-by: Anders Broman <a.broman58@gmail.com>
2014-10-31 09:06:04 +00:00
Michael Mann
2717766a9a Use tcp_dissect_pdus in DCE/RPC dissector when running atop TCP.
Yes DCE/RPC runs on top of many dissectors, all which need their own fragmentation support, but TCP can give it to you "for free".  DCE/RPC protocol format is also very conducive to it.

Ping-Bug: 6392
Change-Id: I0d16854fed3d9c4229c3d2973782f676a51dd719
Reviewed-on: https://code.wireshark.org/review/4923
Reviewed-by: Anders Broman <a.broman58@gmail.com>
2014-10-31 05:33:09 +00:00
Guy Harris
c4dc9eda80 Handle an hfindex of -1.
Code generated by the current version of Pidl dissects bitset fields
twice - once with proto_tree_add_item(), which puts the actual item into
the tree, so that we can create a subtree under it, and once with a
dissect_dcerpc_{type}() routine, to fetch the value and step past the
field.  The second call passes an hf_ index value of -1; interpret that
as meaning "don't put this into the protocol tree", rather than just
blindly calling proto_tree_add_XXX with -1 and getting a dissector
assertion.

Change-Id: I42fc023e77514a8a8a25d5c9db11fa3ef053babf
Reviewed-on: https://code.wireshark.org/review/4892
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2014-10-21 07:52:13 +00:00
Michael Mann
5e4e17ca5e Remove unnecessary tvb_ensure_bytes_exist calls.
All of the calls removed are followed by proto_tree_add_xxx calls of the same offset/length of the tvb_ensure_bytes_exist call.  The proto_tree_add_xxx calls should throw the exception, so we don't need the "double check".
There are probably more calls that can be removed, these were just obvious as first glance, spurred mostly by noticing the (ab)use in packet-wsp.c

Change-Id: I37cee347c8cf8ab0559e21562c802d3b37f4871e
Reviewed-on: https://code.wireshark.org/review/4833
Petri-Dish: Michael Mann <mmann78@netscape.net>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Alexis La Goutte <alexis.lagoutte@gmail.com>
2014-10-19 15:26:43 +00:00
Evan Huus
b8065a5b7d dcerpc: correctly initialize certain struct fields
Bug: 10482
Change-Id: I4d39d6a79d4ab89685a17a0c622c6181e4fada3d
Reviewed-on: https://code.wireshark.org/review/4233
Reviewed-by: Evan Huus <eapache@gmail.com>
2014-09-22 02:55:16 +00:00
Michael Mann
06237e4878 proto_tree_add_text -> proto_tree_add_subtree[_format] for DCE/RPC dissectors.
Change-Id: I84755d059ef70ca98b0e7626b6425360daf0529d
Reviewed-on: https://code.wireshark.org/review/4199
Petri-Dish: Michael Mann <mmann78@netscape.net>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Michael Mann <mmann78@netscape.net>
2014-09-20 11:59:25 +00:00
Michael Mann
e489df5024 Don't assert that values fit in 32 bits if the NDR64 flag is set.
For now, this just pacifies fuzz-testing.  If real world examples have this, there needs to be a drastic overhaul to support fields that could be either 32 or 64-bit values.

Bug:9329
Change-Id: I3e28808ca0291868a5f84258b0ee1e2a922703c2
Reviewed-on: https://code.wireshark.org/review/4189
Reviewed-by: Michael Mann <mmann78@netscape.net>
2014-09-19 21:54:02 +00:00
Bill Meier
b14bf98c06 Fix spelling: cant-->can't, wont-->won't, etc
Change-Id: I4497f1b8b6eab0e576d9dd31b732965f9a6679c6
Reviewed-on: https://code.wireshark.org/review/4124
Reviewed-by: Bill Meier <wmeier@newsguy.com>
2014-09-16 13:51:51 +00:00
Evan Huus
8d51a50a81 Remove get_next_di() and just use packet-scope for those
Presumably that was added for tap purposes, but packet-scope is much simpler and
less dangerous. Noticed while investigating the scan-build issues with
stack-local variables being pointed to by globals.

Change-Id: I851d756b103df71079b656e624f7472354c15862
Reviewed-on: https://code.wireshark.org/review/3290
Reviewed-by: Alexis La Goutte <alexis.lagoutte@gmail.com>
Petri-Dish: Alexis La Goutte <alexis.lagoutte@gmail.com>
Petri-Dish: Anders Broman <a.broman58@gmail.com>
Reviewed-by: Anders Broman <a.broman58@gmail.com>
2014-08-03 08:42:46 +00:00
Evan Huus
a644744fb9 Use packet_scope instead of a stack local
As clang pointed out we end up storing a reference to it in a global and (more
relevantly) pushing that global to a tap which would run after the current frame
has returned.

Thanks to Alexis for bringing this to my attention.

Change-Id: I3aac43a806d217b0dc8a973f6bb2fa48cdd041bb
Reviewed-on: https://code.wireshark.org/review/3289
Reviewed-by: Alexis La Goutte <alexis.lagoutte@gmail.com>
Petri-Dish: Alexis La Goutte <alexis.lagoutte@gmail.com>
Reviewed-by: Anders Broman <a.broman58@gmail.com>
2014-08-01 09:32:30 +00:00
Michael Mann
14824e6adf Revert "Fixup: tvb_* -> tvb_captured"
https://www.wireshark.org/lists/wireshark-dev/201406/msg00131.html

This reverts commit 246fe2ca4c.

Change-Id: Ib24bae0198c13a84bd7f731bf4af921212109a8f
Reviewed-on: https://code.wireshark.org/review/2430
Reviewed-by: Michael Mann <mmann78@netscape.net>
2014-06-19 18:25:59 +00:00
Dario Lombardo
246fe2ca4c Fixup: tvb_* -> tvb_captured
Change-Id: I9209c1271967405c34c1b6fa43e1726a4d3a5a3f
Reviewed-on: https://code.wireshark.org/review/2377
Reviewed-by: Anders Broman <a.broman58@gmail.com>
2014-06-18 14:14:58 +00:00
Bill Meier
7a1848b95d Fix gcc "warning: no previous prototype ... [-Wmissing-prototypes]"; Do some whitespace changes
Change-Id: I8c2e8694223270f1810aa6b13d955f0d08001d30
Reviewed-on: https://code.wireshark.org/review/1239
Reviewed-by: Bill Meier <wmeier@newsguy.com>
Tested-by: Bill Meier <wmeier@newsguy.com>
2014-04-21 16:48:17 +00:00
Alexis La Goutte
296591399f Remove all $Id$ from top of file
(Using sed : sed -i '/^ \* \$Id\$/,+1 d')

Fix manually some typo (in export_object_dicom.c and crc16-plain.c)

Change-Id: I4c1ae68d1c4afeace8cb195b53c715cf9e1227a8
Reviewed-on: https://code.wireshark.org/review/497
Reviewed-by: Anders Broman <a.broman58@gmail.com>
2014-03-04 14:27:33 +00:00
Bill Meier
93fe4d53e2 Remove trailing whitespace.
Change-Id: Ia03a1cd4590aceda30ead4aa93ad413d90c6aea6
Reviewed-on: https://code.wireshark.org/review/372
Reviewed-by: Bill Meier <wmeier@newsguy.com>
Tested-by: Bill Meier <wmeier@newsguy.com>
2014-02-25 16:36:38 +00:00
Bill Meier
8ab9c55618 From Ville Skyttä: Spelling Fixes
https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=9591


svn path=/trunk/; revision=54387
2013-12-23 15:53:13 +00:00
Evan Huus
2ae8edccea Rename more to_str functions to have ep_ in the name if they return ephemeral
buffers. Remove two unused functions.

svn path=/trunk/; revision=54250
2013-12-19 16:28:39 +00:00
Guy Harris
59dddc25ec In dissect_ndr_byte_array(), use the field index from the dcerpc_info
structure, rather than a fixed field.  Get rid of that fixed field, as
it's no longer needed.

Use dissect_ndr_byte_array() rather than dissect_ndr_char_cvstring() in
a case where we have an opaque byte array.

Have dissect_ndr_cvstring() and dissect_ndr_vstring() - and, therefore,
routines that call them, such as dissect_ndr_cstring(),
dissect_ndr_char_cvstring(), dissect_ndr_char_vstring(), and
dissect_ndr_wchar_vstring() - require that the field being used by an
FT_STRING field.  Manually fix a case where the PIDL generator makes
such a field FT_NONE rather than FT_STRING.  Also handle EBCDIC, just in
case we happen to see a packet with EBCDIC strings.

Use tvb_get_string_enc(), rather than tvb_get_unicode_string() or
tvb_get_string(), in dissect_ndr_cvstring() and dissect_ndr_vstring().

svn path=/trunk/; revision=54134
2013-12-15 19:48:15 +00:00
Bill Meier
ebaeed5a1f (Trivial)
- Fix indentation to match editor modelines (tabs-->spaces);
 - Rework/add some whitespace;

svn path=/trunk/; revision=53978
2013-12-12 20:16:30 +00:00
Gerald Combs
17a67c3b5c Get the "Decode As" dialog working, albeit with a few warts. It differs
from the GTK flavor in two major ways:

- The "Decode As" and "User Specified Decodes" dialog have been unified.
- You can modify the decode as behavior at any time, not just when you
  have a packet selected.

Revert part of 53498 so that we can move items marked

/*** THE FOLLOWING SHOULD NOT BE USED BY ANY DISSECTORS!!! ***/

from epan/decode_as.h to ui/decode_as_utils.h. 

Move "save" code from decode_as_dlg.c to decode_as_utils.c as well.

In packet-dcerpc.c don't register a table named "ethertype". We might
want to add checks for duplicate table names.

To do:
- Add support for ranges?
- Either add support for DCERPC or make DCERPC use a regular dissector
  table.
- Fix string selectors (i.e. BER).


svn path=/trunk/; revision=53910
2013-12-10 19:23:26 +00:00
Michael Mann
6505190fb7 Move DCERPC data in packet_info needed for Decode As into packet scoped proto data.
svn path=/trunk/; revision=53559
2013-11-25 00:14:50 +00:00
Michael Mann
e2df7c83cb Move dceprc_procedure_name from packet_info to dcerpc_info. Doesn't appear to be "used" by dissectors, just stored (for help in debugging?).
svn path=/trunk/; revision=53552
2013-11-24 20:55:55 +00:00
Michael Mann
32b66a9671 Fix memory leak from formatted string.
svn path=/trunk/; revision=53468
2013-11-21 03:26:42 +00:00
Guy Harris
8b8cf5671d strncpy() consideered unsafe (it doesn't, for example, guarantee that
the result is null-terminated); use g_strlcpy() (which *does* guarantee
null termination) instead.

svn path=/trunk/; revision=53461
2013-11-21 00:38:22 +00:00
Pascal Quantin
ff6a590edb Mark another parameter as unused
svn path=/trunk/; revision=53451
2013-11-20 20:36:22 +00:00
Michael Mann
01c8945438 Provide "Decode As" functionality through dissectors themselves instead of the GUI. Bug 9450 (https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=9450)
The basic idea behind this design is to have dissectors register with a "decode as list" with their name and dissector table.  When "Decode As" dialog is launched, any "registered" dissector found in the packet will cause a tab to be created in the dialog.  Any GUI (GTK+/Qt/tshark) can just hook into the "decode as list" to see what can be provided.

This patch includes the GUI portion of the functionality (including packet-dcerpc.[ch] because it had some GUI dependencies that are now removed).

Other notes:
1. Some "GUI text" (UTF8_LEFTWARDS_ARROW and similar) made their way into the dissector code.  Not sure how necessary it is and if reformatting the strings to avoid the macros is desired (TCP/UDP use it, SCTP doesn't).

2. I converted the SCTP functionality to have 2 tabs (instead of radio button), currently both are labeled "Transport" which could be confusing to users.  Naming suggestions welcome (as well as for naming of tabs from other dissectors).

3. BER and DCERPC have more opportunity to use Decode As now that they are selected based on dissector presense, not packet_info values.

4. Catapult DCT2000 populates pinfo->ipproto, yet under new design will not show up to do Decode As.  Should a "decode as item" be created for it?

5. BER dissector doesn't have Clear/Show Current functionality working (never did)

6. Bluetooth (in old design) could have been used "capture wide" instead of single packet (creating tabs of values not present in current packet), which goes against what I believe to be in the intent of Decode As, but I'm willing to hear counter-arguments.

svn path=/trunk/; revision=53446
2013-11-20 19:23:02 +00:00
Evan Huus
2809240ead Add a cast to try and fix the OSX buildbot.
svn path=/trunk/; revision=53313
2013-11-14 13:07:53 +00:00
Evan Huus
bfca717c45 Fix https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=9303 based on patch and
help from Matthieu Patou.

If the DCE-RPC heuristic failed to identify a TVB, *but* we've already decoded
a DCE-RPC layer in this packet *and* the heuristic failed because we didn't have
enough data, make the reasonable assumption that it actually is another DCE-RPC
packet, and ask TCP to desegment more data for us and try again.

svn path=/trunk/; revision=53310
2013-11-14 03:34:01 +00:00
Jakub Zawadzki
ae59b09443 Add missing includes in order to remove exceptions.h from proto.h (next commit).
svn path=/trunk/; revision=53230
2013-11-10 15:59:37 +00:00
Michael Mann
22760b2d2a Remove pinfo->private_data from DCERPC dissectors and instead have dcerpc_info* infomation be passed in as a function parameter. Bug 9387 (https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=9387)
All "generated" source was manually modified (with the power of search/replace), but I believe the "source input" files have been adjusted (checked into revs 53098 and 53099) to reflect the necessary changes (with possible whitespace formatting differences).

The Microsoft compiler doesn't flag "unused function parameters", so I apologize in advance if I may have missed a few.  The "dcerpc_info* di" parameter is used in almost every function.

svn path=/trunk/; revision=53100
2013-11-06 14:31:29 +00:00
Alexis La Goutte
39f4eb2edd Fix Dead Store (Dead assignement/Dead increment) warning found by Clang
svn path=/trunk/; revision=52874
2013-10-26 17:18:12 +00:00
Michael Mann
15294a1261 Add a new api to allow dissection of the array payload as a whole. Bug 9307 (https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=9307)
From Matthieu Patou 

svn path=/trunk/; revision=52743
2013-10-21 18:46:52 +00:00
Michael Mann
772fb97f76 We can't really have conformant strings they are always conformant and
varying but pidl insists on having a different function.  Bug 9306 (https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=9306)

From Matthieu Patou.

svn path=/trunk/; revision=52742
2013-10-21 18:33:14 +00:00
Michael Mann
a8d18748ab dce-rpc: properly dissect multiple PDU in the same packet. Bug 9302 (https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=9302).
From Matthieu Patou

svn path=/trunk/; revision=52736
2013-10-21 16:00:37 +00:00
Michael Mann
e5846873f4 Convert proto_tree_add_time_format to either proto_tree_add_time or proto_tree_add_time_format_value.
Only proto_tree_add_time_format calls remaining are in packet-ncp2222.inc, which may just need some additional filters.

svn path=/trunk/; revision=52269
2013-09-29 16:40:01 +00:00