commit 3f499ff3e7
Author: Gerald Combs <gerald@wireshark.org>
Date:   Tue May 12 14:34:54 2026 -0700

    Build: 4.6.6 [skip ci]

commit 526cad7204
Author: John Thacker <johnthacker@gmail.com>
Date:   Mon May 18 22:29:37 2026 -0400

    Kafka: Eliminate signed overflow UB

    Separate the tvb_get_ptr call into a separate instruction line,
    because that function will throw an exception if
    offset + 4 + length overflows, and thus if 4 + length overflows.
    The order of the parameters in proto_tree_add_... is wrong for
    preventing overflow here as a single statement.

    Use tvb_get_ntohil instead of tvb_get_ntohl and casting for retrieving
    a signed integer. Fix the returned values of the offset pointers (note
    these are never used and could be probably removed.)

    Similarly prevent possible signed overflow in the KIP-482 compact
    coding, although we don't have an example test case yet.

    OSS-Fuzz Issue 448035023

    (cherry picked from commit b3e8fcf3a7948853de023e942831ff6807751560)

    Co-authored-by: John Thacker <johnthacker@gmail.com>

commit 225b32c125
Author: Gerald Combs <gerald@wireshark.org>
Date:   Tue May 12 14:34:54 2026 -0700

    Prep for 4.6.6 [skip ci]

commit 413b1c57c0
Author: John Thacker <johnthacker@gmail.com>
Date:   Mon May 18 09:08:04 2026 -0400

    SAP HDB: Don't go backwards on a negative option length

    The option length is apparently a signed 16-bit integer.
    Don't go backwards if it's negative.

    (backported from e9a06b6020e9a22737b4bae595be12ce12020d33)

    Fix #21259 (note the other checks catch this so I'm not sure there's
    an actual infinite loop, but it might be possible to craft one.)

    AI-Assisted: no

commit b5fb875b88
Author: John Thacker <johnthacker@gmail.com>
Date:   Mon May 18 09:33:44 2026 -0400

    Update nl80211 generation tool source URL

    With recent changes to the kernel.org to combat burdensome
    AI web scrapers [1], grabbing latest nl80211.h constants
    from the existing URL generates a HTTP 403 URL forbidden
    error. Switch to GitHub mirror which does not generate same
    error.

    [1] https://social.kernel.org/notice/Asir7LiPevX6XcEVJQ

    (cherry picked from commit 74d9da4edaadd0ee4dfd4d25a3e98a98b10612f3)

    Co-authored-by: Alex Gavin <a_gavin@icloud.com>

commit a5b8eac6b3
Author: Gerald Combs <gerald@wireshark.org>
Date:   Sun May 17 17:02:50 2026 -0700

    GitLab CI: Use a non-conflicting environment variable name

    As the rclone documentation says,

    "Every option in rclone can have its default set by environment variable."

    This includes RCLONE_CONFIG, which is apparently used to set the default
    configuration file. Use WS_RCLONE_REMOTE_OPTS to configure our remote,
    and switch back to using it to configure rclone on Windows.

    (cherry picked from commit 74d8e8f326bc306ce6db28d687bb010694f88565)

commit 3c2192ef22
Author: Gerald Combs <gerald@wireshark.org>
Date:   Fri May 15 16:18:52 2026 -0700

    GitLab CI: Switch the Windows package jobs to rclone

    Backport 4653e8f0f2 and subsequent commits from master.

    AI-Assisted: no

    (cherry picked from commit 4653e8f0f25301f8a77474c0df072e5000c0106d)

    Conflicts:
            .gitlab-ci.yml

commit e929020f16
Author: Gerald Combs <gerald@wireshark.org>
Date:   Sun May 17 10:17:54 2026 +0000

    [Automatic update for 2026-05-17]

    Update manuf, services enterprise numbers, translations, and other items.

commit 56b3ea28f9
Author: Stig Bjørlykke <stig@bjorlykke.org>
Date:   Sat May 16 13:36:48 2026 +0000

    wslua: Fix FileHandler supported_comment_types loops

    Fix the iterators in FileHandler supported_comment_types for-loops.

    AI-Assisted: no

    (cherry picked from commit 9b4ca93185a16e5c4351a89f2aa01f53a55db7ec)

    Co-authored-by: Stig Bjørlykke <stig@bjorlykke.org>

