Commit Graph

84129 Commits

Author SHA1 Message Date
Gerald Combs 4bb16383a3 macOS: Require Sparkle 2.
Remove our Sparkle 1 code. Fixes #18035.
2022-04-21 17:54:27 +00:00
easonweii a1e0c34c30 GTP: Minor reconstruction
Extract Method for multiple message parsing for tpdus to simplify things for future bug fixes and to make the code logic clearer.
Encapsulate the following functions:
dissect_gtp_tpdu_by_handle
dissect_gtp_tpdu_as_pdcp_lte_info
dissect_gtp_tpsu_as_pdcp_nr_info
Note: The original code function is not changed.
2022-04-21 17:30:25 +00:00
Gerald Combs a73fd872ad dfilter: Add a null check.
Try to fix

*** CID 1504179:  Null pointer dereferences  (FORWARD_NULL)
/builds/wireshark/wireshark/epan/dfilter/dfvm.c: 327 in dfvm_dump_str()
321     				stack_print = dump_str_stack_push(stack_print, arg1_str);
322     				break;
323
324     			case STACK_POP:
325     				wmem_strbuf_append_printf(buf, "%05d STACK_POP\t%s\n", id, arg1_str);
326     				for (i = 0; i < arg1->value.numeric; i ++) {
>>>     CID 1504179:  Null pointer dereferences  (FORWARD_NULL)
>>>     Passing null pointer "stack_print" to "dump_str_stack_pop", which dereferences it.
327     					stack_print = dump_str_stack_pop(stack_print);
328     				}
329     				break;
330
331     			case MK_RANGE:
332     				wmem_strbuf_append_printf(buf, "%05d MK_RANGE\t\t%s[%s] -> %s\n",
2022-04-21 17:10:44 +00:00
Gerald Combs 51f5bdc287 FPP: Add null pointer checks.
Add a couple of null pointer checks. Followup to #18043.
2022-04-21 16:49:22 +00:00
Gerald Combs 88f07ff5d1 epan: Add a null conversation checks.
Check for null conversations in conversation_add_proto_data,
conversation_get_proto_data, and conversation_delete_proto_data.
Document them as well. Ping #18043.
2022-04-21 16:27:43 +00:00
Dario Lombardo f067e40166 fpp: check conversation pointer before use.
Fix: #18043.
2022-04-21 16:05:08 +00:00
Roland Knall 1278af07c3 Qt: Improve UIX for sparklines
Sparklines should display to the user, which interfaces are active
and ready for capture. Additionally it should be easy to find active
interfaces, without filtering first.

This change reorders the interface list, in order to sort active
interfaces on top, as well as hide information if no packet has been
received on that interface, to ensure that the user can find active
interfaces faster, making it easier to capture on systems where
the interfaces have very generic names.

The interface context menu has been amended to allow interfaces to be
hidden/unhidden from the main interface list as well
2022-04-21 15:41:12 +00:00
Yu Gao 49ec7da90e fix pipeline issue 2022-04-21 15:20:34 +00:00
Dylan Ulis 2f41595382 CIP Safety: Fix CRC logic when timestamp rolls over to zero 2022-04-21 15:02:25 +00:00
John Thacker d6fb90ecab proto_hier_stats: Skip non-protocols and reduce recursive calls
Skip non protocols in process_tree before calling process_node(), and
in process_node() before calling itself recursively, instead of at
the beginning of process_node(), decreaing the number of recursive
calls.

This reduces possible stack overflows in cases arising from dissectors
that call proto_item_get_parent(), which can result in many top level
non protocol items due to items not properly being faked. (#8069)

Use proto_register_is_protocol for the test instead of testing for
a name, which has not been a useful test for some time.

Add some comments about possibly wanting to skip PINOs that have
field_type FT_BYTES if they end up being toplevel items, and about
possibly wanting to descend into the tree to pick up protocols not
at the top level.
2022-04-21 08:56:12 -04:00
John Thacker 45da161430 libgcrypt: Remove HAVE_GCRYPT_AEAD , _CHACHA20
Libgcrypt 1.8.0 is required now, so these are always defined.
2022-04-21 07:11:32 -04:00
John Thacker d87b9ca731 test: Remove libgcrypt checks for 1.8 and below
libgcrypt 1.8.0 or higher is required now, so remove the checks to
skip tests without it
2022-04-21 06:32:44 -04:00
John Thacker b80cdaa243 libgcrypt: Require version 1.8.0
Libgcrypt 1.8.x is required for a large amount of decryption
support and is the current LTS version of libgcrypt. The 1.6 and
1.7 series have been end-of-life since 2017-06-30 and 2019-06-30,
respectively.

The Linux distributions that have versions of libgcrypt before 1.8.0
are nearing or at end of support (RHEL7, SLES 12, Debian stretch,
Ubuntu 16.04LTS) and can be supported by the Wireshark 3.6 LTS release
series.

Remove an enormous amount of ifdefs based on libgcrypt versions
1.6.0, 1.7.0, and 1.8.0. There will be a second pass for the
commons defines HAVE_LIBGCRYPT_AEAD, HAVE_LIBGCRYPT_CHACHA20, and
HAVE_LIBGCRYPT_CHACHA20_POLY1305, which are now always defined.

The ISAKMP dissector has some comments noting that some workarounds
were used for libgcrypt 1.6 that aren't needed with 1.7; perhaps
that could be updated now.
2022-04-20 21:30:21 -04:00
John Thacker 9c115d0ed5 macos-setup: Require Qt 5.9 or later and macOS 10.10 or later
The minimum required version of Qt is now 5.9, and thus the
minimum required version of macOS is 10.10 (Yosemite). Update
that in macos-setup, and remove various version checks and older
packages needed for Mountain Lion and Mavericks.

Also update the default version of Qt installed to 5.12.12, the
last release in the Qt 5.12 LTS series (and the last version with
an offline installer.)
2022-04-20 19:44:29 -04:00
John Thacker 13075b4ff0 Require Qt 5.9 or later
Increase the minimum required version of Qt from 5.6 to the next
LTS version, 5.9. The various Linux distributions that have not
released an update to 5.9 or later (SLES 12, Debian stretch) are
nearing end of support, and can be supported by the Wireshark 3.6 LTS
release.

Qt 5.9 requires macOS 10.0, so make that the minimum macOS version
as well.

Remove unneeded version checks (except from QCustomPlot).
2022-04-20 18:59:32 -04:00
John Thacker e16b1629dc CMake: Only require C++11 once
We always require C++11, and set that at the top of the file,
so there's no need to conditionally set it a second time later.
2022-04-20 21:52:34 +00:00
Gerald Combs 21d8522334 Tools: Update the Sparkle version in macos-setup.sh.
[skip ci]
2022-04-20 21:50:28 +00:00
John Thacker 7a97a1dc22 epan: Add comments about _get_parent, _set_len and faked items
If we're faking items, then proto_[item|tree]_get_parent[_nth] return
the parent of the faked item, which may not be what we want. We have
no way of knowing if the logical item meant was the faked item itself
or one of its children that share the same proto_item when faked.

Thus we don't know if we should return the proto_item itself or its
parent when called on a possibly faked item. Most of the time we will
be adding new items to what we return here, which means not faking items
that could be faked (since we might be returning the root node, which
doesn't have a field_info), hurting performance (see #8069).

It can also have some unusual effects on the protocol hierarchy stats,
particularly if we change things so that non-visible items can change
their length, which has a similar issue. (#17877)
2022-04-20 21:30:34 +00:00
Gerald Combs c2fd505516 macOS: Even more Sparkle 2 signing fixes.
Sparkle's XPC services are only needed if we're sandboxing, so remove
them.

[skip ci]
2022-04-20 14:28:17 -07:00
Gerald Combs d024502c8b macOS: More Sparkle 2 signing fixes.
Sign our XPCs. Add another Brotli fixup.
2022-04-20 12:50:29 -07:00
Gerald Combs b491d28c42 GitLab CI+release notes: Remove 32-bit Windows.
Note that we no longer ship 32-bit Windows packages in the release
notes.

Remove our 32-bit Windows and CentOS 7 jobs.
2022-04-20 19:26:13 +00:00
Gerald Combs 486fd46fe9 macOS: Update our app bundle for Sparkle 2.
Update our application bundle script to handle Sparkle 2 and its assets.
2022-04-20 11:23:24 -07:00
Andoni Diaz de Cerio 373280bc65 MIKEY: Register the application/mikey MIME type 2022-04-20 08:30:13 +00:00
Vahap Emin Agaogullari b51c70ae11 LLDP: Profinet TSN TLV Dissection
Profinet TSN TLV Dissection implemented
2022-04-20 07:44:57 +00:00
Vahap Emin Agaogullari 7e0d0eb418 PROFINET: TSN Dissection implemented
TSN Records for pn_io and
pn_dcp TSN Suboption dissected
2022-04-20 07:44:57 +00:00
Alexis La Goutte 26be00e320 ieee80211: Fix clang analyzer warning (Dead.Store)
also indent
2022-04-20 07:25:17 +00:00
Gerald Combs 87b0288b8d epan: Add the ability to add conversation filter protocols.
Convert our conversation protocols to a dynamic list and add
add_conversation_filter_protocol(). Use it in the Falco Bridge plugin to
add protocols with conversation filters.
2022-04-19 22:25:32 +00:00
Gerald Combs f6061c4a3c Tools: Fix our pacman arguments in arch-setup.sh.
Add back the -u / --sysupgrade flag.
2022-04-19 21:06:24 +00:00
Dario Lombardo 33dca395b1 aprs: NULL-terminate a string.
CID: 1495842
2022-04-19 20:45:24 +00:00
Dario Lombardo 6c3e4c7304 enip: init address on declaration.
CID: 1499496
2022-04-19 20:45:24 +00:00
Dario Lombardo 7cbb6e9a76 dissectors: init memory before use.
CID: 52571445-27
2022-04-19 20:45:24 +00:00
Alexis La Goutte e4c46563fb QUIC: Add IMMEDIATE_ACK from ACK Frequency Draft
https://datatracker.ietf.org/doc/html/draft-ietf-quic-ack-frequency#section-6
2022-04-19 18:45:43 +00:00
Alexis La Goutte 69637a731d QUIC: Update to last ACK Frequency draft(-01) 2022-04-19 18:45:42 +00:00
Roland Knall 27f6fd6f9a iface_lists: fix resource leak
Fixes CID 1504178 resource leak for ip_str
2022-04-19 15:37:21 +00:00
Martin Mathieson 58821b50b5 PDCP-NR: changes to make security keys work better 2022-04-19 15:13:51 +00:00
John Thacker 371b52120b ipp: Use proto_tree_get_parent
It's a little cleaner to use the API to do the same thing, in case
something changes internally.
2022-04-19 13:19:39 +00:00
Andoni Diaz de Cerio d2335dd414 XML: Adding new 3GPP Mission Critical XML media types
Some 3GPP MCS XML media types were not decoded correctly as XML
2022-04-19 12:52:47 +00:00
Moshe Kaplan 8d6fbafe05 gitlab-ci: Add SAST 2022-04-19 12:52:05 +00:00
Jack Kaplan 05d33b9690 WSUG: removed extra "or".
Removed extra or to improve grammatical correctness.
2022-04-19 11:16:51 +00:00
John Thacker ea62d7d6fa hierarchy stats: Don't add text only fields to the hierarchy
Use proto_registrar_is_protocol instead of directly comparing
hfinfo->parent to -1 when determining if the field info is related
to a protocol or not.

This avoids adding the special case text only field, which does not
have a parent protocol id, to the protocol hierarchy. These fields are
merely strings on the GUI tree, not actual protocols.
2022-04-19 11:03:37 +00:00
Pascal Quantin 43828765c3 NR RRC: upgrade dissector to v16.8.0 2022-04-19 12:39:03 +02:00
Pascal Quantin 58af12cac7 LTE RRC: upgrade dissector to v16.8.0 2022-04-19 09:22:58 +00:00
Roland Knall 2d48d49524 Allow to filter interface types
Allow to only use interface types, that are allowed by the implementing applications.
2022-04-19 09:19:50 +00:00
Pascal Quantin 5c7c723feb LPP: upgrade dissector to v16.8.0 2022-04-19 10:05:41 +02:00
Gerald Combs 69b9c480fd Revert "wsutil: Use a separate "extlog" directory for Logwolf extcaps."
This reverts commit 54553de59d.

As noted in !6694, it would probably make more sense to handle this a
different way.
2022-04-18 16:46:20 -07:00
Gerald Combs fea6591b0c macOS: Add support for Sparkle 2.
Sparkle 2 deprecated the sharedUpdater singleton, so create our own
which uses Sparkle 2's updated API. Ping #18035.

Update our CMake version check.
2022-04-18 18:57:43 +00:00
naesten c8d9c6fc6a Fix tools/*-setup.sh to work with no arguments
They were checking for --help in an unusual manner that failed when
run with no arguments.

I've checked that --help works for each script, and that debian-setup.sh
actually works.

NOTE: bsd-setup.sh and rpm-setup.sh seem to have sometimes-broken
formatting, because they try to pass escape sequences to echo, which
POSIX says is implementation-defined (except on XSI-conformant systems).

These changes were mostly made using the following script, with a
manual fix in bsd-setup.sh because it isn't using "switch case".

```python
#!/bin/env python3

import sys
import re

usage_p = re.compile(r'^if \[ "\$1" = "--help" \]\nthen\n((?:\t(?:printf|echo) .*\n)*)\texit 1\nfi$',
                     re.MULTILINE)

case_p = re.compile(r'(^\tcase \$arg in$)',
                    re.MULTILINE)

root_check_p = re.compile(r'(\n# Check if the user is root(?:\n|.)*?fi\n)',
                          re.MULTILINE)

done_p = re.compile(r'(^done\n)',
                    re.MULTILINE)

def fix_setup(name: str):
    assert name.endswith('-setup.sh')

    with open(name, 'r') as fin:
        s = fin.read()

    s = usage_p.sub(r'function print_usage() {\n\1}', s)
    s = case_p.sub(r'''\1
\t\t--help)
\t\t\tprint_usage
\t\t\texit 0
\t\t\t;;''', s)

    m1 = root_check_p.search(s)
    if m1:
        root_check = m1[0]
        s = root_check_p.sub('', s)
        pos = done_p.search(s).end()  # type: ignore[union-attr]
        s = s[:pos] + root_check + s[pos:]

    with open(name, 'w') as fout:
        fout.write(s)

if __name__ == '__main__':
    for name in sys.argv[1:]:
        fix_setup(name)
```
2022-04-18 17:05:03 +00:00
João Valverde fab32ea0cb dfilter: Allow arithmetic expressions as function arguments
This allows writing moderately complex expressions, for example
a float epsilon test (#16483):

Filter: {abs(_ws.ftypes.double - 1) / max(abs(_ws.ftypes.double), abs(1))} < 0.01

Syntax tree:
 0 TEST_LT:
   1 OP_DIVIDE:
     2 FUNCTION(abs#1):
       3 OP_SUBTRACT:
         4 FIELD(_ws.ftypes.double)
         4 FVALUE(1 <FT_DOUBLE>)
     2 FUNCTION(max#2):
       3 FUNCTION(abs#1):
         4 FIELD(_ws.ftypes.double)
       3 FUNCTION(abs#1):
         4 FVALUE(1 <FT_DOUBLE>)
   1 FVALUE(0.01 <FT_DOUBLE>)

Instructions:
00000 READ_TREE		_ws.ftypes.double -> reg#1
00001 IF_FALSE_GOTO	3
00002 SUBRACT		reg#1 - 1 <FT_DOUBLE> -> reg#2
00003 STACK_PUSH	reg#2
00004 CALL_FUNCTION	abs(reg#2) -> reg#0
00005 STACK_POP	1
00006 IF_FALSE_GOTO	24
00007 READ_TREE		_ws.ftypes.double -> reg#1
00008 IF_FALSE_GOTO	9
00009 STACK_PUSH	reg#1
00010 CALL_FUNCTION	abs(reg#1) -> reg#4
00011 STACK_POP	1
00012 IF_FALSE_GOTO	13
00013 STACK_PUSH	reg#4
00014 STACK_PUSH	1 <FT_DOUBLE>
00015 CALL_FUNCTION	abs(1 <FT_DOUBLE>) -> reg#5
00016 STACK_POP	1
00017 IF_FALSE_GOTO	18
00018 STACK_PUSH	reg#5
00019 CALL_FUNCTION	max(reg#5, reg#4) -> reg#3
00020 STACK_POP	2
00021 IF_FALSE_GOTO	24
00022 DIVIDE		reg#0 / reg#3 -> reg#6
00023 ANY_LT		reg#6 < 0.01 <FT_DOUBLE>
00024 RETURN

We now use a stack to pass arguments to the function. The
stack is implemented as a list of lists (list of registers).
Arguments may still be non-existent to functions (this is
a feature). Functions must check for nil arguments (NULL lists)
and handle that case.

It's somewhat complicated to allow literal values and test compatibility
for different types, both because of lack of type information with
unparsed/literal and also because it is an underdeveloped area in the
code. In my limited testing it was good enough and useful, further
enhancements are left for future work.
2022-04-18 17:10:31 +01:00
João Valverde 92c1519dfe dfilter: Add float multiplication/division 2022-04-18 17:09:05 +01:00
João Valverde eb2a9889c3 dfilter: Add abs() function
Add an absolute value function for ftypes.
2022-04-18 17:09:00 +01:00