Commit Graph

39962 Commits

Author SHA1 Message Date
Martin Mathieson 2b9dcdc346 Protobuf: Add a UAT table to map URI -> message_type 2024-02-27 10:00:14 +00:00
Jie Han bce195d8e0 Update existing NAN attributes to NAN R4
NAN Availability Attribute, Device Capability Attribute, Cipher Suite
Info Attribute.
2024-02-27 08:56:56 +00:00
Triton Circonflexe 9840e6247f Thrift: Align the endianness for double
Compact protocol uses little endian doubles instead of big endian like compact.
This issue is documented as an accident that became the de-facto standard.

For consistency, the sub-tvbuff_t given to delegated sub-dissectors is aligned
with binary protocol to allow a sub-dissector to work with both binary and compact.
2024-02-27 08:45:02 +00:00
Triton Circonflexe 4eaf10bc4e Thrift: Fix recursion check
Previous recursion check only worked with generic dissector.
The introduced changes cover the sub-dissectors as well.

Remove the existing check as it counted basic types as well.
Add a check at every place where a sub-tree is created:
- containers (list, set, map)
- structures
2024-02-27 08:45:02 +00:00
John Thacker 3540bbc969 GSSAPI: Avoid dissecting checksum in signed-only KRB_TOKEN_CFX_WRAP
In KRB_TOKEN_CFX_WRAP (RFC 4121), for signed-only Wrap tokens
("Wrap tokens without confidentiality"), the plaintext is followed
by the checksum, unlike in other implementations where the all
the GSSAPI bits, including the checksum, precede the plaintext.

For those cases, the calling dissector cannot simply dissect
the entire original tvb after the returned offset, as it's not
all plaintext. Instead, place the plaintext without checksum
subset in gssapi_decrypted_tvb and return it to the caller.
In these cases, gssapi_data_encrypted will be set to FALSE, to
allow dissectors that wish to distinguished signed-and-sealed
from signed-only. For dissectors that do not care to distinguish
the cases, this requires no change.

Update the documentation in the GSSAPI header to describe this.

Fix #9398.
2024-02-26 16:58:09 +00:00
Stefan Metzmacher 4d6941caa6 hipercontracer: don't consume LDAP/SASL/KRB_TOKEN_CFX_WRAP messages
See the capture in #9398 for an example.

Signed-off-by: Stefan Metzmacher <metze@samba.org>
2024-02-26 13:40:42 +00:00
Zoran Bošnjak 33c9657365 asterix: adjust to upstream change
Structure change in asterix-specs, revision 3ab3bb3.
Rule type is generalized and it now also includes a default value.
2024-02-26 09:22:51 +01:00
Martin Mathieson e0300eaed8 Fix lots of spellings 2024-02-25 22:46:47 +00:00
Gerald Combs eb706e9b84 [Automatic update for 2024-02-25]
Update manuf, services enterprise numbers, translations, and other items.
2024-02-25 17:08:05 +00:00
Martin Mathieson 63d6edbd3e thrift: make some functions static 2024-02-23 22:44:16 +00:00
John Thacker 92573aad71 RNSAP: Dissect IMSI 2024-02-23 20:08:41 +00:00
John Thacker 62e8882701 SCCP: Use register_dissector_preference
Switch SCCP's default payload preference from a string to validated
dissector name preference, added in 2f1392169a
2024-02-23 14:50:50 +00:00
Martin Mathieson 5239b6bc8d Look into some items where VALS doesn't fit in mask 2024-02-23 11:52:11 +00:00
hidd3ncod3s Sec a5dee645cf DNSCrypt: Add support to parse DNSCrypt Initial DNS request 2024-02-23 09:00:32 +00:00
Gerald Combs 0eb0d6fdb4 ICMPv6: Add a recursion check
Fix