commit 06d4fe619e
Author: John Thacker <johnthacker@gmail.com>
Date:   Thu May 14 19:11:20 2026 -0400

    Qt: Export Objects: Move after retap cleanup to endRetapPackets

    Otherwise, if the dialog is closed before tapping finishes, already
    freed memory can be accessed and there can be segfaults. This is
    why this exists in WiresharkDialog, it fires after receiving the
    signal.

    AI-Assisted: no

    (cherry picked from commit 06309b952e8f710364d26d0bfc63d3f696478385)

    Co-authored-by: John Thacker <johnthacker@gmail.com>

commit 74fb8a1d5c
Author: Jaap Keuter <jaap.keuter@xs4all.nl>
Date:   Thu May 14 22:32:59 2026 +0200

    Bump NPcap version to 1.88

commit 48c7255282
Author: Jaap Keuter <jaap.keuter@xs4all.nl>
Date:   Thu May 14 18:35:11 2026 +0000

    Docs: at least make a start with welcome page help

    Add the minimum infrastructure to offer help for the welcome page
    preferences.

    AI-Assisted: no

    (cherry picked from commit 52c43b104a1960a6df85119e9f7297aa82fc34a3)

    Co-authored-by: Jaap Keuter <jaap.keuter@xs4all.nl>

commit ebef9e1545
Author: Jaap Keuter <jaap.keuter@xs4all.nl>
Date:   Thu May 14 07:16:56 2026 +0000

    PFCP: name corrections

    (cherry picked from commit 0e7cdd6743852a00685037daefd90b1caa2f3f37)

    Co-authored-by: Joakim Karlsson <oakimk@gmail.com>

commit d5d2404ffd
Author: Jaap Keuter <jaap.keuter@xs4all.nl>
Date:   Thu May 14 07:19:46 2026 +0000

    rawshark: Free a GString in the case of errors

    Coverity 1477614

    AI-Assisted: no

    (cherry picked from commit 7951c2395a9591545546dd5707ccd102a82efbe6)

    Co-authored-by: John Thacker <johnthacker@gmail.com>

commit 6589175fa8
Author: Jaap Keuter <jaap.keuter@xs4all.nl>
Date:   Thu May 14 07:20:33 2026 +0000

    BPv7: Perform null check before dereferencing, not after

    wscbor_require_array_size dereferences chunk always and doesn't
    change it to NULL, so this check has to be done before, not after.

    Coverity CID 1492825

    AI-Assisted: no

    (cherry picked from commit 1b78f2176077929c0f6fbdb4800458469b9d4d4a)

    Co-authored-by: John Thacker <johnthacker@gmail.com>

commit 097fc19e77
Author: Jaap Keuter <jaap.keuter@xs4all.nl>
Date:   Thu May 14 07:21:25 2026 +0000

    RF4CE NWK: Seed sequence number is unsigned

    Fix #21253

    AI-Assisted: no

    (cherry picked from commit 3131a3a750f0b7fc79f254f4e44cce28bacd3f22)

    Co-authored-by: John Thacker <johnthacker@gmail.com>

commit 76ffa9628b
Author: Jaap Keuter <jaap.keuter@xs4all.nl>
Date:   Thu May 14 00:25:33 2026 +0200

    Qt: Implement auto advance slides toggle

    Add a preference setting to allow the user to choose to have auto-
    matic advancing slides (default), or just a stationary one.
    Still a new slides is randomly selected whenever preferences are
    applied, so the whole selection can still be shown.

commit c7cb9dfc1c
Author: John Thacker <johnthacker@gmail.com>
Date:   Wed May 13 08:58:25 2026 -0400

    Banners: Recurse and set base directory for banner images

    Similar fix as e5e5137aac05a88a425838bbdc5647153fc5b607
    and db173a5ff09feb582bf0b5d03f58772cc7b13e88 in the master
    branch, but the 4.6 branch doesn't have the CMake qrchandle
    module from c9ee675f29f1c84b4688538c974f3fa4b1398278

    AI-Assisted: no

commit 68e88ba490
Author: John Thacker <johnthacker@gmail.com>
Date:   Wed May 13 08:42:08 2026 -0400

    CMake: Don't look for Chocolatey on MSYS2

    All the packages we use are available in the MSYS2 repo. This is
    particularly bad if it finds the Chocolatey xsltproc, because then
    it won't use the stylesheets from the MSYS2 package and we also
    won't have downloaded the stylesheets from FetchArtifacts, so
    documentation will fail. (This applies especially to people who
    try building both ways.)

    AI-Assisted: no

    (cherry picked from commit 08023890269d603a65af5ab334fe53b4261edee2)

    Co-authored-by: John Thacker <johnthacker@gmail.com>

commit 5060c5a9a5
Author: John Thacker <johnthacker@gmail.com>
Date:   Tue May 12 20:11:43 2026 -0400

    Remove unused variable 'newly_displayed_packets'

    Its use was removed in f210edea but the variable itself was never removed.

    Ping #20727

    (cherry picked from commit a5a1171b72c5cd959840e3278cf6a121ea618738)

    Co-authored-by: Holger Hoffstätte <holger@applied-asynchrony.com>

commit 4679f4e144
Author: Gerald Combs <gerald@wireshark.org>
Date:   Thu May 7 09:53:13 2026 -0700

    CMake: Update libgcrypt to 1.12.2, second try

    Upgrade to 1.12.2, this time with Gabriel Potter's FreeLibrary patch
    from !24787.

    AI-Assisted: no
    (cherry picked from commit 61ce51994400cb34c064586491f980c288731780)

    Conflicts:
            cmake/modules/FetchArtifacts.cmake

commit 9699b9fd07
Author: Jaap Keuter <jaap.keuter@xs4all.nl>
Date:   Mon May 11 11:24:58 2026 +0000

    GDSDB: Fix rounding up

    The align to 4 bytes function as currently written rounds up numbers
    already divisible by 4 to the next higher power. This is incorrect
    for this protocol, as demonstrated by the file in #3749, which dissects
    without malformed packets after this change.

    AI-Assisted: no

    (cherry picked from commit 16ee4938cd244bbbcfc006ccf152fd303002aa3d)

    Co-authored-by: John Thacker <johnthacker@gmail.com>

commit 0f03ce2919
Author: Jaap Keuter <jaap.keuter@xs4all.nl>
Date:   Sun May 10 18:57:45 2026 +0000

    Qt: Various slide fixes

    Learn card: point to our Wiki, sort user documentation first.

    Slides: point to the history chapter in the user documentation.

    Fix schema description of URL.

    Use 8 seconds as default interval throughout.

    Allow full height for seasonal slide body.

    Adjust documentation.

    AI-Assisted: no

    (cherry picked from commit 74c491b0b9c90c37ba338ae7462fc8bde96be852)

    Co-authored-by: Jaap Keuter <jaap.keuter@xs4all.nl>

commit 6b739ea629
Author: John Thacker <johnthacker@gmail.com>
Date:   Sun May 10 12:05:27 2026 -0400

    packaging: NSIS: remember installed components

    Write a registry key for each component whether it was selected
    or not, and check it (before uninstall, which erases the registry
    keys) and default to installing it or not the next time depending
    on whether if it was selected. If the registry key doesn't exist
    (a new install, or an upgrade from an earlier version, or the
    WiX installer for now), use the default.

    The .onInit macro has to be moved lower down after the sections
    are defined, so break out the platform check part into a separate
    macro.

    This has been tested and also works on silent install to preserve
    the configuration.

    This doesn't work when switching between the WiX and NSIS
    installers, because the former doesn't write the keys (yet?)

    It seems less important to do this for Stratoshark, because the
    extcaps are all installed by default, but it is also implemented.

    Fix #18925

    AI-Assisted: no

    (cherry picked from commit 5f7dc67e14b04340899ec81ff8422083be005edd)

    Co-authored-by: John Thacker <johnthacker@gmail.com>

commit 1190b33c92
Author: John Thacker <johnthacker@gmail.com>
Date:   Sun May 10 11:15:28 2026 -0400

    packaging: Fix comments referring to resources

    The "image" directory was renamed to "resources" in
    commit e482b375f2351449763b9cc4421eb80f943e3cb3.
    Update the comments in the NSIS and WIX packaging version
    prerequisites.

    (cherry picked from commit 8bf3fc79fed44adf9bb73ce3531154ecbd2c0e12)

    Co-authored-by: John Thacker <johnthacker@gmail.com>