```
wireshark/epan/dissectors/packet-icmpv6.c:1709:1: warning: function 'dissect_icmpv6_nd_opt' is within a recursive call chain [misc-no-recursion]
 1709 | dissect_icmpv6_nd_opt(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree)
      | ^
wireshark/epan/dissectors/packet-icmpv6.c:1709:1: note: example recursive call chain, starting from function 'dissect_icmpv6_nd_opt'
wireshark/epan/dissectors/packet-icmpv6.c:2247:30: note: Frame #1: function 'dissect_icmpv6_nd_opt' calls function 'dissect_icmpv6_nd_opt' here:
 2247 |                 opt_offset = dissect_icmpv6_nd_opt(tvb, opt_offset, pinfo, icmp6opt_tree);
      |                              ^
wireshark/epan/dissectors/packet-icmpv6.c:2247:30: note: ... which was the starting point of the recursive call chain; there may be other cycles
```
2024-02-23 03:36:20 +00:00
Gerald Combs 5a04c4ecee DHCPv6: Add a recursion check
Fix

```
wireshark/epan/dissectors/packet-dhcpv6.c:1846:1: warning: function 'dhcpv6_option' is within a recursive call chain [misc-no-recursion]
 1846 | dhcpv6_option(tvbuff_t *tvb, packet_info *pinfo, proto_tree *bp_tree,
      | ^
wireshark/epan/dissectors/packet-dhcpv6.c:1846:1: note: example recursive call chain, starting from function 'dhcpv6_option'
wireshark/epan/dissectors/packet-dhcpv6.c:2052:28: note: Frame #1: function 'dhcpv6_option' calls function 'dhcpv6_option' here:
 2052 |             temp_optlen += dhcpv6_option(tvb, pinfo, subtree,
      |                            ^
wireshark/epan/dissectors/packet-dhcpv6.c:2052:28: note: ... which was the starting point of the recursive call chain; there may be other cycles
wireshark/epan/dissectors/packet-dhcpv6.c:2958:1: warning: function 'dissect_dhcpv6' is within a recursive call chain [misc-no-recursion]
 2958 | dissect_dhcpv6(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
      | ^
```
2024-02-23 03:26:34 +00:00
Gerald Combs 1515b211e2 SMB2: Add recursion checks 2024-02-22 18:50:24 -08:00
Brian Sipos 40b210e1d6 cose: Peek ahead for map principal value before dissecting map items
This change updates references to obsoleted RFCs and I-Ds,
provides human-readable interpretation of kid values, and fixes
the text encoding type in proto_tree_add_cbor_tstr().

Fixes #19659
2024-02-23 00:12:00 +00:00
Patrik Thunström 8f49a831cf ptp: Corrected data type for cumulativeScaledRateOffset.
Aligning the data type with the 802.1AS specs the data type is
now INT32 instead of UINT32.
Also added a generated field where the scale and offset is removed
to easier interpret the actual accumulated rate ratio.
2024-02-22 23:19:59 +00:00
Martin Mathieson c72fc5b163 Fix some spelling errors 2024-02-22 20:28:19 +00:00
John Thacker b5ffe3deac QUIC: Handle early 1-RTT data from server
For our test in check_dcid_on_coalesced_packet, check the *last*
QUIC packet in the frame so far, not the first packet in the
frame.

Only create the quic_packet structure after checking for a coalesced
packet, so that the last QUIC packet in the frame is the previous
one, not the current one.

What happens if 0-RTT packets are lost and resent?  There's an
alternative suggestion featuring checking if the ciphers are
initialized on the first pass that might work too, but if we
did that, what happens if the server Handshake is fragmented,
reassembled, and the server sent some "0.5-RTT" data after the
last fragment but then had to resend a different Handshake fragment
later? We'd still get some 1-RTT data before the handshake was done.