commit 9c3e177aa2
Author: John Thacker <johnthacker@gmail.com>
Date:   Sun May 10 11:14:45 2026 -0400

    NSIS: uninstall removes global plugins

    (cherry picked from commit 6151c6d56721cedb3058bf8c31e849bd696f0358)

    7a936a86 NSIS: uninstall removes global plugins

    Co-authored-by: Chuck Craft <bubbasnmp@gmail.com>

commit 26e0d59cd8
Author: Gerald Combs <gerald@wireshark.org>
Date:   Sun May 10 10:18:13 2026 +0000

    [Automatic update for 2026-05-10]

    Update manuf, services enterprise numbers, translations, and other items.

commit 20f87bb028
Author: John Thacker <johnthacker@gmail.com>
Date:   Sat May 9 14:51:29 2026 -0400

    SIP: Fix a possibility of a crash in follow conv filter with sharkd

    Commit e75e1fb580f3a496309ae1d65c1865fa98262ec5 added the ability for
    the follow conversation filters to be built out of the epan_dissect_t,
    instead of just the packet_info it contains, and had the SIP dissector
    use the proto_tree information. Unfortunately, despite an update in
    9778cc82207520547e22c39f11ca3c1ac52c8aea, it's still possible for the
    dissection to have occurred with a NULL tree, and functions like
    proto_find_first_finfo will crash in that case.

    It's possible that this entire approach doesn't work, and information
    for follow filters should be placed in proto data (file or packet
    scoped) for this purpose; alternatively, sharkd and other follows
    of the follow_conv_filter functions would need to guarantee a non-NULL
    tree before calling them.

    AI-Assisted: no

    (cherry picked from commit 8ac1be08cfdf14feb7098a04ac9ecd038d37d2ff)

    Co-authored-by: John Thacker <johnthacker@gmail.com>

commit a82ba827a1
Author: Gerald Combs <gerald@wireshark.org>
Date:   Thu May 7 17:07:14 2026 -0700

    docs: Update the sharkd man page admonition

    Sharkd shouldn't be exposed to any untrusted user.

    AI-Assisted: no
    (cherry picked from commit 9ead72497968d76227a797b7b6d1db8947fdb867)

commit 2685398d6a
Author: John Thacker <johnthacker@gmail.com>
Date:   Thu May 7 21:31:11 2026 -0400

    ROHC: Fix handing of uncompressed profile with large CID

    There's an off-by-one in how tvb_captured_length_remaining is
    used. One extra octet, representing the first octet of the packet,
    should be added.

    In the normal case, this results in the packet passed to the IP
    dissector being one octet short. In the edge case, this results in
    writing one octet to a NULL pointer.

    Fix #21243

    AI-Assisted: no

    (cherry picked from commit 6f0cf1551dcc81ad92508bf8ccaf51af8e1512f9)

    Co-authored-by: John Thacker <johnthacker@gmail.com>

commit b9917e5073
Author: Jaap Keuter <jaap.keuter@xs4all.nl>
Date:   Fri May 8 06:28:36 2026 +0000

    BACApp: Text fix

    Fixes #21246

    AI-Assisted: no

    (cherry picked from commit f7d52d1fb0ecbac262d8e89ba3c9f65de177637c)

    Co-authored-by: Jaap Keuter <jaap.keuter@xs4all.nl>

commit 2a96b20202
Author: Gerald Combs <gerald@wireshark.org>
Date:   Thu May 7 12:02:23 2026 -0700

    CMake: FetchArtifacts updates

    Put our arm64 and x64 sections in alphabetical order.

    AI-Assisted: no
    (cherry picked from commit dbfcef10fda245a04e8ab6c413c6a9409afecfe2)

    Conflicts:
            cmake/modules/FetchArtifacts.cmake

commit b2b2e8d30a
Author: Gerald Combs <gerald@wireshark.org>
Date:   Tue May 5 12:01:18 2026 -0700

    GitLab CI: Start using rclone

    AI-Assisted: no
    (cherry picked from commit b2fe6e15489d92757274e54c58c7d78a43b3c67a)

    Conflicts:
            .gitlab-ci.yml

commit 9e5783fa0e
Author: John Thacker <johnthacker@gmail.com>
Date:   Tue May 5 07:26:22 2026 -0400

    rtps-virtual-transport: Initialize the rtpsvt_data struct

    It appears that in RTPS-VT that some of the parameters, such as
    direction, are mandatory. If they are missing, what should the
    dissector do? Should it use a default value or not pass the
    information onto RTPS-PROC?

    Fix #21240

    AI-Assisted: no

    (cherry picked from commit badcc16cfcc28acf9e326ea84822739c712a52f9)

    Co-authored-by: John Thacker <johnthacker@gmail.com>