Fix #19665 while still not upsetting #19503.
2024-02-22 19:20:28 +00:00
John Thacker 00c938b7a9 OSITP: Pass ED-TPDU to subdissectors
Fix #7393
2024-02-22 09:49:55 -05:00
Jaap Keuter ff23d579de SNMP: Add support for RFC 5343
Add identification of the 'local engine' format.
2024-02-22 04:54:44 +00:00
marmonier_c 25487eceef feat(#19647): decode Datum enum and Ver field
Use RFC 6225 (obsoletes RFC 3825)
2024-02-22 04:52:56 +00:00
marmonier_c 1703eea653 feat(#19647): decode resolution fields 2024-02-22 04:52:56 +00:00
marmonier_c f501c57fc3 feat(#19647): check longitude and latitude max value 2024-02-22 04:52:56 +00:00
marmonier_c 5e9e75537a fix(#19647): correction of fractional calculations
Altitude dissector added
2024-02-22 04:52:56 +00:00
Gerald Combs 8b0e90d62e AllJoyn: Add recursion checks 2024-02-22 00:27:48 +00:00
Gerald Combs 34c90f7a3d 6LoWPAN: Add recursion checks 2024-02-21 14:36:18 -08:00
John Thacker 302eb58770 GTP: Fix filtering of UL/DL items
The uplink and downlink bit rate items, and the maximum SDU size,
are contained in a single octet but added to the tree using
proto_tree_add_uint_format[_value] after multiplying by various factors,
so the values don't actually fit in a FT_UINT8. The fields need
to be large enough to fit the largest value added after transformation.

The filter engine won't allow filters for values outside the field
range, e.g.

$ ./run/dftest -s 'gtp.qos_max_sdu_size == 1500'
Filter:
 gtp.qos_max_sdu_size == 1500

Error: "1500" too big for this field, maximum 255.
  gtp.qos_max_sdu_size == 1500
                          ^~~~

After:

$ ./run/dftest -s 'gtp.qos_max_sdu_size == 1500'
Filter:
 gtp.qos_max_sdu_size == 1500

Syntax tree:
 0 TEST_ANY_EQ:
   1 FIELD(gtp.qos_max_sdu_size <FT_UINT16>)
   1 FVALUE(1500 <FT_UINT16>)

Instructions:
 0000 READ_TREE        gtp.qos_max_sdu_size -> R0
 0001 IF_FALSE_GOTO    3
 0002 ANY_EQ           R0 == 1500
 0003 RETURN
2024-02-21 21:07:22 +00:00
Gerald Combs 282bd19e88 TN5250: Add a recursion check 2024-02-21 20:27:07 +00:00
Gerald Combs f8af3cd410 Add Clang-Tidy suppressions to various dissectors
Add NOLINTNEXTLINE suppressions for some existing recursion checks.
2024-02-21 11:41:01 -08:00
Gerald Combs 7183ac40da MONGO: Add a recursion check 2024-02-21 11:09:13 -08:00
winprotocolwireshark 2f6833b5f7 SMB2: Update reserved field and add new dissection
Added dissection for FSCTL_REFS_STREAM_SNAPSHOT_MANAGEMENT Request
Add FileFullEaInformation flags
Update SMB2 lock response field unknown to reserved.
Update flush request/response reserved fields.
2024-02-21 12:47:06 +01:00
John Thacker 942d7f4b41 R-GOOSE: Strengthen heuristic for CLTP on UDP
Reduce false positives of the CLTP on UDP dissector (RFC 1240)
by looking at the parameters as well and also ruling out length
indicator zero.
See https://ask.wireshark.org/question/31455/i-see-a-malformed-packet-in-wireshark-from-a-google-ip-address-on-port-2400-using-r-goose-protocol-what-could-this-be/

RFC 1240 was rendered Historic by RFC 2556, which noted that
"at this time there do not seem to be any implementations" and
recommended TPKT (ISO on TCP) instead.

However, R-GOOSE does use RFC 1240. In practice, it seems like
R-GOOSE uses the IANA registered port for ISO-TSAP, 102, just like
TPKT does on TCP. Perhaps we should register the dissector to that
port instead of a heuristic dissector if someone can confirm that.

Move the dissector from goose to ositp. This doesn't cause any
preference issues because heuristic dissectors are saved in the
preference file by name and the name won't change.
2024-02-21 07:59:55 +00:00
Darius Davis c99e37131b TPNCP: Fix two potential array overruns.
The TPNCP dissector depends upon a resource file, tpncp.dat, being loaded
during initialization.  If a non-default tpncp.dat was used, the TPNCP
dissector could potentially perform some operations beyond the bounds of a
fixed-size array while loading tpncp.dat.

If a non-default tpncp.dat was used and an attempt was made to dissect
malformed TPNCP traffic, the TPNCP dissector could potentially perform a read
beyond the end of an array.

This change adds explicit bounds-checks to eliminate these possible OOB
accesses.

There is zero chance of this being triggered in a default unmodified
installation of Wireshark: Loading of the tpncp.dat file is conditional on a
preference setting which defaults to FALSE, and even if it is configured to
TRUE, the included tpncp.dat does not trigger either of these OOB operations.
It still seems worthwhile to make the parser and dissector generally more
robust.
2024-02-21 12:45:19 +10:00
Gerald Combs b8c6c9e1a8 5co-rap: Add a Clang-Tidy suppression 2024-02-20 17:15:14 -08:00
Gerald Combs d7b15ff6d1 RBM: Add a recursion check
Fix

```
wireshark/epan/dissectors/file-rbm.c:196:13: warning: function 'dissect_rbm_array' is within a recursive call chain [misc-no-recursion]
  196 | static void dissect_rbm_array(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree, guint* offset, gchar** value_str)
      |             ^
wireshark/epan/dissectors/file-rbm.c:410:13: note: example recursive call chain, starting from function 'dissect_rbm_object'
  410 | static void dissect_rbm_object(tvbuff_t* tvb, packet_info* pinfo, proto_tree* ptree, guint* offset, gchar** type, gchar** value)
      |             ^
wireshark/epan/dissectors/file-rbm.c:439:4: note: Frame #1: function 'dissect_rbm_object' calls function 'dissect_rbm_string' here:
  439 |                         dissect_rbm_string(tvb, pinfo, tree, offset, &value_local);
      |                         ^
wireshark/epan/dissectors/file-rbm.c:325:2: note: Frame #2: function 'dissect_rbm_string' calls function 'dissect_rbm_object' here:
  325 |         dissect_rbm_object(tvb, pinfo, tree, offset, NULL, NULL);
      |         ^
wireshark/epan/dissectors/file-rbm.c:325:2: note: ... which was the starting point of the recursive call chain; there may be other cycles
wireshark/epan/dissectors/file-rbm.c:222:13: warning: function 'dissect_rbm_hash' is within a recursive call chain [misc-no-recursion]
  222 | static void dissect_rbm_hash(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree, guint* offset, gchar** value_str)
      |             ^
wireshark/epan/dissectors/file-rbm.c:321:13: warning: function 'dissect_rbm_string' is within a recursive call chain [misc-no-recursion]
  321 | static void dissect_rbm_string(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree, guint* offset, gchar** value)
      |             ^
wireshark/epan/dissectors/file-rbm.c:329:13: warning: function 'dissect_rbm_regex' is within a recursive call chain [misc-no-recursion]
  329 | static void dissect_rbm_regex(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree, guint* offset, gchar** value)
      |             ^
wireshark/epan/dissectors/file-rbm.c:344:13: warning: function 'dissect_rbm_userclass' is within a recursive call chain [misc-no-recursion]
  344 | static void dissect_rbm_userclass(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree, guint* offset, gchar** value)
      |             ^
wireshark/epan/dissectors/file-rbm.c:355:13: warning: function 'dissect_rbm_variable' is within a recursive call chain [misc-no-recursion]
  355 | static void dissect_rbm_variable(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree, guint* offset, gchar** value_str)
      |             ^
wireshark/epan/dissectors/file-rbm.c:368:13: warning: function 'dissect_rbm_struct' is within a recursive call chain [misc-no-recursion]
  368 | static void dissect_rbm_struct(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree, guint* offset, gchar** value)
      |             ^
wireshark/epan/dissectors/file-rbm.c:374:13: warning: function 'dissect_rbm_drb' is within a recursive call chain [misc-no-recursion]
  374 | static void dissect_rbm_drb(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree, guint* offset)
      |             ^
wireshark/epan/dissectors/file-rbm.c:383:13: warning: function 'dissect_rbm_rubyobject' is within a recursive call chain [misc-no-recursion]
  383 | static void dissect_rbm_rubyobject(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree, guint* offset)
      |             ^
wireshark/epan/dissectors/file-rbm.c:400:13: warning: function 'dissect_rbm_extended' is within a recursive call chain [misc-no-recursion]
  400 | static void dissect_rbm_extended(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree, guint* offset)
      |             ^
wireshark/epan/dissectors/file-rbm.c:410:13: warning: function 'dissect_rbm_object' is within a recursive call chain [misc-no-recursion]
  410 | static void dissect_rbm_object(tvbuff_t* tvb, packet_info* pinfo, proto_tree* ptree, guint* offset, gchar** type, gchar** value)
      |             ^
wireshark/epan/dissectors/file-rbm.c:535:6: warning: function 'dissect_rbm_inline' is within a recursive call chain [misc-no-recursion]
  535 | void dissect_rbm_inline(tvbuff_t* tvb, packet_info* pinfo, proto_tree* tree, guint* offset, gchar** type, gchar** value)
      |      ^
```
2024-02-21 01:05:15 +00:00
Gerald Combs bb73b87bc7 MP4: Add Clang-Tidy suppressions 2024-02-21 01:03:17 +00:00
Gerald Combs 46c652102f JPEG: Add a recursion check
Fix

```
/builds/wireshark/wireshark/epan/dissectors/file-jpeg.c:773:1: warning: function 'process_tiff_ifd_chain' is within a recursive call chain [misc-no-recursion]
  773 | process_tiff_ifd_chain(proto_tree *tree, tvbuff_t *tvb, packet_info *pinfo,
      | ^
/builds/wireshark/wireshark/epan/dissectors/file-jpeg.c:773:1: note: example recursive call chain, starting from function 'process_tiff_ifd_chain'
/builds/wireshark/wireshark/epan/dissectors/file-jpeg.c:896:37: note: Frame #1: function 'process_tiff_ifd_chain' calls function 'process_tiff_ifd_chain' here:
  896 |                                     process_tiff_ifd_chain(tree, tvb, pinfo, encoding,
      |                                     ^
/builds/wireshark/wireshark/epan/dissectors/file-jpeg.c:896:37: note: ... which was the starting point of the recursive call chain; there may be other cycles
```
2024-02-21 01:00:29 +00:00
Triton Circonflexe ff93425a66 Thrift: Add support for raw sub-dissectors
- Move all basic dissect_thrift_t_<type> implementations into
  dissect_thrift_raw_<type> that takes an additional dissector_t
  parameter.
- All dissect_thrift_t_<type> just calls dissect_thrift_raw_<type>
  with a NULL raw dissector.
- When the dissector_t parameter is set, create a sub-tvbuff_t pointing
  to the raw content of the simple type (integral or binary).
- There are 2 specific cases within the TCompactProtocol part:
  1. For booleans, the sub-dissector is responsible for using only the
     least significant bit as the boolean value. The most obvious use
     of the boolean raw sub-dissector is the use of a true_false_string.
  2. For varint, we manufacture a tvbuff_t containing the big-endian
     value of the right size to be the same as TBinaryProtocol.
- Allow the raw sub-dissector to push the responsibility back to the
  generic dissector using thrift_opt_t.use_std_dissector = TRUE.
  A common use case for that is a specific dissection for some values
  only in a key/value map (configuration keys).
- Add a public dissect_thrift_t_raw_data() function that takes a type
  for dispatch as well as the dissector_t.
2024-02-21 01:00:12 +00:00
John Thacker e911f8ec9d stats tree: Update plugins for new path separator
Update the pinfo stats tree plugin and the F5 trailer for
the new stats tree path separator

Follow up to 53638f9ccf
2024-02-21 00:23:47 +00:00
Martin Mathieson 57c19da670 ISIS-LSP: fix masks for attach set of flags 2024-02-21 00:09:26 +00:00
Gerald Combs 4176fb8f15 BLF: Fix the build 2024-02-20 15:06:15 -08:00
Gerald Combs 3b2c961eeb BLF: Add a recursion check
Fix

```
wireshark/epan/dissectors/file-blf.c:498:1: warning: function 'dissect_blf_lobj' is within a recursive call chain [misc-no-recursion]
  498 | dissect_blf_lobj(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, gint offset_orig) {
      | ^
wireshark/epan/dissectors/file-blf.c:886:1: note: example recursive call chain, starting from function 'dissect_blf_next_object'
  886 | dissect_blf_next_object(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint offset) {
      | ^
wireshark/epan/dissectors/file-blf.c:893:32: note: Frame #1: function 'dissect_blf_next_object' calls function 'dissect_blf_lobj' here:
  893 |             int bytes_parsed = dissect_blf_lobj(tvb, pinfo, tree, offset);
      |                                ^
wireshark/epan/dissectors/file-blf.c:580:27: note: Frame #2: function 'dissect_blf_lobj' calls function 'dissect_blf_next_object' here:
  580 |                     tmp = dissect_blf_next_object(sub_tvb, pinfo, subtree, offset_sub);
      |                           ^
wireshark/epan/dissectors/file-blf.c:580:27: note: ... which was the starting point of the recursive call chain; there may be other cycles
wireshark/epan/dissectors/file-blf.c:886:1: warning: function 'dissect_blf_next_object' is within a recursive call chain [misc-no-recursion]
  886 | dissect_blf_next_object(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint offset) {
      | ^
```
2024-02-20 22:34:26 +00:00
Martin Mathieson 55798da218 PLDM: Fix coverity warning about version printing 2024-02-20 21:41:09 +00:00
Jonathan Lennox 6f79b432dc Annotate short names of VP9 fields in field names.
These match the names used for the filters, which are otherwise non-obvious.
2024-02-20 21:21:49 +00:00
Gerald Combs 16d85df6f4 ISIS LSP: Add a recursion check
Fix

```
wireshark/epan/dissectors/packet-isis-lsp.c:3431:1: warning: function 'dissect_sub_clv_tlv_22_22_23_141_222_223' is within a recursive call chain [misc-no-recursion]
 3431 | dissect_sub_clv_tlv_22_22_23_141_222_223(tvbuff_t *tvb, packet_info* pinfo, proto_tree *tree,
      | ^
wireshark/epan/dissectors/packet-isis-lsp.c:3431:1: note: example recursive call chain, starting from function 'dissect_sub_clv_tlv_22_22_23_141_222_223'
wireshark/epan/dissectors/packet-isis-lsp.c:3541:21: note: Frame #1: function 'dissect_sub_clv_tlv_22_22_23_141_222_223' calls function 'dissect_sub_clv_tlv_22_22_23_141_222_223' here:
 3541 |                     dissect_sub_clv_tlv_22_22_23_141_222_223(tvb, pinfo, subtree, local_offset, local_len);
      |                     ^
wireshark/epan/dissectors/packet-isis-lsp.c:3541:21: note: ... which was the starting point of the recursive call chain; there may be other cycles
```

Add Clang-Tidy suppressions as well.
2024-02-20 11:16:22 -08:00
Gerald Combs 45f9dae43c GIOP: Add a recursion check
Add Clang-Tidy suppressions as well.
2024-02-20 18:21:29 +00:00
Gerald Combs 6c52cdf959 ENRP: Add a recursion check
Add Clang-Tidy suppressions as well.
2024-02-20 09:46:42 -08:00