commit de1a6f0d2a
Author: John Thacker <johnthacker@gmail.com>
Date:   Mon May 4 09:32:05 2026 -0400

    GitLab CI: Fix Fedora build

    cmake3 was necessary during the CMake 2 to 3 transition. The just
    released Fedora 44 has CMake 4 only, which builds fine, and on all
    at all recent Fedora, cmake points to CMake 3, not 2.

    AI-Assisted: no

    (cherry picked from commit 5e79628c7e4b82ecc6aa93d9678aa8417edd5739)

    Co-authored-by: John Thacker <johnthacker@gmail.com>

commit 4a06b7a3ac
Author: John Thacker <johnthacker@gmail.com>
Date:   Mon May 4 09:09:33 2026 -0400

    epan: Fix signed_time_msecs_to_str for INT32_MIN

    C integer division and remainder is defined since C99 to always round
    towards towards zero, and C++11 adopted this, so for what we want in
    order to produce a string (the seconds part with the appropriate sign
    but the fractional part unsigned), and to handle the edge case of INT32_MIN
    correctly, we can divide as normal and then negate the remainder.
    This is the same as the current implementation for all values other
    than INT32_MIN for time_val.

    The current implementation for an time_val of INT32_MIN produces
    2,147,483 for the dividend and -648 for msecs, then cast to
    4,294,966,648. (That is with -fwrapv/-fno-strict-overflow; otherwise
    it's UB and all bets are off; it's quite possible that msecs will
    be set to -330641784 under a standard optimization assuming overflow
    can never happen. On the other hand, in certain cases clang will
    actually give the correct answer without wrapping turned on, but
    it can change depending on other surrounding statements.)
    This is because -INT32_MIN is still negative; -INT32_MIN == INT32_MIN.
    This implementation produces -2,147,483 and 648, respectively, as
    desired.

    OSS-Fuzz 494034581

    AI-Assisted: no

    (cherry picked from commit ef0e6f7790257ec470017bf81a4ba92bbe744c41)

    Co-authored-by: John Thacker <johnthacker@gmail.com>

commit 15da59e397
Author: Jaap Keuter <jaap.keuter@xs4all.nl>
Date:   Mon May 4 04:48:42 2026 +0000

    recent: Fix persistence of sidebar recent prefs

    The sidebar prefs are in recent common, not the per-profile recent
    file, so the defaults need to be set before reading the former, not
    just before the reading the latter. Doing the latter causes the
    preferences to be set to their default after they've been read from
    the recent common file, so, e.g., the sidebar always resets to
    being visible.

    AI-Assisted: no

    (cherry picked from commit a04f6c86eda7755f1bca3eb2606351c7bf5f2031)

    Co-authored-by: John Thacker <johnthacker@gmail.com>

commit 8ab6e0ba14
Author: John Thacker <johnthacker@gmail.com>
Date:   Sun May 3 10:10:44 2026 -0400

    Qt: Backport preference dialog changes for Welcome Page

    Backport 7f1a0f02972730432564cf01a1a7a91190e9b64d changes that
    concern the preference model and preference dialog.

    AI-Assisted: no

commit 25ef2c3424
Author: John Thacker <johnthacker@gmail.com>
Date:   Sun May 3 12:36:49 2026 -0400

    Qt: Consolidate and fix mainApplication pref handling

    There's a few prefs that when changed require reactions at the main application
    level. prefs.gui_color_scheme, prefs.gui_font_name and
    prefs.tap_update_interval.

    For the first, ColorUtils::setScheme is always called after the pref is
    changed by before the mainApp signal colorsChanged is emitted. Call
    ColorUtils::setScheme in the mainApp before emitting the signal instead
    of in several places.

    For the font name, setMonospaceFont is always called when preferences
    are changed, so call it in the mainApp before emitting
    preferencesChanged. For the tap update timer, the interval *should*
    always be changed when preferences are changed, but currently it's only
    called when switching to a new profile (not even at startup). Fix that.

    AI-Assisted: no

    (cherry picked from commit c79060df0fb41e6b7af8de14c0100eaeca8c683d)

    Co-authored-by: John Thacker <johnthacker@gmail.com>

commit 8db53fb400
Author: Gerald Combs <gerald@wireshark.org>
Date:   Sun May 3 10:18:26 2026 +0000

    [Automatic update for 2026-05-03]

    Update manuf, services enterprise numbers, translations, and other items.

commit e84b78a250
Author: John Thacker <johnthacker@gmail.com>
Date:   Sat May 2 21:29:32 2026 -0400

    Resources: Compress the Welcome banner PNGs

    Losslessly compress the welcome banner PNGs with tools/compress-pngs.py

    Fix #21233

    AI-Assisted: no

    (cherry picked from commit 8669d6ee4bbbf43bd729ddad9f429fd5d074a936)

    Co-authored-by: John Thacker <johnthacker@gmail.com>

commit 0041cb3083
Author: John Thacker <johnthacker@gmail.com>
Date:   Fri May 1 09:03:51 2026 -0400

    GitLab CI: Run the Qt5 job on 4.6 on merge requests that change Qt

    Since the 4.6 branch still supports Qt 5 for more platforms, and doesn't
    require C++14, we need to run the Qt 5 job on cherry-picks and backports
    that run on master but might not run on 4.6 and earlier.

    AI-Assisted: no

commit 1da3138354
Author: John Thacker <johnthacker@gmail.com>
Date:   Wed Jan 21 08:59:05 2026 -0500

    CMake: Require C++14

    We haven't supported any OS or platform with a compiler that doesn't
    support C++14 since 3.6. Qt 6 and stratoshark require C++17. To make
    development and backporting easier, narrow the difference between what
    is supported in the legacy Qt 5 build Qt 6.

    AI-Assisted: no

    (backported from 88631d7dc3160e9c9b2fefe3b8a56ad8f370c840)

commit 9f93910fba
Author: John Thacker <johnthacker@gmail.com>
Date:   Fri May 1 17:12:43 2026 -0400

    MACsec: Fix size check

    Closes #21235

    AI-Assisted: no

    (cherry picked from commit 4a597d797cef5b1e256056f6e0feb15fcf3a56e0)

    Co-authored-by: Jaap Keuter <jaap.keuter@xs4all.nl>

commit 80bd97a57c
Author: Gerald Combs <gerald@wireshark.org>
Date:   Fri May 1 13:57:31 2026 -0700

    CMake: Fix a copy+paste error

    AI-Assisted: no
    (cherry picked from commit 601c3244bb9211a599ae68d5a086a04af2c91b8b)

commit 580a4b0372
Author: Gerald Combs <gerald@wireshark.org>
Date:   Fri May 1 10:52:39 2026 -0700

    CMake: Update GnuTLS to 3.8.13 and libgcrypt to 1.12.2

    AI-Assisted: no
    (cherry picked from commit 44b886ac28d739465afb858c6bf66d520a9ac64c)

commit a471b993eb
Author: John Thacker <johnthacker@gmail.com>
Date:   Fri May 1 12:47:03 2026 -0400

    packaging: Skip icuuc.dll on PortableApps installer

    Ping #21237

    AI-Assisted: no

    (cherry picked from commit 23735c4857eb7070d684f4fecf0706dc9bcdcbd4)

    Co-authored-by: John Thacker <johnthacker@gmail.com>

commit 1730064384
Author: John Thacker <johnthacker@gmail.com>
Date:   Fri May 1 11:54:30 2026 -0400

    CMake: Add sharkd HTML page to be installed in one more place

    Fixup aab6a4cc574dac8540e48ec9ce23a9f18de4b31f (the Windows packages
    need this apparently.)

    AI-Assisted: no

    (cherry picked from commit 7ff76b099be845d81e2d59cd072dfcad21609ffd)

    Co-authored-by: John Thacker <johnthacker@gmail.com>

commit 402bb3cf3e
Author: John Thacker <johnthacker@gmail.com>
Date:   Fri May 1 11:22:10 2026 -0400

    packaging: Windows: Don't install icuuc.dll

    Qt 6.10.0 added support for obtaining codecs on Windows via the system
    custom version of ICU, specifically from the ICU "common" library,
    icuuc.dll, available in Windows starting with Windows 10 version 1703.[1]
    Windows changed the ICU library DLLs somewhat in version 1903, producing
    a new icu.dll which combines icuuc.dll and icuin.dll, reducing the other
    two into wrappers around the combined library.[2] Qt's windeployqt, in
    versions prior to 6.11.1, will copy system DLLs upon which Qt depends
    into the application library from the build machine, including icuuc.dll
    but not icu.dll (since only the former is technically necessary, even
    though now it is a wrapper which points to the latter.)[3] DLLs in the
    application directory take preference over the system libraries; the
    result is worse than if both icuuc.dll and icu.dll from newer versions
    were installed (this would and does work), as the newer icuuc.dll refers
    to a icu.dll that does not exist on older Windows installs. This means
    that Windows 10 version 1809 (which includes Windows Server 2019 and
    certain Windows 10 LTSC versions, both of which are still supported)
    will not run, producing a "ICU.dll is not available" message.

    The problem can be solved either by also installing the combined library
    from the later version of Windows used as the build host or by excluding
    the build system copy of icuuc.dll and letting the host system version work.
    (Older versions of Windows 10 that lack icuuc.dll are out of support and
    not of concern.)

    This is the latter approach, excluding icuuc.dll from the NSIS and WiX
    packages. (This is probably not necessary on MSYS2 or other MinGW
    compilations, as they don't copy the library or indeed provide the
    support.[5])

    1 - https://qt-project.atlassian.net/browse/QTBUG-132056
    2 - https://learn.microsoft.com/en-us/windows/win32/intl/international-components-for-unicode--icu-#history-of-changes-to-the-icu-library-in-windows
    3 - https://qt-project.atlassian.net/browse/QTBUG-142131
    4 - https://qt-project.atlassian.net/browse/QTBUG-134540
    5 - https://qt-project.atlassian.net/browse/QTBUG-140865

    Fix #21237

    AI-Assisted: no

    (cherry picked from commit baf8624ed11b5b66bee281b1817509d56977ad2f)

    Co-authored-by: John Thacker <johnthacker@gmail.com>

commit 6f6b480667
Author: Gerald Combs <gerald@wireshark.org>
Date:   Thu Apr 30 12:45:57 2026 -0700

    WiX: Install the sharkd man page

    AI-Assisted: no
    (cherry picked from commit 1c693e3d343e2741cfac4bd0a70ab29a1a9dfb04)

commit 2dfd050fdd
Author: Gerald Combs <gerald@wireshark.org>
Date:   Mon Apr 27 16:55:32 2026 -0700

    docs: Add an initial sharkd man page

    Add an initial man page for sharkd. The bulk of the text was generated
    using Claude, and I corrected some errors and omissions.

    Ping #19562

    AI-Assisted: yes [Claude Opus 4.6]
    (cherry picked from commit aab6a4cc574dac8540e48ec9ce23a9f18de4b31f)

    Conflicts:
            doc/CMakeLists.txt

commit d7d606892c
Author: John Thacker <johnthacker@gmail.com>
Date:   Thu Apr 30 22:21:18 2026 -0400

    wiretap: JSON: Reject degenerate cases (zero tokens needed)

    When json_parse_len is passed a NULL array of tokens, if it says it
    needs 0 tokens to parse a value, that means that it's a degenerate
    case, e.g., no characters other than whitespace before the first
    NUL. That really shouldn't be identified as JSON; it might be some
    binary format.

    AI-Assisted: no
    (backported from commit b96777df4377d6129716d6499d75035020457582)

commit e0f4a73f63
Author: John Thacker <johnthacker@gmail.com>
Date:   Fri May 1 07:00:48 2026 -0400

    VeriWave: Fix finding the signature

    Have the find_signature routine return a bool, instead of returning the
    original offset on failure, so that the caller doesn't have to check the
    returned offset to see if it has the magic byte. This also allows
    returning false when the record isn't long enough to check the expected
    signature offset, without the caller then trying to dereference it
    anyway.

    It doesn't appear that this causes a buffer overrun because of how
    the Buffer is initialized to be at least 2048 bytes always, but it can
    be a read of uninitialized data.

    Fix #16460. Fix #16461.

    AI-Assisted: no

    (cherry picked from commit d8242c14feee454467e4a1dda1557001a9f08b92)

    Co-authored-by: John Thacker <johnthacker@gmail.com>

commit d2fa384a8f
Author: Gerald Combs <gerald@wireshark.org>
Date:   Wed Apr 29 18:21:31 2026 -0700

    Version: 4.6.5 → 4.6.6 [skip ci]
