Version in base suite: 4.4.14-0+deb13u1 Base version: wireshark_4.4.14-0+deb13u1 Target version: wireshark_4.4.15-0+deb13u1 Base file: /srv/ftp-master.debian.org/ftp/pool/main/w/wireshark/wireshark_4.4.14-0+deb13u1.dsc Target file: /srv/ftp-master.debian.org/policy/pool/main/w/wireshark/wireshark_4.4.15-0+deb13u1.dsc /srv/release.debian.org/tmp/dNWLxMgo3I/wireshark-4.4.15/doc/wsug_src/images/ws-enabled-protocols.png |binary wireshark-4.4.15/.github/workflows/macos.yml | 8 wireshark-4.4.15/.github/workflows/msys2.yml | 39 wireshark-4.4.15/.github/workflows/options.yml | 4 wireshark-4.4.15/.github/workflows/ubuntu.yml | 8 wireshark-4.4.15/.github/workflows/windows.yml | 19 wireshark-4.4.15/.gitlab-ci.yml | 35 wireshark-4.4.15/AUTHORS | 1 wireshark-4.4.15/CMakeLists.txt | 3 wireshark-4.4.15/ChangeLog | 1886 ++++++++-- wireshark-4.4.15/debian/changelog | 48 wireshark-4.4.15/debian/gbp.conf | 4 wireshark-4.4.15/debian/libwireshark18.symbols | 2 wireshark-4.4.15/debian/libwsutil16.symbols | 3 wireshark-4.4.15/debian/watch | 2 wireshark-4.4.15/doc/attributes.adoc | 2 wireshark-4.4.15/doc/release-notes.adoc | 589 ++- wireshark-4.4.15/doc/wsdg_src/wsdg_quick_setup.adoc | 2 wireshark-4.4.15/doc/wsug_src/capinfos-h.txt | 2 wireshark-4.4.15/doc/wsug_src/dumpcap-h.txt | 2 wireshark-4.4.15/doc/wsug_src/editcap-h.txt | 2 wireshark-4.4.15/doc/wsug_src/mergecap-h.txt | 2 wireshark-4.4.15/doc/wsug_src/rawshark-h.txt | 2 wireshark-4.4.15/doc/wsug_src/reordercap-h.txt | 2 wireshark-4.4.15/doc/wsug_src/text2pcap-h.txt | 2 wireshark-4.4.15/doc/wsug_src/tshark-h.txt | 2 wireshark-4.4.15/doc/wsug_src/wsug_customize.adoc | 19 wireshark-4.4.15/dumpcap.c | 115 wireshark-4.4.15/editcap.c | 26 wireshark-4.4.15/epan/CMakeLists.txt | 2 wireshark-4.4.15/epan/dissectors/asn1/atn-ulcs/packet-atn-ulcs-template.c | 8 wireshark-4.4.15/epan/dissectors/asn1/charging_ase/charging_ase.cnf | 2 wireshark-4.4.15/epan/dissectors/asn1/idmp/idmp.cnf | 33 wireshark-4.4.15/epan/dissectors/packet-afp.c | 2 wireshark-4.4.15/epan/dissectors/packet-ain.c | 21 wireshark-4.4.15/epan/dissectors/packet-ansi_tcap.c | 15 wireshark-4.4.15/epan/dissectors/packet-atn-ulcs.c | 23 wireshark-4.4.15/epan/dissectors/packet-beep.c | 45 wireshark-4.4.15/epan/dissectors/packet-bt-dht.c | 17 wireshark-4.4.15/epan/dissectors/packet-bthci_iso.c | 13 wireshark-4.4.15/epan/dissectors/packet-camel.c | 27 wireshark-4.4.15/epan/dissectors/packet-charging_ase.c | 11 wireshark-4.4.15/epan/dissectors/packet-cmip.c | 114 wireshark-4.4.15/epan/dissectors/packet-cmp.c | 6 wireshark-4.4.15/epan/dissectors/packet-dap.c | 48 wireshark-4.4.15/epan/dissectors/packet-dcp-etsi.c | 44 wireshark-4.4.15/epan/dissectors/packet-disp.c | 12 wireshark-4.4.15/epan/dissectors/packet-e1ap.c | 39 wireshark-4.4.15/epan/dissectors/packet-e2ap.c | 42 wireshark-4.4.15/epan/dissectors/packet-epl-profile-parser.c | 2 wireshark-4.4.15/epan/dissectors/packet-f1ap.c | 39 wireshark-4.4.15/epan/dissectors/packet-fcswils.c | 5 wireshark-4.4.15/epan/dissectors/packet-ftam.c | 33 wireshark-4.4.15/epan/dissectors/packet-geonw.c | 11 wireshark-4.4.15/epan/dissectors/packet-glow.c | 18 wireshark-4.4.15/epan/dissectors/packet-goose.c | 6 wireshark-4.4.15/epan/dissectors/packet-gprscdr.c | 9 wireshark-4.4.15/epan/dissectors/packet-gsm_a_rp.c | 6 wireshark-4.4.15/epan/dissectors/packet-gsm_map.c | 9 wireshark-4.4.15/epan/dissectors/packet-h225.c | 12 wireshark-4.4.15/epan/dissectors/packet-h245.c | 42 wireshark-4.4.15/epan/dissectors/packet-h248.c | 6 wireshark-4.4.15/epan/dissectors/packet-h450-ros.c | 21 wireshark-4.4.15/epan/dissectors/packet-h450.c | 9 wireshark-4.4.15/epan/dissectors/packet-hnbap.c | 39 wireshark-4.4.15/epan/dissectors/packet-http.c | 8 wireshark-4.4.15/epan/dissectors/packet-http2.c | 30 wireshark-4.4.15/epan/dissectors/packet-icmpv6.c | 14 wireshark-4.4.15/epan/dissectors/packet-idmp.c | 60 wireshark-4.4.15/epan/dissectors/packet-ieee1609dot2.c | 30 wireshark-4.4.15/epan/dissectors/packet-inap.c | 57 wireshark-4.4.15/epan/dissectors/packet-ip.c | 6 wireshark-4.4.15/epan/dissectors/packet-ipsec.c | 11 wireshark-4.4.15/epan/dissectors/packet-ipv6.c | 3 wireshark-4.4.15/epan/dissectors/packet-iso8583.c | 16 wireshark-4.4.15/epan/dissectors/packet-its.c | 24 wireshark-4.4.15/epan/dissectors/packet-kismet.c | 57 wireshark-4.4.15/epan/dissectors/packet-lcsap.c | 33 wireshark-4.4.15/epan/dissectors/packet-ldap.c | 6 wireshark-4.4.15/epan/dissectors/packet-lppa.c | 39 wireshark-4.4.15/epan/dissectors/packet-m2ap.c | 39 wireshark-4.4.15/epan/dissectors/packet-m3ap.c | 39 wireshark-4.4.15/epan/dissectors/packet-mbim.c | 5 wireshark-4.4.15/epan/dissectors/packet-mms.c | 24 wireshark-4.4.15/epan/dissectors/packet-monero.c | 6 wireshark-4.4.15/epan/dissectors/packet-mysql.c | 19 wireshark-4.4.15/epan/dissectors/packet-nas_5gs.c | 2 wireshark-4.4.15/epan/dissectors/packet-nbap.c | 45 wireshark-4.4.15/epan/dissectors/packet-ngap.c | 39 wireshark-4.4.15/epan/dissectors/packet-nrppa.c | 39 wireshark-4.4.15/epan/dissectors/packet-openflow_v5.c | 77 wireshark-4.4.15/epan/dissectors/packet-openflow_v6.c | 5 wireshark-4.4.15/epan/dissectors/packet-p1.c | 33 wireshark-4.4.15/epan/dissectors/packet-p22.c | 48 wireshark-4.4.15/epan/dissectors/packet-p7.c | 72 wireshark-4.4.15/epan/dissectors/packet-pcap.c | 45 wireshark-4.4.15/epan/dissectors/packet-q932-ros.c | 21 wireshark-4.4.15/epan/dissectors/packet-qsig.c | 18 wireshark-4.4.15/epan/dissectors/packet-quic.c | 4 wireshark-4.4.15/epan/dissectors/packet-ranap.c | 57 wireshark-4.4.15/epan/dissectors/packet-rf4ce-nwk.c | 20 wireshark-4.4.15/epan/dissectors/packet-rnsap.c | 45 wireshark-4.4.15/epan/dissectors/packet-rpki-rtr.c | 16 wireshark-4.4.15/epan/dissectors/packet-rrlp.c | 9 wireshark-4.4.15/epan/dissectors/packet-rtp-midi.c | 2 wireshark-4.4.15/epan/dissectors/packet-rtps.c | 41 wireshark-4.4.15/epan/dissectors/packet-rua.c | 39 wireshark-4.4.15/epan/dissectors/packet-s1ap.c | 39 wireshark-4.4.15/epan/dissectors/packet-sabp.c | 33 wireshark-4.4.15/epan/dissectors/packet-sane.c | 20 wireshark-4.4.15/epan/dissectors/packet-sbc-ap.c | 33 wireshark-4.4.15/epan/dissectors/packet-signal-pdu.c | 10 wireshark-4.4.15/epan/dissectors/packet-smb2.c | 65 wireshark-4.4.15/epan/dissectors/packet-snort-config.c | 116 wireshark-4.4.15/epan/dissectors/packet-snort-config.h | 8 wireshark-4.4.15/epan/dissectors/packet-snort.c | 12 wireshark-4.4.15/epan/dissectors/packet-ssh.c | 3 wireshark-4.4.15/epan/dissectors/packet-uds.c | 42 wireshark-4.4.15/epan/dissectors/packet-usb-hid.c | 6 wireshark-4.4.15/epan/dissectors/packet-websocket.c | 33 wireshark-4.4.15/epan/dissectors/packet-x2ap.c | 39 wireshark-4.4.15/epan/dissectors/packet-x509ce.c | 9 wireshark-4.4.15/epan/dissectors/packet-x509if.c | 96 wireshark-4.4.15/epan/dissectors/packet-x509sat.c | 6 wireshark-4.4.15/epan/dissectors/packet-xnap.c | 39 wireshark-4.4.15/epan/dissectors/packet-z3950.c | 18 wireshark-4.4.15/epan/dissectors/packet-zbee-direct.c | 83 wireshark-4.4.15/epan/enterprises.c | 520 ++ wireshark-4.4.15/epan/manuf-data.c | 636 +++ wireshark-4.4.15/epan/packet.c | 20 wireshark-4.4.15/epan/packet.h | 16 wireshark-4.4.15/epan/services-data.c | 7 wireshark-4.4.15/epan/tvbuff_lz77.c | 2 wireshark-4.4.15/epan/tvbuff_rdp.c | 6 wireshark-4.4.15/epan/tvbuff_zlib.c | 25 wireshark-4.4.15/epan/uat_load.l | 52 wireshark-4.4.15/epan/wslua/wslua_capture_info.c | 2 wireshark-4.4.15/epan/wslua/wslua_dissector.c | 38 wireshark-4.4.15/epan/wslua/wslua_frame_info.c | 4 wireshark-4.4.15/extcap/CMakeLists.txt | 2 wireshark-4.4.15/extcap/androiddump.c | 2 wireshark-4.4.15/extcap/ssh-base.c | 6 wireshark-4.4.15/include/jtckdint.h | 26 wireshark-4.4.15/include/wireshark.h | 2 wireshark-4.4.15/include/ws_attributes.h | 11 wireshark-4.4.15/packaging/debian/changelog | 2 wireshark-4.4.15/packaging/nsis/InstallMSYS2.cmake | 2 wireshark-4.4.15/packaging/source/git-export-release.sh.in | 2 wireshark-4.4.15/plugins/codecs/amrnb/amrdecode.c | 9 wireshark-4.4.15/plugins/codecs/iLBC/iLBCdecode.c | 21 wireshark-4.4.15/plugins/codecs/sbc/sbc.c | 22 wireshark-4.4.15/resources/freedesktop/org.wireshark.Wireshark.metainfo.xml | 50 wireshark-4.4.15/sharkd.c | 33 wireshark-4.4.15/sharkd_session.c | 90 wireshark-4.4.15/tools/asn2wrs.py | 38 wireshark-4.4.15/tools/macos-setup-patches/libssh-werror.patch | 13 wireshark-4.4.15/tools/macos-setup.sh | 29 wireshark-4.4.15/tools/make-version.py | 4 wireshark-4.4.15/tools/msys2-setup.sh | 1 wireshark-4.4.15/tools/rpm-setup.sh | 6 wireshark-4.4.15/tools/update-appdata.py | 2 wireshark-4.4.15/ui/qt/models/timeline_delegate.cpp | 5 wireshark-4.4.15/ui/qt/rtp_stream_dialog.cpp | 6 wireshark-4.4.15/ui/qt/utils/wireshark_zip_helper.cpp | 8 wireshark-4.4.15/ui/qt/widgets/follow_stream_text.cpp | 6 wireshark-4.4.15/ui/text_import.c | 91 wireshark-4.4.15/wiretap/CMakeLists.txt | 2 wireshark-4.4.15/wiretap/k12.c | 40 wireshark-4.4.15/wiretap/netxray.c | 6 wireshark-4.4.15/wiretap/toshiba.c | 37 wireshark-4.4.15/wsutil/buffer.c | 2 wireshark-4.4.15/wsutil/str_util.c | 6 wireshark-4.4.15/wsutil/strtoi.c | 156 wireshark-4.4.15/wsutil/strtoi.h | 70 wireshark-4.4.15/wsutil/test_wsutil.c | 138 wireshark-4.4.15/wsutil/wmem/wmem_array.h | 6 wireshark-4.4.15/wsutil/wmem/wmem_interval_tree.h | 3 wireshark-4.4.15/wsutil/wmem/wmem_list.h | 3 wireshark-4.4.15/wsutil/wmem/wmem_map.h | 6 wireshark-4.4.15/wsutil/wmem/wmem_multimap.h | 6 wireshark-4.4.15/wsutil/wmem/wmem_strbuf.h | 12 181 files changed, 6623 insertions(+), 1222 deletions(-) dpkg-source: warning: cannot verify inline signature for /srv/release.debian.org/tmp/tmp1h2nvdju/wireshark_4.4.14-0+deb13u1.dsc: no acceptable signature found dpkg-source: warning: cannot verify inline signature for /srv/release.debian.org/tmp/tmp1h2nvdju/wireshark_4.4.15-0+deb13u1.dsc: no acceptable signature found diff -Nru wireshark-4.4.14/.github/workflows/macos.yml wireshark-4.4.15/.github/workflows/macos.yml --- wireshark-4.4.14/.github/workflows/macos.yml 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/.github/workflows/macos.yml 2026-04-29 20:10:51.000000000 +0000 @@ -8,9 +8,11 @@ runs-on: macos-latest steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 + with: + persist-credentials: false - name: Set up Python 3.11 - uses: actions/setup-python@v5 + uses: actions/setup-python@v6 with: python-version: 3.11 - name: Install deps @@ -41,7 +43,7 @@ run: ninja wireshark_dmg working-directory: build - name: Upload dmg packages - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v6 with: name: package path: build/run/*dmg diff -Nru wireshark-4.4.14/.github/workflows/msys2.yml wireshark-4.4.15/.github/workflows/msys2.yml --- wireshark-4.4.14/.github/workflows/msys2.yml 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/.github/workflows/msys2.yml 2026-04-29 20:10:51.000000000 +0000 @@ -16,19 +16,21 @@ update: true install: base-devel - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 + with: + persist-credentials: false - name: Install dependencies run: tools/msys2-setup.sh --install-all --noconfirm - name: Build run: | mkdir build && cd build - cmake -G Ninja -DFETCH_lua=Yes .. + cmake -G Ninja .. ninja ninja test ninja wireshark_nsis_prep ninja wireshark_nsis - name: Upload artifacts - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v6 with: name: nsis-installer path: build/packaging/nsis/wireshark-*-x64.exe @@ -38,16 +40,39 @@ needs: msys2-ucrt64 steps: - name: Download installer - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v7 with: name: nsis-installer path: downloads - name: Run installer working-directory: downloads run: | - Get-ChildItem -Path wireshark-*-x64.exe | ForEach-Object { - Start-Process $_.FullName -ArgumentList '/S /D=C:\Wireshark' -Wait + $ErrorActionPreference = 'Stop' + $installer = Get-ChildItem -Path . -Filter "wireshark-*-x64.exe" -File | Select-Object -First 1 + if ($null -eq $installer) { + Write-Error "Installer not found in downloads directory." + exit 1 + } + Start-Process -FilePath $installer.FullName -ArgumentList '/S', '/D=C:\Wireshark' -Wait -NoNewWindow + if (!$?) { + Write-Error "Wireshark installation failed." + exit 1 } + shell: pwsh - name: Show version - run: C:\Wireshark\wireshark.exe --version + run: | + $ErrorActionPreference = 'Stop' + if (Test-Path "C:\Wireshark\tshark.exe") { + $versionOutput = & "C:\Wireshark\tshark.exe" --version + if ($LASTEXITCODE -ne 0) { + Write-Error "Failed to retrieve TShark version." + exit $LASTEXITCODE + } + Write-Output $versionOutput + } else { + Write-Error "TShark executable not found at C:\Wireshark\tshark.exe." + exit 1 + } + shell: pwsh + diff -Nru wireshark-4.4.14/.github/workflows/options.yml wireshark-4.4.15/.github/workflows/options.yml --- wireshark-4.4.14/.github/workflows/options.yml 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/.github/workflows/options.yml 2026-04-29 20:10:51.000000000 +0000 @@ -11,7 +11,9 @@ runs-on: ubuntu-22.04 steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 + with: + persist-credentials: false - name: Install deps run: | sudo tools/debian-setup.sh --install-all ninja-build -y diff -Nru wireshark-4.4.14/.github/workflows/ubuntu.yml wireshark-4.4.15/.github/workflows/ubuntu.yml --- wireshark-4.4.14/.github/workflows/ubuntu.yml 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/.github/workflows/ubuntu.yml 2026-04-29 20:10:51.000000000 +0000 @@ -8,7 +8,9 @@ runs-on: ubuntu-22.04 steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 + with: + persist-credentials: false - name: Install deps run: sudo tools/debian-setup.sh --install-all python3-pip -y - name: Mkdir @@ -23,7 +25,7 @@ run: ninja test-programs working-directory: build - name: Set up Python 3.8 - uses: actions/setup-python@v5 + uses: actions/setup-python@v6 with: python-version: 3.8 - name: Install pytest @@ -48,7 +50,7 @@ mkdir deb mv ../*.deb deb - name: Upload deb packages - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v6 with: name: packages path: deb diff -Nru wireshark-4.4.14/.github/workflows/windows.yml wireshark-4.4.15/.github/workflows/windows.yml --- wireshark-4.4.14/.github/workflows/windows.yml 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/.github/workflows/windows.yml 2026-04-29 20:10:51.000000000 +0000 @@ -13,14 +13,11 @@ WIRESHARK_VERSION_EXTRA: -GithubActionBuild steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 + with: + persist-credentials: false - name: Choco install run: choco install -y --force --no-progress asciidoctorj xsltproc docbook-bundle nsis winflexbison3 cmake - - name: Install strawberryperl - uses: shogo82148/actions-setup-perl@v1 - with: - perl-version: '5.30' - distribution: strawberry - name: Install Qt uses: jurplel/install-qt-action@v3 with: @@ -28,11 +25,13 @@ version: 6.2.3 modules: 'qt5compat' - name: Add msbuild to PATH - uses: microsoft/setup-msbuild@v2 + uses: microsoft/setup-msbuild@v3 with: vs-version: 16.8 - name: Set MSVC command prompt - uses: ilammy/msvc-dev-cmd@v1 + uses: TheMrMilchmann/setup-msvc-dev@v4 + with: + arch: x64 - name: Mkdir run: mkdir build - name: Cmake @@ -52,7 +51,7 @@ run: cmake --build . --config RelWithDebInfo --target test-programs working-directory: build - name: Set up Python 3.8 - uses: actions/setup-python@v5 + uses: actions/setup-python@v6 with: python-version: 3.8 - name: Install pytest @@ -68,7 +67,7 @@ msbuild /m /p:Configuration=RelWithDebInfo wireshark_nsis.vcxproj working-directory: build - name: Upload Windows packages - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v6 with: name: package path: build/packaging/nsis/*exe diff -Nru wireshark-4.4.14/.gitlab-ci.yml wireshark-4.4.15/.gitlab-ci.yml --- wireshark-4.4.14/.gitlab-ci.yml 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/.gitlab-ci.yml 2026-04-29 20:10:51.000000000 +0000 @@ -281,7 +281,6 @@ rules: !reference [.if-merged] script: - ../tools/make-version.py --set-release --version-file=wireshark_version.txt .. - - ../tools/update-appdata.py - printf "\e[0Ksection_start:%s:cmake_section[collapsed=true]\r\e[0KRunning CMake" "$( date +%s)" - cmake -G Ninja $CMAKE_ARGS .. - printf "\e[0Ksection_end:%s:cmake_section\r\e[0K" "$( date +%s)" @@ -440,6 +439,8 @@ rules: !reference [.if-w-w-only-merged] tags: - wireshark-windows-x64-package + environment: + name: windows-package before_script: - $env:WIRESHARK_BASE_DIR = "C:\Development" - $env:Configuration = "RelWithDebInfo" @@ -484,6 +485,8 @@ rules: !reference [.if-w-w-only-merged] tags: - wireshark-windows-arm64-package + environment: + name: windows-package before_script: - $env:WIRESHARK_BASE_DIR = "C:\Development" - $env:Configuration = "RelWithDebInfo" @@ -538,19 +541,27 @@ rules: !reference [.if-w-w-only-merged] variables: CODE_SIGN_IDENTITY: "Wireshark Foundation" + WIRESHARK_BASE_DIR: "$CI_PROJECT_DIR/../wireshark-third-party" tags: - wireshark-macos-arm-package + environment: + name: macos-package retry: 1 before_script: - export PATH="/Library/Frameworks/Python.framework/Versions/3.13/bin:$PATH:$HOME/bin" - - python3 -m venv $CI_PROJECT_DIR/.venv + - python3 -m venv --clear $CI_PROJECT_DIR/.venv - source $CI_PROJECT_DIR/.venv/bin/activate - - pip3 install pytest pytest-xdist + - pip3 install awscli dmgbuild pyobjc-framework-Quartz pytest pytest-xdist script: - - export CMAKE_PREFIX_PATH=/usr/local/Qt-$MACOS_QT6_LTS_VERSION - # Not needed for Falco libs 0.19? - - export CXXFLAGS="-isystem /usr/local/include/falcosecurity" - - export PATH="$PATH:$HOME/bin" + - if [[ $MACOS_REINSTALL_THIRD_PARTY == true ]] ; then rm -rf "$WIRESHARK_BASE_DIR" ; fi + - if [ ! -d $WIRESHARK_BASE_DIR ] ; then mkdir $WIRESHARK_BASE_DIR ; fi + - if [ ! -d "$WIRESHARK_BASE_DIR/Qt" ] ; then mkdir "$WIRESHARK_BASE_DIR/Qt" ; fi + - if [ ! -d "$WIRESHARK_BASE_DIR/Qt/$MACOS_QT6_LTS_VERSION/macos/lib/QtCore.framework" ] ; then + pip3 install aqtinstall ; + aqt install-qt --outputdir $WIRESHARK_BASE_DIR/Qt mac desktop $MACOS_QT6_LTS_VERSION clang_64 --modules qt5compat qtmultimedia --timeout 10 ; + fi + - export CMAKE_PREFIX_PATH="$WIRESHARK_BASE_DIR/Qt/$MACOS_QT6_LTS_VERSION/macos" + # - export PATH="$PATH:$HOME/bin" - mkdir build - cd build - ../tools/make-version.py --set-release --version-file=wireshark_version.txt .. @@ -558,7 +569,7 @@ - cmake -DENABLE_CCACHE=ON -DCMAKE_APPLE_SILICON_PROCESSOR=arm64 -DCMAKE_OSX_DEPLOYMENT_TARGET=11.0 -DCMAKE_OSX_ARCHITECTURES=arm64 -DTEST_EXTRA_ARGS=--enable-release -G Ninja .. - printf "\e[0Ksection_end:%s:cmake_section\r\e[0K" "$( date +%s)" - ninja - - codesign-prep + - base64 -d < $MACOS_CODESIGN_PREP_B64 | bash - security find-identity -v -s "$CODE_SIGN_IDENTITY" - ninja wireshark_dmg - cd run @@ -592,12 +603,12 @@ CODE_SIGN_IDENTITY: "Wireshark Foundation" tags: - wireshark-macos-intel-package + environment: + name: macos-package retry: 1 script: - sudo --non-interactive sntp -s -S time.apple.com || true - export CMAKE_PREFIX_PATH=/usr/local/Qt-$MACOS_QT6_LTS_VERSION - # Not needed for Falco libs 0.19? - - export CXXFLAGS="-isystem /usr/local/include/falcosecurity" - export PATH="$PATH:$HOME/bin" - mkdir build - cd build @@ -606,7 +617,7 @@ - cmake -DENABLE_CCACHE=ON -DCMAKE_OSX_DEPLOYMENT_TARGET=11.0 -DTEST_EXTRA_ARGS=--enable-release -G Ninja .. - printf "\e[0Ksection_end:%s:cmake_section\r\e[0K" "$( date +%s)" - ninja - - codesign-prep + - base64 -d < $MACOS_CODESIGN_PREP_B64 | bash - security find-identity -v -s "$CODE_SIGN_IDENTITY" - ninja wireshark_dmg - cd run @@ -808,7 +819,7 @@ - cd build - printf "\e[0Ksection_start:%s:cmake_section[collapsed=true]\r\e[0KRunning CMake" "$( date +%s)" # We don't have an "All options" job, so build fuzzshark and tfshark here. - - cmake -DENABLE_CHECKHF_CONFLICT=on -DCMAKE_EXPORT_COMPILE_COMMANDS=on -DCMAKE_C_CLANG_TIDY=clang-tidy-$CLANG_VERSION -DCMAKE_CXX_CLANG_TIDY=clang-tidy-$CLANG_VERSION -DBUILD_fuzzshark=ON -DBUILD_tfshark=On -DBUILD_logray=ON -DENABLE_DEBUG=ON -DENABLE_CCACHE=ON -DENABLE_WERROR=ON -G Ninja .. + - cmake -DENABLE_CHECKHF_CONFLICT=on -DCMAKE_EXPORT_COMPILE_COMMANDS=on -DCMAKE_C_CLANG_TIDY=clang-tidy-$CLANG_VERSION -DCMAKE_CXX_CLANG_TIDY=clang-tidy-$CLANG_VERSION -DBUILD_fuzzshark=ON -DBUILD_tfshark=On -DENABLE_DEBUG=ON -DENABLE_CCACHE=ON -DENABLE_WERROR=ON -G Ninja .. - printf "\e[0Ksection_end:%s:cmake_section\r\e[0K" "$( date +%s)" - printf "\e[0Ksection_start:%s:asn1_section[collapsed=false]\r\e[0KRegenerating ASN.1 dissectors" "$( date +%s)" - ninja --quiet asn1 diff -Nru wireshark-4.4.14/AUTHORS wireshark-4.4.15/AUTHORS --- wireshark-4.4.14/AUTHORS 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/AUTHORS 2026-04-29 20:10:51.000000000 +0000 @@ -4472,6 +4472,7 @@ Gianluca Borello Gilbert Ramirez Gilles Dufour +Giovanni Musto Giovanni Musto Gisle Vanem Gizem Yurdagul diff -Nru wireshark-4.4.14/CMakeLists.txt wireshark-4.4.15/CMakeLists.txt --- wireshark-4.4.14/CMakeLists.txt 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/CMakeLists.txt 2026-04-29 20:10:51.000000000 +0000 @@ -57,7 +57,7 @@ # Updated by tools/make-version.py set(PROJECT_MAJOR_VERSION 4) set(PROJECT_MINOR_VERSION 4) -set(PROJECT_PATCH_VERSION 14) +set(PROJECT_PATCH_VERSION 15) set(PROJECT_BUILD_VERSION 0) set(PROJECT_VERSION_EXTENSION "") @@ -4127,6 +4127,7 @@ cfile.h cli_main.h file.h + include/jtckdint.h include/ws_attributes.h include/ws_codepoints.h include/ws_compiler_tests.h diff -Nru wireshark-4.4.14/ChangeLog wireshark-4.4.15/ChangeLog --- wireshark-4.4.14/ChangeLog 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/ChangeLog 2026-04-29 20:10:51.000000000 +0000 @@ -1,487 +1,1861 @@ -commit d0dba79a90 +commit 242d9e6d86 Author: Gerald Combs -Date: Wed Feb 25 09:20:43 2026 -0800 +Date: Tue Apr 28 18:06:02 2026 -0700 - Build: 4.4.14 [skip ci] + Prep for 4.4.15 [skip ci] -commit 16fdb087a6 -Author: Giovanni Musto -Date: Wed Feb 25 13:51:23 2026 +0100 +commit 24a2d42940 +Author: Jaap Keuter +Date: Wed Apr 29 07:57:09 2026 +0000 + + RTP-MIDI: point to right octet for quarter frame value + + Fixes #21231 - BLF: Avoid error in case of truncated log container + AI-Assisted: no - (cherry picked from commit 84fbadc5229ee785a1610ccb349a90f7e8fd854e) + (cherry picked from commit 8f555c58a51956e26b1674e22cfdcd6935109bc1) - Co-authored-by: Giovanni Musto + Co-authored-by: Jaap Keuter -commit 6647382977 +commit 037b4f7a90 Author: Gerald Combs -Date: Tue Feb 24 15:46:08 2026 -0800 +Date: Tue Apr 28 14:42:16 2026 -0700 - Windows: Update GnuTLS to 3.8.12 + GitLab CI: Don't build Logray - AI-Assisted: no - (cherry picked from commit d3fba774c1a00b17d3d0c6f964ad92285ee59f85) + It's effectively historical at this point. -commit a2afba4f62 +commit cf2f387de8 Author: Gerald Combs -Date: Mon Feb 23 13:15:54 2026 -0800 +Date: Mon Apr 27 14:05:45 2026 -0700 + + macos-setup: Add a patch file [skip ci] - extcap: Update our SSH configuration location on Windows + Add a local copy of the libssh werror patch. - "%d" expands to the user's home directory, so we need to append - ".ssh\config" instead of "config". +commit 29678f85fb +Author: Gerald Combs +Date: Mon Apr 27 09:07:05 2026 -0700 + + macos-setup: Version updates and fixes [skip ci] + + Update CMake to 3.31.12. Update GnuTLS to 3.8.12 and copy over our + configur flags from wireshark-vcpkg-scripts. Update our Qt version to + 6.5.3 to match the version that we ship. Add various fixes. + +commit 37fd8d6313 +Author: John Thacker +Date: Sun Apr 26 14:23:57 2026 -0400 + + packaging: MSYS2: Install whatever version of Lua DLL is there + + It might be Lua 5.4, it might be Lua 5.5 AI-Assisted: no - (cherry picked from commit 81b24a356cd6e487d8f975c8c93be5817ddfb9c1) -commit bc76b56480 + (cherry picked from commit d5e913f43d7baf180a89bc25202d88123c20a49f) + + Co-authored-by: John Thacker + +commit c679950474 Author: John Thacker -Date: Fri Oct 17 16:27:18 2025 -0400 +Date: Sat Apr 25 20:27:02 2026 -0400 - extcap: Do not try to read c:\etc\ssh\ssh_config on Windows + GitHub: Clear GitHub Actions warnings about Node.js - libssh by default tries to read /etc/ssh/ssh_config on all OSes. - OpenSSH Portable for Windows by default doesn't create a systemwide - ssh_config, and if it does, it puts it in %ProgramData%\ssh and - has to check permissions because it might be owned and writable - by a non-admin user. Since C:\etc does not exist by default on - Windows, that's a possible security issue. + Update the version of many GitHub Actions to ones that run on + Node.js 24 so GitHub will stop warning about Node.js 20 actions + not being supported anymore. - https://github.com/PowerShell/openssh-portable/blob/latestw_all/ssh.c#L591-L597 - https://github.com/PowerShell/openssh-portable/blob/latestw_all/contrib/win32/openssh/config.h.vs#L1723 + Switch the MSVC Command Prompt to the currently updated fork, + since the original project hasn't seen commits in two or three years. - Only read from the OpenSSH default configuration file in the user - home directory on Windows. + AI-Assisted: no + (backported from commit d43714ee35a91b15ca19f4756c68cb5e84d19229) - Fix #20806. +commit 07a9abd0f6 +Author: John Thacker +Date: Tue Dec 30 17:33:19 2025 -0500 - (cherry picked from commit 845c005ab8549b4a84a11d1d2505effad2c00528) + GitHub Actions: Don't bother installing Perl -commit 926a14ba0e -Author: Gerald Combs -Date: Tue Feb 24 11:32:08 2026 -0800 + It just creates issues, and it's not needed for a build if we're + not regenerating various dissectors or running scripts. The WSDG + recommends against installing it for a simple build. - GitLab CI: Disable the macOS Build merge request job for now + (backported from commit 0d2ffe6a82a8bbf8d15cf7572a2b3da95a049ab1) -commit 855ed48688 +commit e9107c2856 Author: Gerald Combs -Date: Mon Feb 23 14:57:39 2026 -0800 +Date: Sat Dec 7 10:17:10 2024 -0800 + + GitHub Actions: Don't persist our credentials + + The Checkout V4 action enables `persist-credentials` by default, which + is probably a bad idea: - Prep for 4.4.14 + https://github.com/actions/checkout/issues/485 -commit 955f647114 + Disable it in each of our workflows. + + (backported from commit ef12db5df104b4894353bd72ef8bd65cbf8bb272) + +commit ec0525401f +Author: John Thacker +Date: Sun Apr 26 10:55:42 2026 -0400 + + Github: Try to make sure MSYS2 build fails appropriately + + When either of these powershell commands fail, apparently + no build error is flagged, or useful output is generated. + + Try to mitigate that with more powershell code and try to + make sure the step fails if the installer or version command + fails to run correctly. + + (cherry picked from commit 03ec7b8d739d9c09f7aeace58fa6d2cfe0d21933) + + Co-authored-by: João Valverde + +commit b7783371fc +Author: John Thacker +Date: Sun Apr 26 09:55:22 2026 -0400 + + MSYS2: Update build to use Lua 5.4 + + Use the Lua 5.4 package in MSYS2 repositories instead of + building from source. + + (cherry picked from commit 9c4fadc42c5bb05a49875877274f8be4af8b9cc6) + + Co-authored-by: João Valverde + +commit 6a8dcb089c Author: Gerald Combs -Date: Sun Feb 22 10:17:45 2026 +0000 +Date: Sun Apr 26 10:17:26 2026 +0000 - [Automatic update for 2026-02-22] + [Automatic update for 2026-04-26] Update manuf, services enterprise numbers, translations, and other items. -commit ad6a3c83c8 +commit 6177782785 +Author: John Thacker +Date: Sat Apr 25 09:30:27 2026 -0400 + + UDS: Fix infinite loop from invalid addressAndLengthFormatIdentifier + + Table H.1 in ISO 14229-1 clearly indicates that zero is not allowed + for these values, and it can cause an infinite loop if ignored. + + Thanks to Jaime Cavero for the PoC. + + Fix #21225 + + AI-Assisted: no + (backported from commit f61f43d21c6df11a21aa64fc2ff8c49a6dd35f30) + +commit 524150a299 +Author: John Thacker +Date: Thu Apr 23 19:21:07 2026 -0400 + + androiddump: Respect ANDROIDDUMP_USE_LIBPCAP option + + This CMakeLists.txt was moved into the subdirectory at some + point, so this variable needs to be set in the parent scope + to have any effect. + + Also fix a sign conversion issue. + + AI-Assisted: no + + (cherry picked from commit c55f56c5ea60b87c0ab7e1223110cf9bd22ce6a9) + + Co-authored-by: John Thacker + +commit 26fb4ef97c +Author: John Thacker +Date: Thu Apr 23 09:37:15 2026 -0400 + + wsutil: Buffer: Add an assertion when increasing length + + The length should not be increased past the allocated space. + + AI-Assisted: no + + (cherry picked from commit ef8327db4992a0c2e851c6cc4363744c71c0bd1f) + + Co-authored-by: John Thacker + +commit bdcf0db9cb Author: Gerald Combs -Date: Fri Feb 20 15:34:33 2026 -0800 +Date: Tue Apr 21 16:15:46 2026 -0700 + + GitLab CI: Manually backport recent macOS updates + +commit d7bbcc2380 +Author: John Thacker +Date: Tue Apr 21 11:08:41 2026 -0400 + + rpm-setup: Add correct OpenCore-AMR for SUSE + + (cherry picked from commit f2da5682bd0860809c40509118db1f660d716c96) + + Co-authored-by: Joakim Karlsson + +commit d245e388ff +Author: Pascal Quantin +Date: Tue Apr 21 09:46:46 2026 +0200 + + NAS 5GS: fix S-NSSAI location validity information dissection + + A copy/paste typ prevented the proper IE dissection in the 5GMM + configuration update command message. Fixes #21218 + + AI-Assisted: no + + (cherry picked from commit 8e66352239792bc296afe0c985bdb155cec656b0) + + Co-authored-by: Pascal Quantin + +commit 420696f25c +Author: John Thacker +Date: Sun Apr 19 17:03:22 2026 -0400 + + wsutil: Add counted string variant to ws_strtoi + + Add a counted string buffer variant of ws_strtou64. This is + useful when we have a string buffer that is not necessarily + NUL terminated and possibly has internal NULs and we expect + it to contain a string. It allows us to avoid having to copy + the buffer and null terminate it (which also might not be + right anyway if there are internal '\0'.) + + Add tests for it. + + Use it to fix #21209 by not allocating at all. + + Add an attribute for __attribute__((nonstring)), which clang 21 and + higher requires to declare buffers of char (or unsigned char) using + string literals and make the buffers exactly the right size not to + be null terminated. That's useful in the tests because it's easier + to read non-null terminated strings initialized with strings instead + of numeric literals. MSVC has something similar (C4295, which we + make level 3 by default.) - Windows: Update libssh to 0.11.4 + AI-Assisted: no + (backported from commit a492f2f18944cb7b36b5b33cd3a35b606f39a1ab) + +commit dda8a721ff +Author: John Thacker +Date: Mon Apr 20 09:57:46 2026 -0400 + + sharkd: Catch exceptions from tvb_ functions in process_frame_cb + + sharkd_session_process_frame_cb calls tvb_ functions that can throw + DissectorBug and bounds exceptions, and it should not crash in such a case + (unless the environment variable WIRESHARK_ABORT_ON_DISSECTOR_BUG=1 + is set, which makes it crash anyway.) + + Move some common code into a common static function. + + Ping #21133 + + AI-Assisted: no + (backported from commit 49f45597d1f64c591ce9bc7824fc2b99696eeb6a + and from commit b7a37f838e60f5a62938b62de2ce8b3a4f89dfd6) + +commit 1a1f6fe935 +Author: John Thacker +Date: Mon Apr 20 19:07:18 2026 -0400 + + packet-http2.c: Fix copy-paste bug + + AI-Assisted: yes (Claude) + + (cherry picked from commit 6eefcd6b012f7b112e4153106e86ba3eee701578) + + Co-authored-by: Moshe Kaplan + +commit 4cb8f0fd08 +Author: John Thacker +Date: Mon Apr 20 07:40:34 2026 -0400 + + conversation: Don't use X.25 conversation after dissecting IP on X.25 + + The conversation API has several functions that find "the conversation" + for a frame using what is currently in the packet_info struct. This is + often used by dissectors that did not create that conversation, in order + to, e.g., have the TCP dissector call a particular subdissector after + heuristics succeed. + + Most of the time, the current source and destination addresses, and + ports if set, are used to find this conversation. Conversations using + this are generally bidirectional, and there's special support for + wildcarding.[1] + + There are some dissectors whose idea of a conversation does not fit + into this scheme, and which use "exact" conversation matching. Some + of these, such as with circuit-based protocols, also need to set the + default conversation so that subdissectors find their conversation + instead of the port-and-address based one.[2] + + X.25 is such a dissector. It has a heuristic subdissector list, + because X.25 over TCP (TOP) exists, X.25 needs to set its circuit + conversation to be the one retrieved by its heuristic subdissectors + so that they can set themselves to its converstation, and not the + underlying TCP conversation that carries X.25. + + A complication with X.25 is that X.25 can itself carry IP, and it is + thus possible to have IP over X.25 over TCP over IP. (See #2341.)[3] + In such cases, for the same reason as members of the X.25 heuristic + subdissector list want to retrieve the X.25 conversation and not + the addresses-and-ports conversation, members of heuristic subdissector + lists over IP[4] want to find the addresses-and-ports conversation, + not the conversation element based X.25 conversation, so as to set + themselves to the proper conversation and not mess up dissection by + attempting to skip layers. + + The conv_elements added to pinfo are allocated via pinfo->pool, so + as a workaround we can simply set them to NULL once dissecting IP. + This fixes #21185 at least temporarily, although it is not the ideal + long term solution.[5] + + 1 - There are additional conversations with the recently introduced + "deinterlacing" conversation functions. + + 2 - There's also another category of dissectors that have address-and-ports + used for conversations that for some reason do not want to set the source + and destination port of the frame itself. Most of these are proxy protocols. + They are not further discussed here, but present their own issues. For + now, note that once those are set, they prevent the conversation + elements based converssation from being found as well. + + 3 - This includes IPv6, see https://www.iana.org/assignments/nlpids/nlpids.xhtml + + 4 - Including those in further protocol layers often found over IP, such as + the TCP, UDP, or SCTP heuristic subdissector lists. -commit 5e76149c8c -Author: Guy Harris -Date: Tue Feb 17 17:21:26 2026 -0800 + 5 - This ideal long term solution has been pending circa a decade. + Cf. 800b26edbe34e135cc9be1d4395db2c13ae1213f - tshark: fix exit status. + AI-Assisted: no + + (cherry picked from commit f361a7c8f9f9b3133f5ce72009c79b239831cc2d) + + Co-authored-by: John Thacker + +commit 8aa3da53d9 +Author: John Thacker +Date: Sun Apr 19 11:45:40 2026 -0400 - Exit with WS_EXIT_INVALID_FILTER, not WS_EXIT_INVALID_INTERFACE, if the - read filter isn't valid. + sharkd: Empty the filter table when loading a new file - (cherry picked from commit e53cc35bc7fa3740ead1b3afa6c210f59c12e54b) + The cached filter results need to be emptied when a new file is loaded, + since they are likely not accurate for the new file. -commit 2d7abdc17a + FIx #21207 + + AI-Assisted: no + + (cherry picked from commit a8f60a2a35623166212100ecbd5d63bcfa36c63a) + + Co-authored-by: John Thacker + +commit 1f67984ee1 Author: Gerald Combs -Date: Sun Feb 15 10:22:35 2026 +0000 +Date: Sun Apr 19 10:17:26 2026 +0000 - [Automatic update for 2026-02-15] + [Automatic update for 2026-04-19] Update manuf, services enterprise numbers, translations, and other items. -commit 2aad4e27dc -Author: Jaap Keuter -Date: Thu Feb 12 18:24:13 2026 +0000 +commit a8da951970 +Author: John Thacker +Date: Sat Apr 18 21:13:49 2026 -0400 + + sharkd: A comment is a mandatory parameter for setcomment + + Since the set comment command does not remove nor replace existing + comments, the comment field should be mandatory. This removes the + need to check if the token is NULL. - Fix const pointer usage for gcc. + Fix #21206 AI-Assisted: no + (backported from commit 7c91ecb9739106b62c1b27a37ce8c0403af6e662) - (cherry picked from commit 96d27343151d90a3de642d6544f969392ccffe73) +commit ddc253583f +Author: John Thacker +Date: Sat Apr 18 21:19:03 2026 -0400 - Co-authored-by: Dexter Gerig + sharkd: Implement a skeleton of cf_close, and call it -commit e70f956c3e -Author: Pascal Quantin -Date: Tue Feb 10 19:33:18 2026 +0100 + Implement a cf_close for sharkd.c, and call it when opening a new + file in order to free all the old information. I'm not certain if + this is everything that sharkd can possibly put in the capture_file + struct, but all of this is necessary. - Diameter: add a missing 3GPP RAT-Type AVP value + Fix #21214 AI-Assisted: no - (cherry picked from commit 822055418e407d9cd9ca94384431fe388498aa4c) + (cherry picked from commit 9144a54679a3375f9537f3a61ce68bcd5ba5689b) - Co-authored-by: Pascal Quantin + Co-authored-by: John Thacker -commit eedc5cb41a -Author: Pascal Quantin -Date: Mon Feb 9 23:32:31 2026 +0100 +commit a5d4cb0ede +Author: John Thacker +Date: Sat Apr 18 07:44:51 2026 -0400 + + editcap: Don't try to remove more of a VLAN tag than is present - Diameter update 3GPP RAT-Type AVP values + We might want a Buffer API function to remove from the middle of + a buffer more safely, and/or be able to reduce the data length. - Based on 3GPP 29.212 v19.1.0. - Fixes #21012 + Fix #21210 AI-Assisted: no + (backported from commit a7ff796e9cdf262acd36e13652b142ded4c371e5) + +commit 76b9d10bb7 +Author: John Thacker +Date: Fri Apr 17 19:59:42 2026 -0400 - (cherry picked from commit a4ace7abcb885463108e96171d6ef2bf96cbe659) + text_import: Use a Buffer for the prefix - Co-authored-by: Pascal Quantin + Instead of computing the prefix length and memmoving the packet data + out of the way to make room, just have a separate Buffer for the + prefix and append it to the record first before the packet data. + This is considerably simpler and reduces the chance of overflow. + + Fix #21208 + + AI-Assisted: no + (backported from commit 002b18d4e3ff5cc3b196b7cf822d7976fba02616) + +commit c8c0b8e9a9 +Author: John Thacker +Date: Sat Apr 18 12:05:38 2026 -0400 + + RTPS: Check snprintf and g_strlcpy for truncation + + Check for truncation when copying into a fixed sized buffer and fixup the + UTF-8 if so. + + Fix #21199 + + AI-Assisted: no + + (cherry picked from commit 92b4f171b4d4a5e6983ced28871719ddda403e43) + + Co-authored-by: John Thacker + +commit 64400d4d2c +Author: John Thacker +Date: Fri Apr 17 17:02:08 2026 -0400 + + Qt: Conversation Dialog: Fix timeline delegate when first row filtered + + Get the sibling index at the appropriate column (but same row) instead + of the index at row 0, which will be invalid if row zero is filtered. + + Fix #21204 + + AI-Assisted: no + + (cherry picked from commit 3391ef76a66399c0582e035e9f4ce2d2a8873710) + + Co-authored-by: John Thacker + +commit 511b9ce458 +Author: John Thacker +Date: Wed Apr 15 06:14:26 2026 -0400 + + RTPS: Use tvb_memdup instead of tvb_memcpy when possible + + When duplicating a contiguous region of a tvbuffer, especially + from a length obtained from packet data then subtracted by a + fixed number (so it might have underflowed and wrapped around), + prefer tvb_memdup to wmem_allocate-then-tvb_memcpy, as the former + doesn't allocate until it does boundary checks. + + Ping #21156 + + AI-Assisted: no + (backported from commit 8bb824dd497721867b0837920a32483aceef44f9) + +commit be643576f9 +Author: John Thacker +Date: Tue Apr 14 20:33:28 2026 -0400 + + wslua: Check for failure to convert a literal string into a GUID + + Fixup ec001766f6990cc2b3e92d23b12f937e967fa7ad + Fix #21194 + + AI-Assisted: no + (backported from commit c464c57562035da39958adfb28b7f1a57258a107) -commit 502ddd2d6e +commit a6b2b7698f +Author: John Thacker +Date: Tue Apr 14 20:09:20 2026 -0400 + + ICMPv6: Padding issue in NDP Handover Assist Info and Mobile Node ID options + + NDP Handover Assist Info and Mobile Node ID options + + compute padding with absolute offset instead of relative + + AI-Assisted: no + + (cherry picked from commit 770f8a5d8e726c4a027139013e2617f1cd2dfead) + + Co-authored-by: Alexandre de Oliveira + +commit c4fb4bd6d4 +Author: John Thacker +Date: Tue Apr 14 11:00:56 2026 -0400 + + SMB2: Put bounds on total chained compression + + Stop when the total output of the chained compression is more + than our maximum. + + Once we get an error (or give up because it's too long), keep + adding fields to the tree but stop wasting cycles decompressing + when the results will just get thrown away. + + An unknown compression type is an error. + + Only add to the Info column for one error for the same chained + compression. + + Fix #21191 + + AI-Assisted: no + + (cherry picked from commit 8e3303b3d2d1697c6255a6f92bcab4e7abcf367d) + + Co-authored-by: John Thacker + +commit 6d557a6eaf +Author: John Thacker +Date: Tue Apr 14 08:15:29 2026 -0400 + + SMB2: Optimize PATTERN_V1 decompression + + This is roughly 50x faster on a large decompression. + + Ping #21191 + + AI-Assisted: no + + (cherry picked from commit 0fe4d786017863c9496b7f88098796279dfa59aa) + + Co-authored-by: John Thacker + +commit 9e74a97893 +Author: John Thacker +Date: Mon Apr 13 16:37:58 2026 -0400 + + WebSocket: Put some bounds on zlib decompression + + WebSocket by default saves the state of the decompression sliding + window/dictionary, which is why the common functions from tvbuff_zlib + aren't used. Put similar bounds on the decompression length. Note + that if the message is truncated, zlib probably doesn't update the + sliding window when skipping to the end, so subsequent messages probably + fail too. + + This is the largest maximum we can possibly support. We could lower it + more, if we feel that it is necessary to avoid DoS. + + Fix #21190 + + AI-Assisted: no + + (cherry picked from commit d655b4ebc78088a73eb0706b75cc93fe045602bc) + + Co-authored-by: John Thacker + +commit 4a70bf7021 +Author: John Thacker +Date: Mon Apr 13 16:28:10 2026 -0400 + + GSM RP: Don't use a global + + Call proto_tree_get_parent_tree, which does the same thing as currently + when the protocol is dissected normally through the RP dissector, but + also works properly when rp_data_n_ms is called directly, e.g. by the + BSSMAP dissector. + + Fix #21189 + + (This is a case where it's actually more likely to crash with the normal + wmem than with WIRESHARK_DEBUG_WMEM_OVERRIDE=simple.) + + AI-Assisted: no + + (cherry picked from commit 6fc954bbb3b19f9b49c0905442c81b26611fa202) + + Co-authored-by: John Thacker + +commit ae6ad5ec27 +Author: John Thacker +Date: Sun Apr 12 20:12:33 2026 -0400 + + OpenFlow v5: Prevent more infinite loops with tvbuffer subsets + + Continue the process started in 92fdf8e04fc471f052f185b59233dbc1f3b7. + + Fix #21188 + + AI-Assisted: no + + (cherry picked from commit c15c25919ce538147b2b12254d54b500b06131c8) + + Co-authored-by: John Thacker + +commit 277d7fd34d +Author: John Thacker +Date: Sun Apr 12 10:28:37 2026 -0400 + + RPKI RTR: Check for overflow in the unknown PDU type case + + When the PDU type is unknown, since no field is added to the tree, + the dissector must check for overflow when adding a 32 bit unsigned + integer to the offset and throw the same ReportedBoundsError that + would be thrown in the cases where something is added to the tree. + + Fix #21186 + + AI-Assisted: no + (backported from commit 65c4e3e0ea8f6b7cab1e1194f81f685903a47a38) + +commit 9ac0b863f8 +Author: John Thacker +Date: Sun Apr 12 08:13:50 2026 -0400 + + MBIM: Check for overflow + + The data length is a 32 bit unsigned integer, so check for overflow so + that the offset doesn't move backwards. + + Fix #21184 + + AI-Assisted: no + (backported from commit b46779cd354437dcae306a77dafc20beac854e91) + +commit bacec344c5 Author: Gerald Combs -Date: Sun Feb 8 10:18:05 2026 +0000 +Date: Sun Apr 12 10:18:48 2026 +0000 - [Automatic update for 2026-02-08] + [Automatic update for 2026-04-12] Update manuf, services enterprise numbers, translations, and other items. -commit b25886fa6e +commit cdc0394392 Author: John Thacker -Date: Sun Feb 8 00:21:08 2026 +0000 +Date: Sun Apr 12 07:18:11 2026 -0400 - SOCKS: Create a proxy conversation for each outer conversation + Openflow v6: Add a length check for OFPBPT_TIME - To support multiple SOCKS over TCP connections on the same outer - 5-tuple (consecutively, of course, not concurrently), associate the - inner proxy conversation with the outer conversation, and create - a new inner conversation when the outer conversation changes. + Add a length zero similar to the other types. - Fix #21006 + Fix #21181 AI-Assisted: no - (cherry picked from commit 624e46fb5545503ea42cfa26cabeb093f01502bf) + (cherry picked from commit c8b105293591f7f38944c0f00fd7dd848b4f7ff0) Co-authored-by: John Thacker -commit d487e0e07b +commit 1377ff08c8 +Author: Michael Mann +Date: Sun Apr 12 03:22:28 2026 +0000 + + Enabled protocols: Update WSUG image and dialog description + + Update the Enabled Protocols screenshot in the Wireshark User Guide to reflect the Qt version (previously showed GTK version). Include more information when describing the dialog about how the search functionality works and what heuristic protocols are + + Fixes #20871 + Ping #21123 + + AI-Assisted: no + + Co-authored-by: Jaap Keuter + + (cherry picked from commit aec7cf4ded2d6e70fce1ee9821edd9df405b62bf) + + Co-authored-by: Michael Mann + +commit c9bc26df37 Author: John Thacker -Date: Sat Feb 7 02:51:04 2026 +0000 +Date: Sat Apr 11 21:07:42 2026 -0400 - RF4CE: Check that the input data is long enough + Openflow v5: Prevent infinite loops - Prevent illegal memory access. + When looping on an Openflow v5 action, if the length is invalid set the + offset to the end of structure containing all the actions (array of + action buckets, etc.) rather than the claimed end of the entire message. + This prevents an infinite loop in the case that the contained structure + length is larger than the containing message. + + Take tvbuffer subsets in more places instead of passing a length around. + That is a better approach, particularly when there are various nested + lengths; it ensures that ReportedBoundsErrors and ContainedBoundsErrors + are produced, and reduces the chance of overflow, infinite loops, and + other strange behavior. It could be done even more in this dissector. - Fix: #21009 + Fix #21182 AI-Assisted: no - (cherry picked from commit 17215397c1a5fbb2ef8764b3ec29ec45cde9c153) + (cherry picked from commit 92fdf8e04fc471f052f185b59233dbc1f3b7b655) Co-authored-by: John Thacker -commit b571934a30 +commit a4150711a3 Author: John Thacker -Date: Fri Feb 6 05:55:03 2026 -0500 +Date: Fri Apr 3 20:28:37 2026 -0400 - TDS: Fix dissection of variable-length data types in RPC + asn2wrs: Assume that any open type might be in a cyclic dependency - DATENTYPE does not have a column maximum length (TYPE_VARLEN) because - the length is fixed at 3 if non-NULL. + Type fields and variable-type value [set] fields are open types. If they + lack a constraint that limits the types, then they are "one whose set of + values is the complete set of all possible values that can be specified + using ASN.1." [Rec. ITU-T X.681-2021 14.2] + + Also, see ITU-T X.680-2021 3.8.57 NOTE 2, which says "[ASN.1 encoding rules] + do not necessarily provide unambiguous encodings for "open type notation," + which carries values from ASN.1 types that are not normally determined + at specification time. Knowledge of the type of the value being encoded + in the "open type notation" is needed before the abstract value for that + field can be unambigiously determined." + + If we don't know the possible types that can follow, they might be + involved in a cycle, as can happen in NGAP along with other ASN.1 + protocols. To be on the safe side, just indicate that any open type + which we do not know the following types is in a dependency cycle with + itself, which will force the dissection depth checks. - Retrieve the SCALE value and pass it to dissect_tds_type_varbyte so that - the types which have a length that depends on the SCALE (TIMENTYPE, - DATETIME2NTYPE, and DATETIMEOFFSETNTYPE) are dissected correctly. + Fix #21149 - Fix the retrieval and display of variable length integers when 64-bit - and of variable length floats; the incorrect offset (the offset of the - length value) was being used instead. + AI-Assisted: no + (backported from commit 4b48d4f5467e8bb2b7776a8874b2157697763fcf) + +commit 1147039f68 +Author: Anders Broman +Date: Sat Mar 14 11:20:55 2026 +0100 - https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-tds/cbe9c510-eae6-4b1f-9893-a098944d430a + packet-charging_ase: Fix coverity report - Structurally dead code - Fix: #21001 + set offset to tvb_reported_length(tvb); rather than returning it + directly. AI-Assisted: no - (backported from commit 15ffb508bba4945beba8df98bc32c486e6a8ec23) + (cherry picked from commit b559386202be1368bcc22ef8b325d571b446b3a1) -commit fee713500f -Author: Balint Reczey -Date: Fri Dec 5 12:30:10 2025 +0100 +commit 86923fbf9e +Author: Martin Mathieson +Date: Sun Dec 1 22:59:39 2024 +0000 - wsutil: Restore removed ws_base32_decode() to fix ABI breakage + IDMP: Avoid returning twice from some generated functions - (cherry picked from commit e502c94a5df9a0575ebc568051eb85e106e2725f) + (cherry picked from commit 10e9024c12ba35fcd213f8b8aa6d68ef9dd802c2) - Conflicts: - wsutil/CMakeLists.txt +commit a407236a9d +Author: John Thacker +Date: Sat Apr 4 19:01:46 2026 -0400 + + epan: Add increment and decrement dissection depth by n functions + + Add functions that increment and decrement dissection depth by an + unsigned number. Check for overflow and underflow. + + Change asn2wrs.py to use the new functions. Note that it was + incrementing and decrementing by one too much previously. + + AI-Assisted: no + (backported from commit 2cfe98b2d66362dddbd81aa96457763763b6341f) + +commit 48fbc0305c +Author: John Thacker +Date: Fri Apr 10 21:59:05 2026 -0400 + + GeoNetworking: catch overflow in packet offset calculation. + + Do a checked add. + + Move common code out of the switch statement while we're at it. -commit 960359b754 -Author: Alexis La Goutte -Date: Wed Feb 4 10:14:34 2026 +0100 + Fix #21177. - artnet: Fix wrong RDM Status for Output Status + AI-assisted: no - Fix: #20980 + (cherry picked from commit dae485a918efe044aff6775f5b8d07860656ac61) - (cherry picked from commit 7551171435761167d44f8b37ec2fef9502ca7daf) + Co-authored-by: Guy Harris - Co-authored-by: Alexis La Goutte +commit c583a92483 +Author: John Thacker +Date: Fri Apr 10 10:30:01 2026 -0400 + + QUIC: Tighten heuristic by strengthening draft version check + + Since draft-34 was the final draft version, there's 221 possible + QUIC version numbers that were not used as draft versions. This + is used in the heuristics, and I have a capture file which gives + false positives without this. + + AI-Assisted: no + + (cherry picked from commit 8b83d61cee2207f339bfa1b717601b93a8659c65) -commit ca20762cf1 + Co-authored-by: John Thacker + +commit dfc1c01215 Author: John Thacker -Date: Wed Feb 4 03:01:32 2026 +0000 +Date: Thu Apr 9 10:22:46 2026 -0400 - Zigbee Direct: Set necessary packet pointer to the global short_table + MySQL: Use character_set_client for Bulk Execute Stmt parameters - The Zigbee NWK dissector requires a ieee802154_packet structure to be - passed as dissector data. When Zigbee Direct is used to tunnel Zigbee - NPDUs, there is no IEEE 802.15.4 MAC layer and header to fill that out. + In MySQL/MariaDB, parameters, like everything else that comes from + the client, use character_set_client. When statements are PREPARED, + column information is returned for the columns to which the parameters + refer, but while that is of interest to the client, it does not affect + the client's subsequent transmissions. The client does not use those + encodings. This is already handled correctly in STMT_EXECUTE, but not + in STMT_BULK_EXECUTE. - A zeroed out packet structure has been passed in, but apparently that - packet structure should always contain a pointer to a global lookup - table. (The Zigbee NWK dissector might need some checking to see if - the address is already set, etc.) + To reduce the risk of a null pointer dereference, initialize the + (unused) array, since the parameter and field metadata use the same + type (perhaps they shouldn't.) - Also set the COL_PROTOCOL fence immediately before calling the - Zigbee NWK dissector, and insert a separator. + Add some comments. - Fix #20977 + Fix #21172 AI-Assisted: no - (cherry picked from commit 029738e8f7736fe65cda10c1995d343fc7cd2751) + (cherry picked from commit 62a4c4ba07f6ffaea8183a4349aa374fd335de4f) Co-authored-by: John Thacker -commit bce1b764ed +commit 535d2343fb Author: John Thacker -Date: Tue Feb 3 21:57:37 2026 +0000 +Date: Wed Apr 8 15:18:51 2026 -0400 + + HTTP: Check strstr() return before incrementing and dereferencing - Zigbee Direct: Make sure a loop iterates + Same fix as e5adf89f95f28266d41bc195378d0567273047de but in the other + branch. - The loop variable i was not advanced when a test was false, resulting - in an infinite loop. Use for loops for clarity. Also switch to using - a GHashTableIter, which is faster than creating a list of all the values - and also doesn't require freeing. (It was previously leaking.) + Fix #21173 AI-Assisted: no - (cherry picked from commit e9183fadd2266dfd64d4984c293301cc247ca5d2) + (cherry picked from commit 78311470b0f9309dfd8972c62957d355a638fe63) Co-authored-by: John Thacker -commit 21546744bc -Author: Pascal Quantin -Date: Tue Feb 3 20:34:44 2026 +0100 +commit 089b75385b +Author: John Thacker +Date: Wed Apr 8 11:00:48 2026 -0400 - NAS-5GS: correction of Rejected NSSAI + ISO 8583: Use a wmem_strbuf_t - Use of correct offset value + Use a wmem_strbuf_t for appending characters to a string buffer instead + of having to determine the length beforehand (and possibly making a + mistake.) - (cherry picked from commit 1f2a9840894498f9b8226a305f66b465013f21ab) + Fix #21171 - Co-authored-by: Joakim Karlsson + AI-Assisted: no + + (cherry picked from commit 2841ce28123d5c78fcfcecb541dc4eeb04e13f84) + + Co-authored-by: John Thacker -commit 93a3ba774f +commit 38a40788b3 Author: John Thacker -Date: Sun Feb 1 15:30:20 2026 +0000 +Date: Tue Apr 7 17:59:54 2026 -0400 - rsa: Use proper free function + snort config: strlcpy is not snprintf - gnutls_x509_privkey_export_rsa_raw() allocates buffers with - gnutls_malloc() and they must be freed with gnutls_free(). + The last parameter is the destination buffer size, not the number of + characters to be copied. This also means it needs NUL bytes temporarily + replacing the token delimters so it can know when to stop copying. + + read_token can be passed in a whole line, so static_buffer needs to + be large enough for that. + + strndup always add the null terminator, and the last parameter is the + number of bytes to be copied. + + Fix #21165 AI-Assisted: no + (cherry picked from commit ea3fcb8e79453d60236ca795e17208758b3966e2) + +commit 719037dbb3 +Author: John Thacker +Date: Mon Apr 6 20:15:00 2026 -0400 - (cherry picked from commit 5b1dfffd1869c5c08859b01c1e21bedb82ce3799) + Snort config: Free rule and rule string on error + + Ping #21162 + + AI-Assisted: no + (cherry picked from commit 694b64b0908ff7dde5383dce124b212c17c3eac4) + +commit 5bfaef8fad +Author: David Perry +Date: Tue Oct 29 22:52:52 2024 +0000 + + snort: convert to ws_log system + + (cherry picked from commit 2ec12cf37884ae257a09f7fe8f18a6bae1453158) + +commit 7694218d6e +Author: John Thacker +Date: Sun Nov 23 10:21:56 2025 -0500 + + snort: Get signed or unsigned rule parameter as appropriate + + Some rules take signed numeric parameters of a certain size, some + take unsigned. Don't cast willy-nilly between them, and do a bit + more range checking. Also restore the ability to allow trailing + whitespace in rules, which Snort allows. + + (cherry picked from commit 23f91d6da3d5663fa8e8b82cd5ac3ef399659ee4) + +commit af84e621de +Author: Jaap Keuter +Date: Wed Apr 8 06:15:54 2026 +0000 + + IPSec: Check a length before allocating a buffer + + In case of overflow. Also, switch some calls from wmem_alloc plus + tvb_memcpy to tvb_memdup - when only one region needs to be copied + (instead of stiching together several), this is better, because it + does all the offset and length checks *before* allocation, and in + the case of this bug would have produced the DissectorError exception + warning of a dissector bug before the too large allocation instead + of afterwards. + + Fix #21166 + + AI-Assisted: no + + (cherry picked from commit 60631b80eda0b6b5470177a1fabb77810d429844) Co-authored-by: John Thacker -commit 947a937b68 +commit 5ecd640d92 +Author: John Thacker +Date: Sun Apr 5 10:16:58 2026 -0400 + + netxray: Don't remove padding that isn't there + + In certain forms of NetXray captures, we expect 4 octets of padding at + the end that is junk and we don't add to the record. If the file says + that the actual captured length is less than the padding, set the + padding to the actual captured length instead of underflowing. + + Fix #21152 + + AI-Assisted: no + (backported from commit 0c8bb485fa2e26b084174c6855d6f53595da4465) + +commit 6a77771aaf +Author: John Thacker +Date: Sun Apr 5 17:32:33 2026 -0400 + + HTTP2: Update frame length size + + Frame length is 24-bit, but was being read into 16-bit value, so larger values were truncated. Use proto_tree_add_item_ret_uint and make the length variable larger + + Fixes #21155 + + AI-Assisted: no + + (cherry picked from commit d367d4629315ba72caf522409310d1dcb28c0329) + + Co-authored-by: Michael Mann + +commit 996cdfa443 +Author: John Thacker +Date: Thu Apr 2 08:48:51 2026 -0400 + + dumpcap: Ensure the buffer size is large enough for the SHB + + A SHB can have comments and other options, so it is possible (if a + bit odd) to have a length larger than the initial 2048 size buffer. + Move the "round up a 32 bit integer to the next highest power of 2" + function to a static function. + + Check if the SHB block size is less than the minimum. + + Move a block size is a multiple of 4 check for a SHB until after + the endianness is determined. + + Add some comments. There probably should be an imposed maximum + (but see commit db9ed8844c48326a3a8e3823d1d9f152e6667542). + + Fix #21132 + + AI-Assisted: no + (backported from commit eeb6f21dba44d9f829aae77f4dda7c32a237b4fb) + +commit c13cb3bd4f Author: Gerald Combs -Date: Sun Feb 1 10:17:43 2026 +0000 +Date: Sun Apr 5 10:18:19 2026 +0000 - [Automatic update for 2026-02-01] + [Automatic update for 2026-04-05] Update manuf, services enterprise numbers, translations, and other items. -commit 7c7b861a44 +commit 5e7362caac +Author: John Thacker +Date: Sat Apr 4 13:21:09 2026 +0000 + + Zigbee RF4CE NWK: Take a subset in the unencrypted case + + Instead of a memcpy, take a subset in the unencrypted case. Then we + don't need to worry about its size at all. + (This is literally the suggestion shown in the WSDG for such cases[1].) + + Also, the dissector doesn't need to "go on a journey of self discovery," + as put 10 years ago. + + 1 - https://www.wireshark.org/docs/wsdg_html_chunked/ChDissectTransformed.html + + Fix #21150 + + AI-Assisted: no + + (cherry picked from commit ceb930083425cc998c9fc62e89f790017b140c92) + + Co-authored-by: John Thacker + +commit 78ccbcb6af +Author: John Thacker +Date: Fri Apr 3 13:33:52 2026 +0000 + + iLBC codec: Report proper decoded length in multiframe case + + Per RFC 3952, multiple iLBC frames can may be included in a single + RTP packet.[1] (Note the error there about octets per frame in the + 20 ms case, contradicting sections 2 and 3.1; errata has been + submitted.) The output length needs to be sized to accommodate the + full length, as the iLBC library decodes all the frames. + + 1 - https://datatracker.ietf.org/doc/html/rfc3952#section-3.2 + + Fix #21145 + + AI-Assisted: no + + (cherry picked from commit 7a284824c92fecc6c57d770317919388c33983ac) + + Co-authored-by: John Thacker + +commit cea357ad05 Author: John Thacker -Date: Fri Jan 30 14:47:29 2026 +0000 +Date: Fri Apr 3 07:03:40 2026 -0400 - secrets: Fix return type + DCP ETSI: Check that all fragments are the same size with R-S - The GnuTLS return types are ints and negative on error. Casting it to a - bool makes all errors into positive one, which obscures the failure. + ETSI TS 102.821 7.3.2 Fragmentation: + "Note that when Reed Solomon has been used, all fragments will be + of length s." - This probably worked ok before converting to C99 types - ( 2562674df0d294223d49ee9dfea7cc9680b00098 ) because a gboolean is - really a int, and casting back and forth between an int and a - gboolean doesn't coerce the value into 1 the way it does with a - stdbool bool. + Fix #21144 AI-Assisted: no - (cherry picked from commit 806af16d88d0fc7adbaa24f984995e4779a40604) + (backported from 2a44f117ad799228bfe51467843b3a01fae3787c) + +commit e820433aaf +Author: John Thacker +Date: Fri Apr 3 12:16:52 2026 +0000 + + Qt: Follow Stream: Keep the font the same when zooming + + Zooming a Q[Plain]TextEdit, with the a WheelEvent or otherwise, + switches from the QTextDocument's default font to that of the + text edit. Set both, so that zooming doesn't switch from monospace + to proportional fonts. + + Left unanswered - should the default size inherit from the main window? + + Fix #21137 + + AI-Assisted: no + + (cherry picked from commit 95cceea6da210538461d9ffebfbed6bf115e3b44) Co-authored-by: John Thacker -commit 5e80615ebc +commit 5d52e0e9ca +Author: John Thacker +Date: Fri Apr 3 01:49:48 2026 +0000 + + Qt: Create RtpStreamTreeWidgetItems with the current Time of Day setting + + This really should be converted to Model/View, but this is a quick fix + that's easy to backport. + + Fix #21138 + + AI-Assisted: no + + (cherry picked from commit 5730ab7fbdcbd50c34f737af2aa22128c1e5ed8a) + + Co-authored-by: John Thacker + +commit 5fac304705 +Author: John Thacker +Date: Thu Apr 2 11:19:41 2026 +0000 + + SANE: Avoid empty looping on illegal option types + + On option value types that are either illegal or shouldn't have a size, + don't spin empty loops, but instead advance the offset by the reported + size. It probably wouldn't hurt to have expert info as well. + + Fix #21139. + + AI-Assisted: no + + (cherry picked from commit bd2652a994f5a419bd29071841b671f344084d7b) + + Co-authored-by: John Thacker + +commit 043a129b29 Author: Michael Mann -Date: Mon Jan 26 16:44:58 2026 +0000 +Date: Tue Mar 31 09:21:17 2026 -0400 + + kismet: General improvements (and fix Heap-Buffer-Overflow) - USB-HID: Bugfix resource exhaustion in parse_report_descriptor() + 1. use proto_tree_add_item instead of proto_tree_add_string (fixes Heap-Buffer-Overflow and just generally a better approach) + 2. Use tvb_ascii_isprint to ensure characters are ASCII + 3. response_is_continuation only checks a single character, not a string, so adjust accordingly - Sanity range check was removed in 739666a7f5acc270204980e01b4069caf5060f30, restore it + Fixes #21129 AI-Assisted: no - Fixes #20972 + (backported from commit cd6e74e5d60dbc0a7cdf3c0f038cf22d06a24e7f) - (cherry picked from commit 6f753c79b7c8ac382e6383dfabd7d5be6e2b722c) +commit 12af517ab8 +Author: John Thacker +Date: Tue Mar 31 15:47:37 2026 +0000 + + LZ77 Compression: Sanity check uncompression size + + Uncompression algorithm allows for 32-bit value, which can lead to a "forever" loop with a crafted packet, so limit the size to MAX_INPUT_SIZE + + Fixes #21127 + + AI-Assisted: no + + (cherry picked from commit 21e3f89bc9f756c4549a3bfaf678d2a4e5a0b15f) Co-authored-by: Michael Mann -commit 710b5bc1fc +commit 6a2aa369a1 +Author: John Thacker +Date: Tue Mar 31 15:13:29 2026 +0000 + + epan: Fix potential overflows in zlib decompression + + Fix a couple of places that might overflow. (In one place, it + could lead to using an unusually small buffer.) + + Also fix a potential overflow in format_text_internal when + expanding the buffer size. + + Fix #21097, #21098. Cf. #13779, which is worse on processing time + even while using less memory, because of the use of x-www-form-urlencoded. + + We could lower the limit more (and also in some of the other + compressors; zlib is unusual in having a pathological case of + a compression ratio over 1030:1 with, e.g., a buffer of only + zeroes.) + + AI-Assisted: no + + (cherry picked from commit db0beded03eea4a71425996e40f9d641305b09ad) + + Co-authored-by: John Thacker + +commit c73364431c +Author: John Thacker +Date: Sun Sep 14 20:37:35 2025 -0400 + + CMake: Add jtckdint.h to SHARK_PUBLIC_HEADERS + + The Debian and Ubuntu packages need this. + + (backported from commit 33673dc51b1262908e55c5c1171ee3e5de1c48e2) + +commit f1dc816e46 +Author: John Thacker +Date: Fri Dec 12 12:09:04 2025 +0000 + + Add jtckdint.h to wireshark.h + + Adding this header only include makes C23/C++26 checked integer + arithmetic always available, similar to including inttypes.h + and stdbool.h everywhere. + + (backported from commit f3196bd3b1716ad4d83da278ac514973d142057d) + + Co-authored-by: John Thacker + +commit 5007d09caa +Author: John Thacker +Date: Fri Dec 12 12:10:15 2025 +0000 + + jtckdint: Workaround C _Generic lvalue conversion + + The controlling expression of a C11 _Generic undergoes lvalue + conversion (unlike, say, C++ templates): + + https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2396.htm#dr_481 + + Which means that the volatile qualifier is removed. This results, + with the current implementation, in undefined behavior when writing + to a volatile result through a non-volatile pointer, and a MSVC + C4090 warning. + + https://learn.microsoft.com/en-us/cpp/error-messages/compiler-warnings/compiler-warning-level-1-c4090 + + It is not UB or a problem to cast to a volatile pointer to add the + qualifier (other than possible small performance implications), so + do that. A more complicated rewrite of the macros could eliminate + the need to do that. + + C++ (as it uses templates), any C or C++ library using the C23 standard + header, and any use the gcc/clang built-ins are unaffected by this + change. + + (cherry picked from commit 233f65478221b7b8338467e499648608b68da989) + + Co-authored-by: John Thacker + +commit e571c3258b +Author: John Thacker +Date: Tue Mar 31 11:26:17 2026 +0000 + + extcap: Quiet libssh logging about no known_hosts file + + Some recently added logging in libssh is too verbose until the upcoming + 0.12.1 release[1]. For example, it warns at a high level about all + missing configuration files, including optional ones like the known + hosts file. Quiet those messages so that they don't appear by default. + + 1 - https://gitlab.com/libssh/libssh-mirror/-/commit/a7fd80795e21b8c894b54409496ea6b569f7f4a3 + + Fix: #21051 + + AI-Assisted: no + + (cherry picked from commit 3392e774cb19d02b952cba0e55aa81d6d0127797) + + Co-authored-by: John Thacker + +commit 04887fa922 +Author: John Thacker +Date: Tue Mar 31 11:19:57 2026 +0000 + + USB HID: Skip items with a report size of zero + + Items with a report size of zero don't advance the offset and + take up no room in the data, so there's nothing to display. + It can lead to a very long loop if the report count is extremely + long. + + Items with a non zero report size advance the offset, so we'll + eventually throw an exception no matter the number of reported + items. + + It's not clear from the USB HID spec if a report size of zero is + legal, but it doesn't make much sense. + + Fix #21121 + + AI-Assisted: no + + (cherry picked from commit 9ed3457896839c66dd9459da6e7b893b0c94502f) + + Co-authored-by: John Thacker + +commit 400da53ff4 +Author: John Thacker +Date: Mon Mar 30 14:19:31 2026 +0000 + + Zigbee Direct: Check the size before decryption + + Check that the encrypted size is not too large nor too small before + trying any key, rather than trying each key and failing each time. + + Add some comments about the MTU size (247 is a recommended value, + but not the largest that is possible with the Bluetooth attribute + protocol, especially with crafted captures.) + + Avoid an extra memcpy to the output buffer; just decrypt into it. + + The decrypted length is always 8 bytes less than the encrypted length + (removing a 32-bit counter used for the nonce and the 4 octet MIC), so + rather than passing in a pointer (and having to reset that pointer value + to the original value on failure), just pass the encrypted length by + value and use the known correct decrypted length on success. + + Thanks to Duc Anh Nguyen for the report and POC. + + Fix #21125 + + AI-Assisted: no (other than the initial report) + + (cherry picked from commit d5929f8e9382c29194a46e922ad129cd59b02d67) + + Co-authored-by: John Thacker + +commit dc04b00bae +Author: John Thacker +Date: Sun Mar 29 17:51:26 2026 -0400 + + BEEP: Prevent overflow and/or stack overflow + + Just throw a reported bounds exception if the size is an illegal + value rather than trying to figure out what it can be set to that + will avoid an infinite loop. + + Most of the values from dissect_beep_int are not used, so allow + the value to be NULL. All the values are actually unsigned; some + are in the range 0...INT32_MAX and one is 0...UINT32_MAX. + + Also add a recursion check in the other places where recursion + happens, but we shouldn't really need one there. (It was an + overflow issue really.) + + Fix #21120 + + AI-Assisted: no + (backported from commit 403b9d269f827e772e5fe1ac8433db723d8b7010) + +commit 349516f3af Author: Gerald Combs -Date: Sun Jan 25 10:17:20 2026 +0000 +Date: Sun Mar 29 10:43:25 2026 +0000 - [Automatic update for 2026-01-25] + [Automatic update for 2026-03-29] Update manuf, services enterprise numbers, translations, and other items. -commit 1652adaaa1 -Author: Dr. Lars Völker -Date: Sat Jan 24 19:12:29 2026 +0100 +commit 61f8b8f4fb +Author: Roland Knall +Date: Sun Mar 29 11:13:46 2026 +0200 - TECMP: Fixing FlexRay Replay format + doc: Update release notes to include fix for Zip-Slip vulnerability - The Replay Format was not implemented correctly and is being fixed. +commit 25fdcf4cb0 +Author: Stig Bjørlykke +Date: Sat Mar 28 22:46:23 2026 +0000 -commit 820da2a82f -Author: Anders Broman -Date: Sat Jan 24 09:49:27 2026 +0100 + wslua: Fix some tostring formats + + Use %d for integer values. + + AI-Assisted: no + + (cherry picked from commit 903581338379d817a460de38ca96070400591903) - Qt: Speed up expert info proxy model + Co-authored-by: Stig Bjørlykke - When opening the Expert Dialog, the tap information and GUI is - periodically updated to avoid the program looking frozen. Since - expert infos have been added, this causes a relayout. Part of a - relayout is querying for the existence of children (partly to - add the indicator). +commit 96c437e8a4 +Author: John Thacker +Date: Sat Mar 28 02:30:04 2026 +0000 + + ETSI DCP: Fix heap buffer overflow + + The technique used to perform Reed-Solomon decoding in place requires + that extra space be present at the end of the output frame for the + last block's parity bytes and any zeroes (if the code is punctured + because the number of data bytes used is less than the maximum). - The normal process of querying for children in a QSortFilterProxyModel - calculates, if necessary, the mapping from the source model to the - proxy model. This mapping is cached so it can be used later, including - in other member functions. However, the mapping has to be recalculated - each time new items have been added and the model reset in TapDraw. - The mapping involves sorting the rows added to the model. It is expensiv - to repeatedly periodically sort as items are added. + Also guard against a few other problems not in the POC; if RSk + is less than the maximum, memset the punctured bytes to 0, and + if RSk in the packet is greater than the maximum, do not attempt + Reed-Solomon decoding (which might have overflows in the calculations.) - Determining whether or not there are children does not require - sorting, nor counting all the children, as it can stop as soon as - one visible child is found. Override the hasChildren function to - calculate whether or not there are children in a much faster way, - without calculating and caching the mapping. This reduces the time - to open the Expert Dialog dramatically, and also makes it O(N) in - average time instead of something like O(N^2 log N). + Also fix the names of a couple defines which are swapped. - Fixes #20970 + Fix #21122 AI-Assisted: no - (cherry picked from commit f2791659ed855ca7e8699e00666f003561201b47) + (cherry picked from commit e8ef9df09d5a93352e27f2eef5dbb1b65adee0d7) Co-authored-by: John Thacker -commit a148b08f21 -Author: Anders Broman -Date: Sat Jan 24 08:39:43 2026 +0100 +commit 0ef2f508c7 +Author: John Thacker +Date: Thu Mar 26 23:15:26 2026 -0400 + + SSH: Don't memcmp if the MAC size if larger than the maximum supported + + The SSH dissector only attempts to calculate the MAC for certain + algorithms, and in several places uses a fixed size buffer set at + 48 bytes to hold the MAC. If the length of the negotiated MAC is + longer than that, it doesn't try to calculate it and returns a + buffer of length 48 memset to 0, but tries to memcmp that with + the requested length, e.g. 64 if HMAC-SHA2-512 was negotiated, + running into other variables in the frame. Don't call memcmp if + the negotiated length is longer than DIGEST_MAX_SIZE. + (Worse yet is a case of a crafted file with a claim to have + negotiated an extraordinarily long MAC.) + + Fix #21117 + + AI-Assisted: no + (backported from commit 6324bad587891b9f6edf36a61ab0fd8690629977) + +commit 45eb952b12 +Author: John Thacker +Date: Mon Mar 23 13:02:49 2026 +0000 + + RDP: Check for too long segments on the uncompressed path + + The RDP 8.0 compression limits the maximum number of uncompressed + bytes in a single segment to 65,535 [MS-RDPEGFX] 3.1.9.1.2. + Check for that in the uncompressed path. + + Fix #21105 - Qt: Speed up expert info item row calculation + AI-Assisted: no + + (cherry picked from commit 87fb30a03d19bb2a0c8597e10c38f1657310fafd) + + Co-authored-by: John Thacker + +commit 9c458883e8 +Author: Roland Knall +Date: Mon Mar 23 13:11:05 2026 +0000 + + Qt::Guard better when loading zip files + + Prevent traversal attacks using malicously created zip-files + + Closes #21115 + AI-Assisted: no + + AI-Assisted: no|yes [tool(s)] + + (cherry picked from commit 70c86bd39c74fc0052c9a212afc911b41d612388) + + Co-authored-by: Roland Knall + +commit dec5bc8ace +Author: John Thacker +Date: Sun Mar 22 23:31:58 2026 +0000 + + iLBC codec: Fix double-free + + Fixup d871c6c6afad0e634e5d411debe5d8db75218d6b + + Fix #21113 + + AI-Assisted: no + + (cherry picked from commit 24ba8d3ba427b0aeda63ff83e4dbbce363e3ae44) + + Co-authored-by: John Thacker + +commit 15c3f83838 +Author: John Thacker +Date: Sun Mar 22 09:12:14 2026 -0400 + + AMR-NB codec: Fix overflow in mode 7 bandwidth-efficient + + When transforming bandwidth-efficient encoded AMR to octet-aligned + and the speech bits are not an even number of bytes, write the last + bits in the proper place. + + Fix #21111 + + AI-Assisted: no + (cherry picked from commit e8b584d8e67fd8c52ef9feb5cec12864b82ba461) + +commit 52d22cdacf +Author: Gerald Combs +Date: Sun Mar 22 10:17:28 2026 +0000 + + [Automatic update for 2026-03-22] + + Update manuf, services enterprise numbers, translations, and other items. + +commit c16f92caa3 +Author: John Thacker +Date: Sat Mar 21 15:30:05 2026 +0000 + + sbc codec: Fix heap buffer overflow and possible infinite loop + + Check for a 0 or negative return value (error) from sbc_decode and + break out of the loop. + + Decrement the remaining size for the input and output buffers to + prevent a heap buffer overflow + + Thanks to Duc Anh Nguyen for the report and POC and proposed fix, + which I verified manually and tweaked, adding the infinite loop + check. + + Fix #21103 + + AI-Assisted: probably (the report and POC looks AI-assisted) + + (cherry picked from commit db67edfd7422454472ec9eec14781a1d46835872) + + Co-authored-by: John Thacker + +commit f358cf3ac2 +Author: John Thacker +Date: Wed Mar 18 14:54:58 2026 -0400 + + toshiba: Fix a possible buffer overrun + + The Toshiba hexdump file format writes in 8 groups of 2 bytes (4 hex + each) in network byte order, with a padding zero bytes added to the + last group if a packet has an odd number of bytes. + + The implementation of parse_single_hex_dump_line in toshiba.c (different + from functions of the same name in other files) always tries to parse + all 8 groups. In the case of errors, this can end up parsing bytes + read from the file into the fixed line buffer from other lines, or + uninitialized data. Extra data past pkt_len are ignored and won't be + displayed to the user, but if a packet is shorter than the pkt_len + instead of an error incorrect data will be displayed. + + In the worst case, because 'ws_buffer_assure_space' is called with + the actual packet len, but the number of bytes written to the buffer + is always rounded up to 16, it may be able to write off the end of + the Buffer, though the default buffer size and the way it is realloced + makes that unlikely. + + Tested with files from #12394 and #1711 to see that they still work. + + AI-Assisted: no + + (backported from commit 50f4026309e35760f663f58d35602d58e0de7a64) + +commit 33a7679ac8 +Author: Gerald Combs +Date: Sun Mar 15 10:18:34 2026 +0000 + + [Automatic update for 2026-03-15] + + Update manuf, services enterprise numbers, translations, and other items. + +commit 019aeca364 +Author: John Thacker +Date: Sun Mar 15 02:44:15 2026 +0000 + + K12: Fix a possible stack overflow when writing, and print error + + Check the length of a source descriptor record when writing a K12 + file. + + Convert a function from g_hash_table_foreach to using a GHashTableIter + in order to address an concern about error handling already mentioned + in a comment. + + Thank to bcoles for the POC + + Fix #21094 + + AI-Assisted: yes (Claude found the POC and suggested a solution, which + I verified and extended.) + + (backported from commit a79be0f589c945233239aa30b74772fab086cfec) + + Co-authored-by: John Thacker + +commit 1bf8bec58a +Author: Gerald Combs +Date: Thu Mar 12 18:30:10 2026 -0700 + + GitLab CI + tools: update-appdata.py updates + + We now run update-appdata.py in our weekly update job, so we don't need + to run it in the source package job. + + Fix a syntax warning in the script itself. + + (cherry picked from commit 4c4d6cd5797cfc81b43d9d8e2d175caf4804319c) + + Conflicts: + .gitlab-ci.yml + +commit ecc401e5d2 +Author: John Thacker +Date: Fri Mar 13 03:48:34 2026 +0000 + + AFP Spotlight: Add recursion checks + + AFP is sent over DSI, which is segmented over TCP and has a + 32-bit PDU length. This can cause stack overflow from the recursive + calls in spotlight_dissect_query_loop when there is a NULL tree. + + Thanks to bcoles for the POC. + + Fix #21088 - The childItems_ list is only appended to, the items are not sorted - or removed (until destruction). An item is only added as the child - of a single parent, which determines its row from that point onwards. - So we can cache the row upon insertion instead of using indexOf_ and - searching for the child in the parent's list of children. That - reduces a frequently called O(N) operation to O(1). + AI-Assisted: yes (reporter used Claude; I personally verified solution) - Ping #20970 + (cherry picked from commit 6abb63feb490a087cd13dd1fa881dddea1104c9c) + + Co-authored-by: John Thacker + +commit 0b0406be35 +Author: John Thacker +Date: Thu Mar 12 11:09:30 2026 -0400 + + ICMPv6: Fix typo in previous commit + + Actually pass in the subset tvb. + + Fixup 941a5458166690756bd09d91e9ad8682bd0d110c + + AI-Assisted: no + (backported from commit ac7d2b686673e7ceffdafa207eb248c7531d0ae5) + +commit 8a32276ac2 +Author: John Thacker +Date: Wed Mar 11 14:26:15 2026 -0400 + + ICMPv6: Don't parse RA options outside a PvD option when parsing PvD + + The ICMPv6 Router Advertisement PvD option can contain, as a trailer, + "zero or more RA options that would otherwise be valid as part of the + Router Advertisement main body but are instead included in the PvD + Option so as to be ignored by hosts that are not PvD aware."[1] + + When parsing a PvD option, take a subset tvbuffer so that only those + options are parsed when parsing the PvD options, and not the remaining + options in a message. This avoids processing options more than once, + once for each preceding PvD options, which is O(N^2). Use the same + technique as for the option Redirected Header (4). + + Thanks to bcoles for providing a POC. + + Fix #21077 + + [1] https://datatracker.ietf.org/doc/html/rfc8801#section-3.1-3.24 + AI-Assisted: no + + (backported from commit 941a5458166690756bd09d91e9ad8682bd0d110c) + +commit b97470d1b7 +Author: John Thacker +Date: Wed Mar 11 10:11:59 2026 +0000 + + fcswils: Add recursion checks + + The Fibre Channel dissector supports reassembly, so we won't necessarily + run out of packet before running out of stack. + + Fix #21070 + + Thanks to bcoles for reporting this. AI-Assisted: no - (cherry picked from commit be66fffbaae3915d25462fd82b96999b774cffdc) + (cherry picked from commit 202b29b237151f1ff75ee7664bbeffe9fe46eb97) Co-authored-by: John Thacker -commit 6416718af6 +commit 195aec4bff Author: John Thacker -Date: Wed Jan 21 23:28:27 2026 +0000 +Date: Tue Mar 10 20:18:27 2026 +0000 - TLS Utils: For JA4, test if ALPN characters are alphanumeric + Monero: Add recursion checks - The JA4 technical details indicate that the hex representation is - used when the first and last characters are non (ASCII) alphanumeric, - not non (ASCII) printable. + A struct (dictionary) which contains values which are structs + adds two tree layers each time. A minimal size key (length 1) + means 4 octets per struct level. With a very large reassembly + from many TCP segments, this requires recursion checks. - https://github.com/FoxIO-LLC/ja4/blob/main/technical_details/JA4.md#alpn-extension-value + Fix #21066 - Fix #20966 + Thanks to bcoles for the POC. AI-Assisted: no - (cherry picked from commit c074ae7e74ee59b408bf99c2a25419ecc4fcdda2) + (cherry picked from commit 21984e264a49d548333c302e2062a7d206b7810e) Co-authored-by: John Thacker -commit 983aadac63 +commit b01b474b84 +Author: John Thacker +Date: Mon Mar 9 20:33:41 2026 -0400 + + BT DHT: Add recursion checks + + Lists can be as small as two bytes, so in a crafted maximum size UDP + datagram the stack can overflow for stack sizes under 1.5 MiB or so. + + Dictionaries are a little bigger, but go ahead and check anyway + (dictionaries and lists can be nested within each other.) + + Thanks to bcoles for the POC. + + Fix #21067 + + AI-Assisted: no + + (backported from commit 7b2de9d1d129bf78ef45f3610ef0c4dfda9e26eb) + +commit dc5eab52ba +Author: John Thacker +Date: Mon Mar 9 12:39:04 2026 -0400 + + SMB2: Check for offset overflow in two more places + + Use the ckd_add functions (which are available on all currently + supported branches) to make it obvious what is going on and avoid + technically UB. + + Thanks to bcoles for reporting. + + Fix #21073 + + AI-Assisted: no + (backported from commit 084392e363f7b7a9d57993e867d6b8bfcf839d06) + +commit c00ed9b27a Author: Gerald Combs -Date: Sun Jan 18 10:17:18 2026 +0000 +Date: Sun Mar 8 10:17:18 2026 +0000 - [Automatic update for 2026-01-18] + [Automatic update for 2026-03-08] Update manuf, services enterprise numbers, translations, and other items. -commit f9fc043271 -Author: Guy Harris -Date: Wed Jan 14 23:47:29 2026 -0800 +commit 0e9948db77 +Author: Anders Broman +Date: Fri Mar 6 15:42:22 2026 +0100 - dumpcap man page: fix glitches. + Signal-PDU: Wireshark should not stop on illegal profile (bugfix) - Remove stray > after option names. Remove an extra space. + An illegal profile might configure a Signal PDU list Signal entry + as a string type and define in the Signal PDU Signal value. + Wireshark should just ignore that instead of exiting. AI-Assisted: no - (cherry picked from commit 7a08b32b59e2164d5fe9ee5ba0e9f5f7a97189ea) + (cherry picked from commit 7c43b37f313126d036464985dff96c4e9cb40be9) + + Co-authored-by: Dr. Lars Völker -commit 03932a881b +commit db67c78dc2 Author: John Thacker -Date: Thu Jan 15 21:58:12 2026 +0000 +Date: Tue Mar 3 14:15:21 2026 +0000 - tls-utils: Update TLS 1.3 SignatureScheme list + BT HCI_ISO: Don't create a TVB with uninitialized data - Update the value string for the TLS SignatureScheme for recent - registrations, primarily post quantum cryptography. + When reassembling, set the captured length of the TVB to the number of + bytes actually added to the reassembly, not the number of bytes + expected. + + Fix #21049 + + AI-Assisted: no + + (cherry picked from commit 6202845fe67f7ca40629961ab239fdea4be64717) + + Co-authored-by: John Thacker + +commit 6e87487700 +Author: Gerald Combs +Date: Mon Mar 2 13:22:12 2026 -0800 - https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#tls-signaturescheme + GitLab CI: Assign environments to some jobs - Note that the various private use range used by OpenQuantumSafe could be - updated, but this commit does not do so (but does update the URL to - point to the current location.) + AI-Assisted: no + (cherry picked from commit 0d38f6fdf4a7749227b373ceaf4fb31506512425) + + Conflicts: + .gitlab-ci.yml + +commit 6a35cb78c6 +Author: Gerald Combs +Date: Sun Mar 1 10:17:46 2026 +0000 + + [Automatic update for 2026-03-01] + + Update manuf, services enterprise numbers, translations, and other items. + +commit 923802486f +Author: John Thacker +Date: Sat Feb 28 22:04:15 2026 +0000 - Fix #20953 + wmem: Remove G_GNUC_MALLOC from fns that return a pointer to allocator + + Many of the wmem functions return an object which, among other things, + stores a pointer to the wmem_allocator_t used to allocate the memory. + These cannot be marked with G_GNUC_MALLOC (i.e. __attribute__ ((malloc)) ) + because: + + "However, functions like realloc do not have this property, as they may + return pointers to storage containing pointers to existing objects" + + The functions that return a newly allocated memory or a newly allocated + string only, and do not store a pointer to the wmem_allocator_t (but + require being freed appropriately) are fine. + + https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#index-malloc-function-attribute + + https://gitlab.gnome.org/GNOME/glib/-/issues/1465 + + Ping #18216 + + AI-Assisted: no + + (cherry picked from commit ab7990da09242449b3e8a86d0216a89c9764c37d) + + Co-authored-by: John Thacker + +commit 3969cbadc5 +Author: John Thacker +Date: Sat Feb 28 15:12:44 2026 +0000 + + UAT: Fix parsing empty hexstrings at the end of files + + The END_OF_RECORD state expects to see a newline next, so + return it with yyless. + + Do the same work to check if there are enough fields and + fill in defaults when a line ends with an empty hexstring + (i.e., with a comma) as the other cases of premature + termination. + + Also, don't increment the line number in when encountering + a newline when expecting a separator (not enough fields), + because we put the newline back and the END_OF_RECORD state + then increments the line number. + + Fix #21036 + + AI-Assisted: no - (cherry picked from commit c5bb3f71d6e8efeaf97fbbd20bd92fc8681e3bbe) + (cherry picked from commit 690d01eb62dc720ea60017201657e61fe9ea496d) Co-authored-by: John Thacker -commit 73f1cf9c56 +commit e342d67cdd Author: Gerald Combs -Date: Wed Jan 14 12:08:46 2026 -0800 +Date: Wed Feb 25 14:13:29 2026 -0800 - Version: 4.4.13 → 4.4.14 [skip ci] + Version: 4.4.14 → 4.4.15 [skip ci] diff -Nru wireshark-4.4.14/debian/changelog wireshark-4.4.15/debian/changelog --- wireshark-4.4.14/debian/changelog 2026-03-01 16:46:20.000000000 +0000 +++ wireshark-4.4.15/debian/changelog 2026-05-01 20:07:33.000000000 +0000 @@ -1,3 +1,51 @@ +wireshark (4.4.15-0+deb13u1) trixie-security; urgency=medium + + * Team upload. + * New upstream version 4.4.15 (Closes: #1135323) + - CVE-2026-7379: Memory leak in sharkd, allows DoS + - CVE-2026-7378: Crash in sharkd, allows DoS + - CVE-2026-7376: Crash in sharkd, allows DoS + - CVE-2026-7375: UDS Infinite loop, allows DoS + - CVE-2026-6870: GSM dissector crash leading to DoS + - CVE-2026-6869: WebSocket dissector crash leading to DoS + - CVE-2026-6868: HTTP dissector crash leading to DoS + - CVE-2026-6867: SMB2 dissector crash leading to DoS + - CVE-2026-6538: BEEP dissector crash leading to DoS + - CVE-2026-6537: ZigBee dissector crash leading to DoS + - CVE-2026-6535: zlib crash in Wireshark, allows DoS + - CVE-2026-6534: USB infinite loop, allows DoS + - CVE-2026-6533: LZ77 crash in Wireshark, allows DoS + - CVE-2026-6532: Kismet crash in Wireshark, allows DoS + - CVE-2026-6531: SANE Infinite loop, allows DoS + - CVE-2026-6530: DCP-ETSI crash in Wireshark, allows DoS + - CVE-2026-6529: iLBC crash in Wireshark, allows DoS + - CVE-2026-6527: ASN.1 crash in Wireshark, allows DoS + - CVE-2026-6524: MySQL crash in Wireshark, allows DoS + - CVE-2026-6523: GNW Infinite loop, allows DoS + - CVE-2026-6522: RPKI-Router Infinite loop, allows DoS + - CVE-2026-6521: OpenFlow v5 Infinite loop, allows DoS + - CVE-2026-6520: OpenFlow v6 Infinite loop, allows DoS + - CVE-2026-6519: MBIM Infinite loop, allows DoS + - CVE-2026-5657: iLBC crash in Wireshark, allows DoS + - CVE-2026-5656: Profile import path traversal DoS/RCE + - CVE-2026-5654: AMR-NB crash in Wireshark, allows DoS + - CVE-2026-5653: DCP-ETSI crash in Wireshark, allows DoS + - CVE-2026-5409: Monero crash in Wireshark, allows DoS + - CVE-2026-5408: BT-DHT crash in Wireshark, allows DoS + - CVE-2026-5407: SMB2 Infinite loop, allows DoS + - CVE-2026-5406: FC-SWILS crash in Wireshark, allows DoS + - CVE-2026-5405: RDP crash in Wireshark, allows DoS/RCE + - CVE-2026-5404: K12 RF5 parser crash DoS, allows DoS + - CVE-2026-5403: SBC crash in Wireshark, allows DoS/RCE + - CVE-2026-5401: AFP Spotlight crash in Wireshark, allows DoS + - CVE-2026-5299: ICMPv6 PvD crash in Wireshark, allows DoS + * d/gbp.conf: Update to trixie + * d/libwsutil16.symbols: Update symbols to reflect upstream + * d/libwireshark18.symbols: Update symbols to reflect upstream + * d/watch: Restrict to 4.4.x releases + + -- Matheus Polkorny Fri, 01 May 2026 17:07:33 -0300 + wireshark (4.4.14-0+deb13u1) trixie; urgency=medium * Non-maintainer upload. diff -Nru wireshark-4.4.14/debian/gbp.conf wireshark-4.4.15/debian/gbp.conf --- wireshark-4.4.14/debian/gbp.conf 2026-01-30 14:29:15.000000000 +0000 +++ wireshark-4.4.15/debian/gbp.conf 2026-05-01 20:07:33.000000000 +0000 @@ -1,5 +1,5 @@ [DEFAULT] pristine-tar = True -debian-branch = debian/master -upstream-branch = upstream/latest +debian-branch = debian/trixie +upstream-branch = upstream/trixie upstream-vcs-tag = v%(version)s diff -Nru wireshark-4.4.14/debian/libwireshark18.symbols wireshark-4.4.15/debian/libwireshark18.symbols --- wireshark-4.4.14/debian/libwireshark18.symbols 2026-01-30 14:29:15.000000000 +0000 +++ wireshark-4.4.15/debian/libwireshark18.symbols 2026-05-01 20:07:33.000000000 +0000 @@ -286,6 +286,7 @@ decode_zcl_time_in_minutes@Base 2.5.2 decode_zcl_time_in_seconds@Base 2.5.2 decrement_dissection_depth@Base 4.2.4 + decrement_dissection_depth_by_n@Base 4.4.15 delete_itu_tcap_subdissector@Base 1.9.1 deregister_depend_dissector@Base 2.1.0 deregister_dfilter_translator@Base 4.4.0 @@ -1113,6 +1114,7 @@ in_cksum@Base 1.9.1 in_cksum_ret_partial@Base 4.2.0 increment_dissection_depth@Base 4.2.4 + increment_dissection_depth_by_n@Base 4.4.15 init_srt_table@Base 1.99.8 init_srt_table_row@Base 1.99.8 ip_checksum@Base 1.99.0 diff -Nru wireshark-4.4.14/debian/libwsutil16.symbols wireshark-4.4.15/debian/libwsutil16.symbols --- wireshark-4.4.14/debian/libwsutil16.symbols 2026-01-30 14:29:15.000000000 +0000 +++ wireshark-4.4.15/debian/libwsutil16.symbols 2026-05-01 20:07:33.000000000 +0000 @@ -431,6 +431,7 @@ ws_ascii_strnatcasecmp@Base 1.99.1 ws_ascii_strnatcmp@Base 1.99.1 ws_base32_decode@Base 2.3.0 + ws_basebuftou64@Base 4.4.15 ws_basestrtou16@Base 2.9.0 ws_basestrtou32@Base 2.9.0 ws_basestrtou64@Base 2.9.0 @@ -442,6 +443,7 @@ ws_buffer_free@Base 1.99.0 ws_buffer_init@Base 1.99.0 ws_buffer_remove_start@Base 1.99.0 + ws_buftou64@Base 4.4.15 ws_cleanup_sockets@Base 3.1.0 ws_clock_get_realtime@Base 3.7.0 ws_cmac_buffer@Base 3.1.0 @@ -460,6 +462,7 @@ ws_getopt_long@Base 3.5.1 ws_getopt_long_only@Base 3.5.1 ws_gmtime_r@Base 4.1.1 + ws_hexbuftou64@Base 4.4.15 ws_hexstrtou16@Base 2.3.0 ws_hexstrtou32@Base 2.3.0 ws_hexstrtou64@Base 2.3.0 diff -Nru wireshark-4.4.14/debian/watch wireshark-4.4.15/debian/watch --- wireshark-4.4.14/debian/watch 2026-01-30 14:29:15.000000000 +0000 +++ wireshark-4.4.15/debian/watch 2026-05-01 20:07:33.000000000 +0000 @@ -1,3 +1,3 @@ version=4 opts="searchmode=plain" \ - https://gitlab.com/wireshark/@PACKAGE@/tags?sort=updated_desc -/archive/v?\d\.[02468]\.[\d.]+/@PACKAGE@-@ANY_VERSION@@ARCHIVE_EXT@ + https://gitlab.com/wireshark/@PACKAGE@/tags?sort=updated_desc -/archive/v?4\.4\.[\d.]+/@PACKAGE@-@ANY_VERSION@@ARCHIVE_EXT@ diff -Nru wireshark-4.4.14/doc/attributes.adoc wireshark-4.4.15/doc/attributes.adoc --- wireshark-4.4.14/doc/attributes.adoc 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/doc/attributes.adoc 2026-04-29 20:10:51.000000000 +0000 @@ -1,6 +1,6 @@ // Common attributes -:wireshark-version: 4.4.14 +:wireshark-version: 4.4.15 :logray-version: 0.9.0 // Required for btn, kbd:, and menu: macros. diff -Nru wireshark-4.4.14/doc/release-notes.adoc wireshark-4.4.15/doc/release-notes.adoc --- wireshark-4.4.14/doc/release-notes.adoc 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/doc/release-notes.adoc 2026-04-29 20:10:51.000000000 +0000 @@ -22,27 +22,424 @@ The following vulnerabilities have been fixed: -* wssalink:2026-05[] {notable} -USB HID dissector memory exhaustion. -wsbuglink:20972[]. -cveidlink:2026-3201[]. -// Fixed in master: f87c426b30 -// Fixed in release-4.6: 168bf05775 -// Fixed in release-4.4: 5e80615ebc -// CVSS AV:L/AC:H/PR:N/UI:R/S:U/C:N/I:N/A:H +* wssalink:2026-08[] {notable} +Monero dissector crash. +wsbuglink:21066[]. +cveidlink:2026-5409[]. +// Fixed in master: 21984e26 +// Fixed in release-4.6: 7824939b +// Fixed in release-4.4: 195aec4b +// CVSS AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H +// CWE-674 +// * Monero dissector stack overflow via nested structs. wsbuglink:21066[]. + +* wssalink:2026-09[] {notable} +BT-DHT dissector crash. +wsbuglink:21067[]. +cveidlink:2026-5408[]. +// Fixed in master: 7b2de9d1 +// Fixed in release-4.6: 6ac32b91 +// Fixed in release-4.4: b01b474b +// CVSS AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H +// CWE-674 +// * BT-DHT dissector stack overflow via nested structs. wsbuglink:21067[]. + +* wssalink:2026-10[] {notable} +FC-SWILS dissector crash. +wsbuglink:21070[]. +cveidlink:2026-5406[]. +// Fixed in master: 202b29b2 +// Fixed in release-4.6: 1d785ae4 +// Fixed in release-4.4: b97470d1 +// CVSS AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H +// CWE-674 +// * FC-SWILS dissector stack overflow via nested zone set objects. wsbuglink:21070[]. + +* wssalink:2026-11[] {notable} +SMB2 dissector infinite loop. +wsbuglink:21073[]. +cveidlink:2026-5407[]. +// Fixed in master: b85c56fc +// Fixed in release-4.6: c129e07c +// Fixed in release-4.4: dc5eab52 +// CVSS AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H +// CWE-835 +// * SMB2 dissector infinite loop denial of service. wsbuglink:21073[]. + +* wssalink:2026-12[] {notable} +ICMPv6 dissector crash. +wsbuglink:21077[]. +cveidlink:2026-5299[]. +// Fixed in master: 941a5458, ac7d2b68 +// Fixed in release-4.6: 0a350658, 7d658e92 +// Fixed in release-4.4: 8a32276a, 0b0406be +// CVSS AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H +// CWE-674 +// * ICMPv6 PvD exponential recursion denial of service. wsbuglink:21077[]. + +* wssalink:2026-13[] {notable} +AFP dissector crash. +wsbuglink:21088[]. +cveidlink:2026-5401[]. +// Fixed in master: 6abb63fe +// Fixed in release-4.6: 49972077 +// Fixed in release-4.4: ecc401e5 +// CVSS AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H +// CWE-674 +// * AFP Spotlight dissector stack overflow. wsbuglink:21088[]. + +* wssalink:2026-15[] {notable} +K12 RF5 file parser crash. +wsbuglink:21094[]. +cveidlink:2026-5404[]. +// Fixed in master: a79be0f5 +// Fixed in release-4.6: a6200d88 +// Fixed in release-4.4: 019aeca3 +// CVSS AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H +// CWE-122 +// * K12 RF5 file parser stack buffer overflow. wsbuglink:21094[]. + +* wssalink:2026-16[] {notable} +SBC codec crash and possible code execution. +wsbuglink:21103[]. +cveidlink:2026-5403[]. +// Fixed in master: db67edfd +// Fixed in release-4.6: d50df674 +// Fixed in release-4.4: c16f92ca +// CVSS AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:H +// CWE-122 +// * Heap Buffer Overflow in SBC codec. wsbuglink:21103[]. + +* wssalink:2026-17[] {notable} +RDP dissector crash and possible code execution. +wsbuglink:21105[]. +cveidlink:2026-5405[]. +// Fixed in master: 87fb30a0 +// Fixed in release-4.6: ca4b7652 +// Fixed in release-4.4: 45eb952b +// CVSS AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H +// CWE-122 +// * RDP ZGFX Heap Buffer Overflow. wsbuglink:21105[]. + +* wssalink:2026-18[] {notable} +AMR-NB codec crash. +wsbuglink:21111[]. +cveidlink:2026-5654[]. +// Fixed in master: 11497589 +// Fixed in release-4.6: 10717e2a +// Fixed in release-4.4: 15c3f838 +// CVSS AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H +// CWE-121 +// * Stack Buffer Overflow — AMR-NB Bandwidth-Efficient Codec Decoder. wsbuglink:21111[]. + +* wssalink:2026-20[] {notable} +iLBC audio codec crash. +wsbuglink:21113[]. +cveidlink:2026-5657[]. +// Fixed in master: 24ba8d3b +// Fixed in release-4.6: 5cb9715f +// Fixed in release-4.4: dec5bc8a +// CVSS AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H +// CWE-415 +// * Codec iLBC Double-Free in codec_iLBC_release / via wrong g_free() target. wsbuglink:21113[]. + +* wssalink:2026-21[] {notable} +Profile import crash and possible code execution. +wsbuglink:21115[]. +cveidlink:2026-5656[]. +// Fixed in master: 70c86bd3 +// Fixed in release-4.6: 1b590291 +// Fixed in release-4.4: 9c458883 +// CVSS AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H +// CWE-22 +// * Wireshark Profile Import RCE via Zip-Slip Vulnerability (Security Bug) wsbuglink:21115[]. + +* wssalink:2026-22[] {notable} +DCP-ETSI protocol dissector crash. +wsbuglink:21122[]. +cveidlink:2026-5653[]. +// Fixed in master: e8ef9df0 +// Fixed in release-4.6: 0939cf98 +// Fixed in release-4.4: 96c437e8 +// CVSS AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H +// CWE-122 +// * Heap Buffer Overflow in DCP-ETSI PFT Reed-Solomon Error Correction. wsbuglink:21122[]. + +* wssalink:2026-23[] {notable} +BEEP protocol dissector crash. +wsbuglink:21120[]. +cveidlink:2026-6538[]. +// Fixed in master: 9d747dcb +// Fixed in release-4.6: d0435f65 +// Fixed in release-4.4: dc04b00b +// CVSS AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H +// CWE-121 +// * Wireshark BEEP Dissector - Stack-call overflow caused by recursive function. wsbuglink:21120[]. + +* wssalink:2026-24[] {notable} +ZigBee protocol dissector crash. +wsbuglink:21125[]. +cveidlink:2026-6537[]. +// Fixed in master: d5929f8e +// Fixed in release-4.6: 9e979255 +// Fixed in release-4.4: 400da53f +// CVSS AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H +// CWE-121 +// * Stack Buffer Overflow in zigbee decrypt_data with controlled write bytes. wsbuglink:21125[]. + +* wssalink:2026-26[] {notable} +Dissection engine zlib decompression crash. +wsbuglink:21097[], wsbuglink:21098[]. +cveidlink:2026-6535[]. +// Fixed in master: db0beded +// Fixed in release-4.6: 5072fe9e +// Fixed in release-4.4: 6a2aa369 +// CVSS AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H // CWE-1325 -// * USB-HID: Resource exhaustion in parse_report_descriptor() due to missing array size limit. wsbuglink:20972[]. +// CWE-122 -* wssalink:2026-07[] {notable} -RF4CE Profile dissector crash. -wsbuglink:21009[]. -cveidlink:2026-3203[]. -// Fixed in master: 17215397c1 -// Fixed in release-4.6: 0c4c5a531f -// Fixed in release-4.4: d487e0e07b +* wssalink:2026-27[] {notable} +USB HID protocol dissector infinite loop. +wsbuglink:21121[]. +cveidlink:2026-6534[]. +// Fixed in master: 9ed34578 +// Fixed in release-4.6: a9ae0d88 +// Fixed in release-4.4: a9ae0d88 +// CVSS AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H +// CWE-835 +// * USB HID Dissector: CPU Exhaustion via Unbounded Loop. wsbuglink:21121[]. + +* wssalink:2026-28[] {notable} +Dissection engine LZ77 decompression crash. +wsbuglink:21127[]. +cveidlink:2026-6533[]. +// Fixed in master: 21e3f89b +// Fixed in release-4.6: 429bbf89 +// Fixed in release-4.4: 12af517a +// CVSS AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H +// CWE-1325 +// * SMB2 LZ77 Decompression Bomb (crash/dos) wsbuglink:21127[]. + +* wssalink:2026-29[] {notable} +Kismet protocol dissector crash. +wsbuglink:21129[], wsbuglink:21128[]. +cveidlink:2026-6532[]. +// Fixed in master: cd6e74e5 +// Fixed in release-4.6: 93ce4221 +// Fixed in release-4.4: 043a129b // CVSS AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H // CWE-126 -// * Fuzz job crash: fuzz-2026-02-06-13021968622.pcap. wsbuglink:21009[]. +// * Kismet Dissector Heap-Buffer-Overflow (crash/OOB) wsbuglink:21129[]. + +* wssalink:2026-30[] {notable} +SANE protocol dissector infinite loop. +wsbuglink:21139[]. +cveidlink:2026-6531[]. +// Fixed in master: bd2652a9 +// Fixed in release-4.6: 1bd2a52a +// Fixed in release-4.4: 5fac3047 +// CVSS AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H +// CWE-835 +// * SANE dissector - Uncontrolled Resource Consumption (crash/dos) wsbuglink:21139[]. + +* wssalink:2026-31[] {notable} +DCP-ETSI protocol dissector crash. +wsbuglink:21144[]. +cveidlink:2026-6530[]. +// Fixed in master: 2a44f117 +// Fixed in release-4.6: 6022a8af +// Fixed in release-4.4: cea357ad +// CVSS AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H +// CWE-122 +// * DCP-ETSI PFT rs_deinterleave Heap Buffer Overflow. wsbuglink:21144[]. + +* wssalink:2026-32[] {notable} +iLBC audio codec crash. +wsbuglink:21145[]. +cveidlink:2026-6529[]. +// Fixed in master: 7a284824 +// Fixed in release-4.6: 9d420486 +// Fixed in release-4.4: 78ccbcb6 +// CVSS AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H +// CWE-122 +// * iLBC Codec Multi-Frame Heap Buffer Overflow. wsbuglink:21145[]. + +* wssalink:2026-34[] {notable} +ASN.1 PER protocol dissector crash. +wsbuglink:21149[]. +cveidlink:2026-6527[]. +// Fixed in master: 4b48d4f5 +// Fixed in release-4.6: b0a28c5a +// Fixed in release-4.4: a4150711 +// CVSS AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H +// CWE-674 +// * PER Dissector Missing Recursion Depth Limits. wsbuglink:21149[]. + +* wssalink:2026-37[] {notable} +MySQL protocol dissector crash. +wsbuglink:21172[]. +cveidlink:2026-6524[]. +// Fixed in master: 62a4c4ba +// Fixed in release-4.6: 360f7bed +// Fixed in release-4.4: dfc1c012 +// CVSS AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H +// CWE-824 +// * Pointer dereference via commented out initialization in MySQL dissector. wsbuglink:21172[]. + +* wssalink:2026-38[] {notable} +GNW protocol dissector infinite loop. +wsbuglink:21177[]. +cveidlink:2026-6523[]. +// Fixed in master: dae485a9 +// Fixed in release-4.6: 5e9db05e +// Fixed in release-4.4: 48fbc030 +// CVSS AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H +// CWE-835 +// * GNW (GeoNetworking) Dissector - Infinite Loop (crash/dos) wsbuglink:21177[]. + +* wssalink:2026-39[] {notable} +OpenFlow v5 protocol dissector infinite loops. +wsbuglink:21182[], wsbuglink:21188[]. +cveidlink:2026-6521[]. +// Fixed in master: 92fdf8e0, c15c2591 +// Fixed in release-4.6: 55fba4af, 27a10847 +// Fixed in release-4.4: c9bc26df, ae6ad5ec +// CVSS AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H +// CWE-835 +// * OpenFlow v5 Dissector - Zero Length Action Leads to Infinite Loop (crash/dos) wsbuglink:21182[]. +// * OpenFlow v5 Dissector - tablemod property Loop with 0 Length Leads to Infinite Loop (crash/dos) wsbuglink:21188[]. + +* wssalink:2026-40[] {notable} +OpenFlow v6 protocol dissector infinite loop. +wsbuglink:21181[]. +cveidlink:2026-6520[]. +// Fixed in master: c8b10529 +// Fixed in release-4.6: a2831393 +// Fixed in release-4.4: cdc03943 +// CVSS AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H +// CWE-835 +// * OpenFlow v6 Dissector - Bundle Property Underflow Leads to Infinite Loop (crash/dos) wsbuglink:21181[]. + +* wssalink:2026-41[] {notable} +MBIM dissector infinite loop. +wsbuglink:21184[]. +cveidlink:2026-6519[]. +// Fixed in master: e0b93dfc +// Fixed in release-4.6: 568f5e85 +// Fixed in release-4.4: 9ac0b863 +// CVSS AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H +// CWE-835 +// * MBIM Dissector - Unchecked buffer_length Leads to Infinite Loop (crash/dos) wsbuglink:21184[]. + +* wssalink:2026-42[] {notable} +RPKI-Router protocol dissector infinite loop. +wsbuglink:21186[]. +cveidlink:2026-6522[]. +// Fixed in master: 65c4e3e0 +// Fixed in release-4.6: 7de45fa2 +// Fixed in release-4.4: 277d7fd3 +// CVSS AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H +// CWE-835 +// * RPKI-RTR Dissector - Infinite Loop (crash/dos) wsbuglink:21186[]. + +* wssalink:2026-43[] {notable} +GSM RP protocol dissector crash. +wsbuglink:21189[]. +cveidlink:2026-6870[]. +// Fixed in master: 6fc954bb +// Fixed in release-4.6: c0af1f86 +// Fixed in release-4.4: 4a70bf70 +// CVSS AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H +// CWE-824 +// * stale g_tree in packet-gsm_a_rp.c when RP User-Data is dissected via BSSMAP VGCS-SMS leads to heap overflow read (crash/oob) wsbuglink:21189[]. + +* wssalink:2026-44[] {notable} +WebSocket protocol dissector crash. +wsbuglink:21190[]. +cveidlink:2026-6869[]. +// Fixed in master: d655b4eb +// Fixed in release-4.6: 4715a467 +// Fixed in release-4.4: 9e74a978 +// CVSS AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H +// CCWE-1325 +// * DoS - WebSocket "permessage-deflate" Unbounded Decompression / zlib bomb. wsbuglink:21190[]. + +* wssalink:2026-45[] {notable} +SMB2 protocol dissector crash. +wsbuglink:21191[]. +// cveidlink:2026-xxx[]. +// Fixed in master: 8e3303b3 +// Fixed in release-4.6: 242ad18e +// Fixed in release-4.4: c4fb4bd6 +// CVSS AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H +// CWE-1325 +// * DoS - SMB2 Chained PATTERN_V1 Decompression Bomb. wsbuglink:21191[]. + +* wssalink:2026-46[] {notable} +HTTP protocol dissector crash. +wsbuglink:21185[]. +cveidlink:2026-6868[]. +// Fixed in master: f361a7c8 +// Fixed in release-4.6: cd693e8d +// Fixed in release-4.4: 4cb8f0fd +// CVSS AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H +// CWE-121 +// * HTTP Dissector - Stack Buffer Overflow via X.25 conversation path (crash/oob) wsbuglink:21185[]. + +* wssalink:2026-47[] {notable} +Sharkd utility memory leak. +wsbuglink:21214[]. +// cveidlink:2026-xxx[]. +// Fixed in master: 9144a546 +// Fixed in release-4.6: 6df8e3cb +// Fixed in release-4.4: ddc25358 +// CVSS AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H +// CWE-401 +// * sharkd: cf_open does not free previous capture wtap on reload. wsbuglink:21214[]. + +* wssalink:2026-48[] {notable} +Sharkd utility crash. +wsbuglink:21206[]. +// cveidlink:2026-xxx[]. +// Fixed in master: 7c91ecb9 +// Fixed in release-4.6: 66f1d587 +// Fixed in release-4.4: a8da9519 +// CVSS AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H +// CWE-476 +// * sharkd: NULL pointer dereference in setcomment when comment parameter is omitted. wsbuglink:21206[]. + +* wssalink:2026-49[] {notable} +Sharkd utility crash. +wsbuglink:21207[]. +// cveidlink:2026-xxx[]. +// Fixed in master: a8f60a2a +// Fixed in release-4.6: d36a9c74 +// Fixed in release-4.4: 8aa3da53 +// CVSS AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H +// CWE-122 +// * sharkd: heap-buffer-overflow in frames method via cached filter bitmap from previously-loaded capture. wsbuglink:21207[]. + +* wssalink:2026-50[] {notable} +UDS protocol dissector infinite loop. +wsbuglink:21225[]. +// cveidlink:2026-xxx[]. +// Fixed in master: f61f43d2 +// Fixed in release-4.6: 3f6e57af +// Fixed in release-4.4: 61777827 +// CVSS AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H +// CWE-835 +// * Infinite Loop in UDS DDDI Dissector results in Denial of Service. wsbuglink:21225[]. + + +// * wssalink:2026-51[] {notable} +// Foo dissector {crash,infinite loop,memory leak}. +// wsbuglink:xxx[]. +// cveidlink:2026-xxx[]. +// Fixed in master: xxx +// Fixed in release-4.6: xxx +// Fixed in release-4.4: xxx +// CVSS AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H +// CWE-824 The following bugs have been fixed: @@ -51,17 +448,30 @@ //* cveidlink:2014-2486[] //* Wireshark took a bite out of each of your freshly baked muffins until it found the perfect one. {notable} -* Bug in decoding 5G NAS message - Extended CAG information list IE. wsbuglink:20946[]. -* PQC signature algorithm not reported in signature_algorithms. wsbuglink:20953[]. -* Unexpected JA4 ALPN values when space characters sent. wsbuglink:20966[]. -* Expert Info seems to have quadratic performance (gets slower and slower) wsbuglink:20970[]. -* USB-HID: Resource exhaustion in parse_report_descriptor() due to missing array size limit. wsbuglink:20972[]. -* Fuzz job crash: fuzz-2026-02-01-12944805400.pcap [Zigbee Direct Tunneling Zigbee NWK PDUs NULL hash table] wsbuglink:20977[]. -* RDM status in Output Status (GoodOutputB) field incorrectly decoded in Art-Net PollReply dissector. wsbuglink:20980[]. -* TDS dissector desynchronizes on RPC DATENTYPE (0x28) due to incorrect expectation of TYPE_VARLEN (MaxLen) wsbuglink:21001[]. -* Only first HTTP POST is parsed inside SOCKS with "Decode As" wsbuglink:21006[]. -* Fuzz job crash: fuzz-2026-02-06-13021968622.pcap. wsbuglink:21009[]. -* New Diameter RAT-Types in TS 29.212 not decoded. wsbuglink:21012[]. +* Over large memory usage when uncompressing high compression ratio http payload. wsbuglink:13779[]. +* WSUG: Enabled Protocols dialog needs an update. wsbuglink:20871[]. +* SMB2 decryption keys in smb2_seskey_list are not loaded on restart. wsbuglink:21036[]. +* Fuzz job issue: fuzz-2026-03-01-13307044520.pcap. wsbuglink:21049[]. +* Window with a message for ssh_strict_fopen. wsbuglink:21051[]. +* Fuzz job crash: fuzz-2026-03-25-13637733472.pcap. wsbuglink:21117[]. +* dumpcap TCP@ section-header parsing remote heap corruption. wsbuglink:21132[]. +* On Windows, the Follow Stream feature output is shown in proportional font after zooming. wsbuglink:21137[]. +* RTP Streams dialog Time of Day inconsistent behavior. wsbuglink:21138[]. +* RF4CE NWK Dissector Heap Buffer Overflow (crash/OOB) wsbuglink:21150[]. +* NetXray/Sniffer Padding Integer Underflow. wsbuglink:21152[]. +* HTTP/2 ALTSVC/PRIORITY_UPDATE Frame Length Truncation (24-bit to 16-bit) wsbuglink:21155[]. +* Snort config parser 2 buffer overflows. wsbuglink:21165[]. +* ESP NULL Encryption Integer Underflow triggers Heap Overflow. wsbuglink:21166[]. +* Heap buffer overflow in ISO 8583 dissector bin2hex() wsbuglink:21171[]. +* wslua: NULL pointer dereference in get_dissector when passing an invalid GUID string to an FT_GUID table. wsbuglink:21194[]. +* Fuzz job UTF-8 encoding issue: fuzz-2026-04-16-13947406035.pcap. wsbuglink:21199[]. +* Qt: Waterfall bars misisng in conversation overview when "limit to display filter" is active. wsbuglink:21204[]. +* text2pcap: heap-buffer-overflow in memmove when -P"dissector" payload exceeds reserved space. wsbuglink:21208[]. +* text2pcap : Stack overflow via unbounded "g_alloca" in regex "seqno" wsbuglink:21209[]. +* editcap: --novlan integer underflow in sll_remove_vlan_info causes denial of service on short SLL captures. wsbuglink:21210[]. +* NAS-5GS - Mapping issue between IEI 0x7B and "S-NSSAI location validity information" IE. wsbuglink:21218[]. +* RTP-MIDI dissector reports incorrect value for MTC Quarter Frame data. wsbuglink:21231[]. + // == Known Bugs @@ -78,16 +488,98 @@ === Updated Protocol Support // Add one protocol per line between the -- delimiters. -// rg -A1 '(define PSNAME|proto_register_protocol[^_])' $(git diff --name-only v4.4.13.. | rg packet- | sort -u) +// rg -A1 '(define PSNAME|proto_register_protocol[^_])' $(git diff --name-only v4.4.14.. | rg packet- | sort -u) [commaize] -- -Art-Net +ATN-ULCS +AFP +AIN +ANSI TCAP +BEEP +BT-DHT +BT HCI ISO +CAMEL +ChargingASE +CMIP +CMP +DAP +DCP-ETSI +DISP +E1AP +E2AP +F1AP +FC-SWILS +FTAM +GNW +GLOW +GPRSCDR +GSM RP +GSM MAP +H.225.0 +H.245 +H.248 +H.450.ROS +H.450 +HNBAP +HTTP +HTTP2 +ICMPv6 +IDMP +IEEE 1609.2 +INAP +IPv4 +IPsec +IPv6 +ISO 8583 +ITS +Kismet +LCSAP +LDAP +LPPa +M2AP +M3AP +MBIM +MMS +Monero +MySQL NAS-5GS -TDS -TECMP +NBAP +NGAP +NRPPa +OpenFlow 1.5 +OpenFlow 1.5 +P1 +P22 +P7 +PCAP +Q932.ROS +QSIG +QUIC +RANAP +RF4CE +RNSAP +RPKI-Router +RRLP +RTPS +RUA +S1AP +SABP +SANE +SBcAP +Signal PDU +SMB2 +Snort +SSH +UDS USB HID +WebSocket +X2AP +X509CE +X509IF +X509SAT +XnAP +Z39.50 ZBD -ZB TLV -- === New and Updated Capture File Support @@ -96,7 +588,9 @@ // Add one file type per line between the -- delimiters. [commaize] -- -BLF +K12 +Cinco NetXray/Sniffer +Toshiba Compact ISDN Router -- === New and Updated File Format Decoding Support @@ -115,6 +609,33 @@ == Prior Versions +Wireshark 4.4.14 included the following changes. +See the +https://www.wireshark.org/docs/relnotes/wireshark-4.4.14.html[release notes] +for details: + +* wssalink:2026-05[] +USB HID dissector memory exhaustion. +wsbuglink:20972[]. +cveidlink:2026-3201[]. + +* wssalink:2026-07[] +RF4CE Profile dissector crash. +wsbuglink:21009[]. +cveidlink:2026-3203[]. + +* Bug in decoding 5G NAS message - Extended CAG information list IE. wsbuglink:20946[]. +* PQC signature algorithm not reported in signature_algorithms. wsbuglink:20953[]. +* Unexpected JA4 ALPN values when space characters sent. wsbuglink:20966[]. +* Expert Info seems to have quadratic performance (gets slower and slower) wsbuglink:20970[]. +* USB-HID: Resource exhaustion in parse_report_descriptor() due to missing array size limit. wsbuglink:20972[]. +* Fuzz job crash: fuzz-2026-02-01-12944805400.pcap [Zigbee Direct Tunneling Zigbee NWK PDUs NULL hash table] wsbuglink:20977[]. +* RDM status in Output Status (GoodOutputB) field incorrectly decoded in Art-Net PollReply dissector. wsbuglink:20980[]. +* TDS dissector desynchronizes on RPC DATENTYPE (0x28) due to incorrect expectation of TYPE_VARLEN (MaxLen) wsbuglink:21001[]. +* Only first HTTP POST is parsed inside SOCKS with "Decode As" wsbuglink:21006[]. +* Fuzz job crash: fuzz-2026-02-06-13021968622.pcap. wsbuglink:21009[]. +* New Diameter RAT-Types in TS 29.212 not decoded. wsbuglink:21012[]. + Wireshark 4.4.13 included the following changes. See the https://www.wireshark.org/docs/relnotes/wireshark-4.4.13.html[release notes] diff -Nru wireshark-4.4.14/doc/wsdg_src/wsdg_quick_setup.adoc wireshark-4.4.15/doc/wsdg_src/wsdg_quick_setup.adoc --- wireshark-4.4.14/doc/wsdg_src/wsdg_quick_setup.adoc 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/doc/wsdg_src/wsdg_quick_setup.adoc 2026-04-29 20:10:51.000000000 +0000 @@ -796,7 +796,7 @@ mkdir build && cd build # Ninja generator is the default - cmake -DENABLE_CCACHE=On -DFETCH_lua=Yes .. + cmake -DENABLE_CCACHE=On .. ninja ninja test # optional, to run the test suite ninja install # optional, install to the MSYS2 shell path diff -Nru wireshark-4.4.14/doc/wsug_src/capinfos-h.txt wireshark-4.4.15/doc/wsug_src/capinfos-h.txt --- wireshark-4.4.14/doc/wsug_src/capinfos-h.txt 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/doc/wsug_src/capinfos-h.txt 2026-04-29 20:10:51.000000000 +0000 @@ -1,4 +1,4 @@ -Capinfos (Wireshark) 4.4.14 (v4.4.14rc0-2-gf9fc04327122) +Capinfos (Wireshark) 4.4.15 (v4.4.15rc0-2-g923802486f17) Print various information (infos) about capture files. See https://www.wireshark.org for more information. diff -Nru wireshark-4.4.14/doc/wsug_src/dumpcap-h.txt wireshark-4.4.15/doc/wsug_src/dumpcap-h.txt --- wireshark-4.4.14/doc/wsug_src/dumpcap-h.txt 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/doc/wsug_src/dumpcap-h.txt 2026-04-29 20:10:51.000000000 +0000 @@ -1,4 +1,4 @@ -Dumpcap (Wireshark) 4.4.14 (v4.4.14rc0-2-gf9fc04327122) +Dumpcap (Wireshark) 4.4.15 (v4.4.15rc0-2-g923802486f17) Capture network packets and dump them into a pcapng or pcap file. See https://www.wireshark.org for more information. diff -Nru wireshark-4.4.14/doc/wsug_src/editcap-h.txt wireshark-4.4.15/doc/wsug_src/editcap-h.txt --- wireshark-4.4.14/doc/wsug_src/editcap-h.txt 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/doc/wsug_src/editcap-h.txt 2026-04-29 20:10:51.000000000 +0000 @@ -1,4 +1,4 @@ -Editcap (Wireshark) 4.4.14 (v4.4.14rc0-2-gf9fc04327122) +Editcap (Wireshark) 4.4.15 (v4.4.15rc0-2-g923802486f17) Edit and/or translate the format of capture files. See https://www.wireshark.org for more information. Binary files /srv/release.debian.org/tmp/whAahZ_SBV/wireshark-4.4.14/doc/wsug_src/images/ws-enabled-protocols.png and /srv/release.debian.org/tmp/dNWLxMgo3I/wireshark-4.4.15/doc/wsug_src/images/ws-enabled-protocols.png differ diff -Nru wireshark-4.4.14/doc/wsug_src/mergecap-h.txt wireshark-4.4.15/doc/wsug_src/mergecap-h.txt --- wireshark-4.4.14/doc/wsug_src/mergecap-h.txt 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/doc/wsug_src/mergecap-h.txt 2026-04-29 20:10:51.000000000 +0000 @@ -1,4 +1,4 @@ -Mergecap (Wireshark) 4.4.14 (v4.4.14rc0-2-gf9fc04327122) +Mergecap (Wireshark) 4.4.15 (v4.4.15rc0-2-g923802486f17) Merge two or more capture files into one. See https://www.wireshark.org for more information. diff -Nru wireshark-4.4.14/doc/wsug_src/rawshark-h.txt wireshark-4.4.15/doc/wsug_src/rawshark-h.txt --- wireshark-4.4.14/doc/wsug_src/rawshark-h.txt 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/doc/wsug_src/rawshark-h.txt 2026-04-29 20:10:51.000000000 +0000 @@ -1,4 +1,4 @@ -Rawshark (Wireshark) 4.4.14 (v4.4.14rc0-2-gf9fc04327122) +Rawshark (Wireshark) 4.4.15 (v4.4.15rc0-2-g923802486f17) Dump and analyze network traffic. See https://www.wireshark.org for more information. diff -Nru wireshark-4.4.14/doc/wsug_src/reordercap-h.txt wireshark-4.4.15/doc/wsug_src/reordercap-h.txt --- wireshark-4.4.14/doc/wsug_src/reordercap-h.txt 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/doc/wsug_src/reordercap-h.txt 2026-04-29 20:10:51.000000000 +0000 @@ -1,4 +1,4 @@ -Reordercap (Wireshark) 4.4.14 (v4.4.14rc0-2-gf9fc04327122) +Reordercap (Wireshark) 4.4.15 (v4.4.15rc0-2-g923802486f17) Reorder timestamps of input file frames into output file. See https://www.wireshark.org for more information. diff -Nru wireshark-4.4.14/doc/wsug_src/text2pcap-h.txt wireshark-4.4.15/doc/wsug_src/text2pcap-h.txt --- wireshark-4.4.14/doc/wsug_src/text2pcap-h.txt 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/doc/wsug_src/text2pcap-h.txt 2026-04-29 20:10:51.000000000 +0000 @@ -1,4 +1,4 @@ -Text2pcap (Wireshark) 4.4.14 (v4.4.14rc0-2-gf9fc04327122) +Text2pcap (Wireshark) 4.4.15 (v4.4.15rc0-2-g923802486f17) Generate a capture file from an ASCII hexdump of packets. See https://www.wireshark.org for more information. diff -Nru wireshark-4.4.14/doc/wsug_src/tshark-h.txt wireshark-4.4.15/doc/wsug_src/tshark-h.txt --- wireshark-4.4.14/doc/wsug_src/tshark-h.txt 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/doc/wsug_src/tshark-h.txt 2026-04-29 20:10:51.000000000 +0000 @@ -1,4 +1,4 @@ -TShark (Wireshark) 4.4.14 (v4.4.14rc0-2-gf9fc04327122) +TShark (Wireshark) 4.4.15 (v4.4.15rc0-2-g923802486f17) Dump and analyze network traffic. See https://www.wireshark.org for more information. diff -Nru wireshark-4.4.14/doc/wsug_src/wsug_customize.adoc wireshark-4.4.15/doc/wsug_src/wsug_customize.adoc --- wireshark-4.4.14/doc/wsug_src/wsug_customize.adoc 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/doc/wsug_src/wsug_customize.adoc 2026-04-29 20:10:51.000000000 +0000 @@ -569,8 +569,23 @@ image::images/ws-enabled-protocols.png[{screenshot-attrs}] To disable or enable a protocol, simply click the checkbox using the mouse. -Note that typing a few letters of the protocol name in the search box will limit -the list to those protocols that contain these letters. +The search functionality can be used to quickly find the protocol dissector you want to +disable or enable by limiting the list of protocols displayed. + +The _Search_ field is case-insensitive and matches any protocol dissector that contains +the search string in its name. Typing a few letters of the protocol name in the +search box will limit the list to those dissectors that contain these letters. + +The first drop down menu allows you to limit the search to enabled or disabled +protocol dissectors, while the second drop down menu allows you to limit the search to +heuristic and non-heuristic dissectors. + +Heuristic dissectors are dissectors that are not identified by a known relationship to other dissectors +(i.e. IANA registered port number) but by heuristics "guessing" based on the +content of the packet (i.e. A set sequence of bytes at the start of a packet). +Disabling a heuristic dissector will prevent it from being used in the heuristics +process, but it may still be used if it is identified by a known relationship to other dissectors. +Heuristic protocol dissectors are identified as subtrees in the protocol list. You can choose from the following actions: diff -Nru wireshark-4.4.14/dumpcap.c wireshark-4.4.15/dumpcap.c --- wireshark-4.4.14/dumpcap.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/dumpcap.c 2026-04-29 20:10:51.000000000 +0000 @@ -1460,6 +1460,50 @@ return (dlt); } +static void +cap_pipe_ensure_databuf_size(capture_src *pcap_src, uint32_t block_length) { + + size_t new_bufsize = block_length; + if (new_bufsize > pcap_src->cap_pipe_databuf_size) { + /* + * Grow the buffer to the packet size, rounded up to a power of + * 2. + * + * Caveats: This can "round up" to 0 if new_bufsize is 0 or, on + * platforms where size_t is 32 bits, larger than 2^31, which is + * not very useful. We shouldn't have to worry about 0, because + * pcap_src->cap_pipe_databuf_size is initialized to a nonzero + * value. + * + * All the various values of WTAP_MAX_PACKET_SIZE_*, and thus + * pcap_src->cap_pipe_max_pkt_size, are smaller than 2^31, but + * we don't check all blocks against the max pkt size since + * db9ed8844c48326a3a8e3823d1d9f152e6667542. Either we should, or + * we should probably have some fixed maximum and report failure + * in those cases. + */ + /* + * https://graphics.stanford.edu/~seander/bithacks.html#RoundUpPowerOf2 + */ + /* XXX - Should this be added to wsutil/ws_roundup.h? */ + new_bufsize--; + new_bufsize |= new_bufsize >> 1; + new_bufsize |= new_bufsize >> 2; + new_bufsize |= new_bufsize >> 4; + new_bufsize |= new_bufsize >> 8; + new_bufsize |= new_bufsize >> 16; + new_bufsize++; + if (new_bufsize == 0) { + /* Should only happen on platforms where SIZE_WIDTH is 32, which + * is new in C23 (or we could add a size check to CMake.) + */ + new_bufsize = UINT32_MAX; + } + pcap_src->cap_pipe_databuf = (uint8_t*)g_realloc(pcap_src->cap_pipe_databuf, new_bufsize); + pcap_src->cap_pipe_databuf_size = new_bufsize; + } +} + /* Take care of byte order in the libpcap headers read from pipes. * (function taken from wiretap/libpcap.c) */ static void @@ -2302,6 +2346,7 @@ size_t errmsgl) { pcapng_section_header_block_t shb; + pcapng_block_header_t *bh = &pcap_src->cap_pipe_info.pcapng.bh; #ifdef _WIN32 if (pcap_src->from_cap_socket) @@ -2382,8 +2427,25 @@ return -1; } + if ((bh->block_total_length & 0x03) != 0) { + snprintf(errmsg, errmsgl, + "block_total_length read from pipe is %u, which is not a multiple of 4.", + bh->block_total_length); + return -1; + } + pcap_src->cap_pipe_max_pkt_size = WTAP_MAX_PACKET_SIZE_STANDARD; + cap_pipe_ensure_databuf_size(pcap_src, bh->block_total_length); + + /* Make sure the total length is sane */ + if (bh->block_total_length < sizeof(pcapng_block_header_t)+sizeof(pcapng_section_header_block_t)+sizeof(uint32_t)) { + snprintf(errmsg, errmsgl, + "malformed pcapng SHB block_total_length < minimum"); + pcap_src->cap_pipe_err = PIPEOF; + return -1; + } + /* Setup state to capture any options following the section header block */ pcap_src->cap_pipe_state = STATE_EXPECT_DATA; @@ -2567,12 +2629,6 @@ pcap_src->cap_pipe_fd = fd; } #endif - if ((bh->block_total_length & 0x03) != 0) { - snprintf(errmsg, errmsgl, - "block_total_length read from pipe is %u, which is not a multiple of 4.", - bh->block_total_length); - goto error; - } if (pcapng_read_shb(pcap_src, errmsg, errmsgl)) { goto error; } @@ -2601,7 +2657,6 @@ void * q_status; #endif ssize_t b; - unsigned new_bufsize; pcap_pipe_info_t *pcap_info = &pcap_src->cap_pipe_info.pcap; #ifdef LOG_CAPTURE_VERBOSE @@ -2763,25 +2818,7 @@ break; } - if (pcap_info->rechdr.hdr.incl_len > pcap_src->cap_pipe_databuf_size) { - /* - * Grow the buffer to the packet size, rounded up to a power of - * 2. - */ - new_bufsize = pcap_info->rechdr.hdr.incl_len; - /* - * https://graphics.stanford.edu/~seander/bithacks.html#RoundUpPowerOf2 - */ - new_bufsize--; - new_bufsize |= new_bufsize >> 1; - new_bufsize |= new_bufsize >> 2; - new_bufsize |= new_bufsize >> 4; - new_bufsize |= new_bufsize >> 8; - new_bufsize |= new_bufsize >> 16; - new_bufsize++; - pcap_src->cap_pipe_databuf = (char*)g_realloc(pcap_src->cap_pipe_databuf, new_bufsize); - pcap_src->cap_pipe_databuf_size = new_bufsize; - } + cap_pipe_ensure_databuf_size(pcap_src, pcap_info->rechdr.hdr.incl_len); if (pcap_info->rechdr.hdr.incl_len) { /* @@ -2849,7 +2886,6 @@ #ifdef _WIN32 void * q_status; #endif - unsigned new_bufsize; pcapng_block_header_t *bh = &pcap_src->cap_pipe_info.pcapng.bh; #ifdef LOG_CAPTURE_VERBOSE @@ -3019,25 +3055,7 @@ break; } - if (bh->block_total_length > pcap_src->cap_pipe_databuf_size) { - /* - * Grow the buffer to the packet size, rounded up to a power of - * 2. - */ - new_bufsize = bh->block_total_length; - /* - * https://graphics.stanford.edu/~seander/bithacks.html#RoundUpPowerOf2 - */ - new_bufsize--; - new_bufsize |= new_bufsize >> 1; - new_bufsize |= new_bufsize >> 2; - new_bufsize |= new_bufsize >> 4; - new_bufsize |= new_bufsize >> 8; - new_bufsize |= new_bufsize >> 16; - new_bufsize++; - pcap_src->cap_pipe_databuf = (unsigned char*)g_realloc(pcap_src->cap_pipe_databuf, new_bufsize); - pcap_src->cap_pipe_databuf_size = new_bufsize; - } + cap_pipe_ensure_databuf_size(pcap_src, bh->block_total_length); /* The record always has at least the block total length following the header */ if (bh->block_total_length < sizeof(pcapng_block_header_t)+sizeof(uint32_t)) { @@ -4774,6 +4792,11 @@ break; #endif + /* XXX - pcapng_write_block can set EINVAL (for block length and data + * are not aligned to 4 bytes) or EBADMSG (block_total_length field + * is not the same at the start and end of the block) and those should + * have more user-friendly messages than what g_strerror provides. */ + default: if (is_close) { snprintf(errmsg, errmsglen, diff -Nru wireshark-4.4.14/editcap.c wireshark-4.4.15/editcap.c --- wireshark-4.4.14/editcap.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/editcap.c 2026-04-29 20:10:51.000000000 +0000 @@ -588,15 +588,24 @@ #define VLAN_SIZE 4 static void sll_remove_vlan_info(uint8_t* fd, uint32_t* len) { - if (pntoh16(fd + offsetof(struct sll_header, sll_protocol)) == ETHERTYPE_VLAN) { - int rest_len; - /* point to start of vlan */ - fd = fd + offsetof(struct sll_header, sll_protocol); + unsigned rest_len; + if (ckd_sub(&rest_len, *len, offsetof(struct sll_header, sll_protocol))) { + /* This shouldn't happen. */ + return; + } + /* point to protocol header */ + fd = fd + offsetof(struct sll_header, sll_protocol); + if (pntoh16(fd) == ETHERTYPE_VLAN) { /* bytes to read after vlan info */ - rest_len = *len - (offsetof(struct sll_header, sll_protocol) + VLAN_SIZE); - /* remove vlan info from packet */ - memmove(fd, fd + VLAN_SIZE, rest_len); - *len -= 4; + if (rest_len <= VLAN_SIZE) { + /* There's no data past the VLAN tag, if the whole tag is present. */ + *len -= rest_len; + } else { + /* remove vlan info from packet */ + rest_len -= VLAN_SIZE; + memmove(fd, fd + VLAN_SIZE, rest_len); + *len -= 4; + } } } @@ -2387,6 +2396,7 @@ } /* remove vlan info */ + /* XXX - Should this adjust reported length if adjlen is set? */ if (rem_vlan) { /* Copy and change rather than modify returned rec */ temp_rec = *rec; diff -Nru wireshark-4.4.14/epan/CMakeLists.txt wireshark-4.4.15/epan/CMakeLists.txt --- wireshark-4.4.14/epan/CMakeLists.txt 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/CMakeLists.txt 2026-04-29 20:10:51.000000000 +0000 @@ -316,7 +316,7 @@ set_target_properties(epan PROPERTIES COMPILE_DEFINITIONS "WS_BUILD_DLL" LINK_FLAGS "${WS_LINK_FLAGS}" - VERSION "18.0.14" SOVERSION 18 + VERSION "18.0.15" SOVERSION 18 INSTALL_RPATH "${LIBRARY_INSTALL_RPATH}" # By default the name for a library with target name epan will be libepan, # but Ethereal is now named Wireshark diff -Nru wireshark-4.4.14/epan/dissectors/asn1/atn-ulcs/packet-atn-ulcs-template.c wireshark-4.4.15/epan/dissectors/asn1/atn-ulcs/packet-atn-ulcs-template.c --- wireshark-4.4.14/epan/dissectors/asn1/atn-ulcs/packet-atn-ulcs-template.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/asn1/atn-ulcs/packet-atn-ulcs-template.c 2026-04-29 20:10:51.000000000 +0000 @@ -131,14 +131,6 @@ static proto_tree *root_tree; /* forward declarations for functions generated from asn1 */ -static int dissect_atn_ulcs_T_externalt_encoding_single_asn1_type( - tvbuff_t *tvb _U_, - int offset _U_, - asn1_ctx_t *actx _U_, - proto_tree *tree _U_, - int hf_index - _U_); - static int dissect_atn_ulcs_T_externalt_encoding_octet_aligned( tvbuff_t *tvb _U_, int offset _U_, diff -Nru wireshark-4.4.14/epan/dissectors/asn1/charging_ase/charging_ase.cnf wireshark-4.4.15/epan/dissectors/asn1/charging_ase/charging_ase.cnf --- wireshark-4.4.14/epan/dissectors/asn1/charging_ase/charging_ase.cnf 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/asn1/charging_ase/charging_ase.cnf 2026-04-29 20:10:51.000000000 +0000 @@ -12,5 +12,5 @@ #.FN_BODY ExtensionField/value proto_tree_add_expert(tree, actx->pinfo, &ei_charging_ase_extensions_not_dissected, tvb, offset, -1); - return tvb_reported_length(tvb); + offset = tvb_reported_length(tvb); #.END diff -Nru wireshark-4.4.14/epan/dissectors/asn1/idmp/idmp.cnf wireshark-4.4.15/epan/dissectors/asn1/idmp/idmp.cnf --- wireshark-4.4.14/epan/dissectors/asn1/idmp/idmp.cnf 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/asn1/idmp/idmp.cnf 2026-04-29 20:10:51.000000000 +0000 @@ -27,28 +27,26 @@ IdmResult/invokeID ABBREV=idmResult.invokeID #.FN_BODY IdmBind/argument - struct SESSION_DATA_STRUCTURE *session = (struct SESSION_DATA_STRUCTURE*)actx->private_data; - - return call_idmp_oid_callback(tvb, offset, actx->pinfo, (ROS_OP_BIND | ROS_OP_ARGUMENT), top_tree, session); + struct SESSION_DATA_STRUCTURE *session = (struct SESSION_DATA_STRUCTURE*)actx->private_data; + offset = call_idmp_oid_callback(tvb, offset, actx->pinfo, (ROS_OP_BIND | ROS_OP_ARGUMENT), top_tree, session); #.END #.FN_PARS OBJECT_IDENTIFIER FN_VARIANT = _str VAL_PTR = &protocolID #.FN_HDR IdmBind - protocolID = saved_protocolID = NULL; + protocolID = saved_protocolID = NULL; #.END #.FN_FTR IdmBind - if (protocolID) { - saved_protocolID = wmem_strdup(wmem_epan_scope(), protocolID); - } + if (protocolID) { + saved_protocolID = wmem_strdup(wmem_epan_scope(), protocolID); + } #.END #.FN_BODY IdmBindResult/result - struct SESSION_DATA_STRUCTURE *session = (struct SESSION_DATA_STRUCTURE*)actx->private_data; - - return call_idmp_oid_callback(tvb, offset, actx->pinfo, (ROS_OP_BIND | ROS_OP_RESULT), top_tree, session); + struct SESSION_DATA_STRUCTURE *session = (struct SESSION_DATA_STRUCTURE*)actx->private_data; + offset = call_idmp_oid_callback(tvb, offset, actx->pinfo, (ROS_OP_BIND | ROS_OP_RESULT), top_tree, session); #.END @@ -57,25 +55,22 @@ #.END #.FN_BODY IdmBindError/error - struct SESSION_DATA_STRUCTURE *session = (struct SESSION_DATA_STRUCTURE*)actx->private_data; - - return call_idmp_oid_callback(tvb, offset, actx->pinfo, (ROS_OP_BIND| ROS_OP_ERROR), top_tree, session); + struct SESSION_DATA_STRUCTURE *session = (struct SESSION_DATA_STRUCTURE*)actx->private_data; + offset = call_idmp_oid_callback(tvb, offset, actx->pinfo, (ROS_OP_BIND| ROS_OP_ERROR), top_tree, session); #.END #.FN_PARS Code/local VAL_PTR = &opcode #.FN_BODY Request/argument - struct SESSION_DATA_STRUCTURE *session = (struct SESSION_DATA_STRUCTURE*)actx->private_data; - - return call_idmp_oid_callback(tvb, offset, actx->pinfo, (ROS_OP_INVOKE | ROS_OP_ARGUMENT | opcode), top_tree, session); + struct SESSION_DATA_STRUCTURE *session = (struct SESSION_DATA_STRUCTURE*)actx->private_data; + offset = call_idmp_oid_callback(tvb, offset, actx->pinfo, (ROS_OP_INVOKE | ROS_OP_ARGUMENT | opcode), top_tree, session); #.END #.FN_BODY IdmResult/result - struct SESSION_DATA_STRUCTURE *session = (struct SESSION_DATA_STRUCTURE*)actx->private_data; - - return call_idmp_oid_callback(tvb, offset, actx->pinfo, (ROS_OP_INVOKE | ROS_OP_RESULT | opcode), top_tree, session); + struct SESSION_DATA_STRUCTURE *session = (struct SESSION_DATA_STRUCTURE*)actx->private_data; + offset = call_idmp_oid_callback(tvb, offset, actx->pinfo, (ROS_OP_INVOKE | ROS_OP_RESULT | opcode), top_tree, session); #.END diff -Nru wireshark-4.4.14/epan/dissectors/packet-afp.c wireshark-4.4.15/epan/dissectors/packet-afp.c --- wireshark-4.4.14/epan/dissectors/packet-afp.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-afp.c 2026-04-29 20:10:51.000000000 +0000 @@ -4327,7 +4327,9 @@ } offset += 8; + increment_dissection_depth(pinfo); offset = spotlight_dissect_query_loop(tvb, pinfo, sub_tree, offset, complex_query_type, subquery_count, toc_offset, encoding); + decrement_dissection_depth(pinfo); count--; break; case SQ_TYPE_NULL: diff -Nru wireshark-4.4.14/epan/dissectors/packet-ain.c wireshark-4.4.15/epan/dissectors/packet-ain.c --- wireshark-4.4.14/epan/dissectors/packet-ain.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-ain.c 2026-04-29 20:10:51.000000000 +0000 @@ -860,6 +860,18 @@ }; +/*--- Cyclic dependencies ---*/ + +/* Invoke/argument -> Invoke/argument */ +static int dissect_ain_T_argument(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* ReturnResult/result/result -> ReturnResult/result/result */ +static int dissect_ain_T_result_01(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* ReturnError/parameter -> ReturnError/parameter */ +static int dissect_ain_T_parameter(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + + static int @@ -8212,10 +8224,13 @@ static int dissect_ain_T_argument(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // Invoke/argument -> Invoke/argument + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_invokeData(tree, tvb, offset, actx); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -8243,10 +8258,13 @@ static int dissect_ain_T_result_01(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // ReturnResult/result/result -> ReturnResult/result/result + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_returnResultData(tree, tvb, offset, actx); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -8287,10 +8305,13 @@ static int dissect_ain_T_parameter(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // ReturnError/parameter -> ReturnError/parameter + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_returnErrorData(tree, tvb, offset, actx); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } diff -Nru wireshark-4.4.14/epan/dissectors/packet-ansi_tcap.c wireshark-4.4.15/epan/dissectors/packet-ansi_tcap.c --- wireshark-4.4.14/epan/dissectors/packet-ansi_tcap.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-ansi_tcap.c 2026-04-29 20:10:51.000000000 +0000 @@ -374,6 +374,15 @@ return false; } +/*--- Cyclic dependencies ---*/ + +/* ReturnResult/parameter -> ReturnResult/parameter */ +static int dissect_ansi_tcap_T_returnResult_parameter(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* ReturnError/parameter -> ReturnError/parameter */ +static int dissect_ansi_tcap_T_returnError_parameter(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + + static int @@ -858,10 +867,13 @@ static int dissect_ansi_tcap_T_returnResult_parameter(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // ReturnResult/parameter -> ReturnResult/parameter + increment_dissection_depth_by_n(actx->pinfo, 1); if(find_tcap_subdissector(tvb, actx, tree)) offset = tvb_reported_length(tvb); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -898,10 +910,13 @@ static int dissect_ansi_tcap_T_returnError_parameter(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // ReturnError/parameter -> ReturnError/parameter + increment_dissection_depth_by_n(actx->pinfo, 1); if(find_tcap_subdissector(tvb, actx, tree)) offset = tvb_reported_length(tvb); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } diff -Nru wireshark-4.4.14/epan/dissectors/packet-atn-ulcs.c wireshark-4.4.15/epan/dissectors/packet-atn-ulcs.c --- wireshark-4.4.14/epan/dissectors/packet-atn-ulcs.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-atn-ulcs.c 2026-04-29 20:10:51.000000000 +0000 @@ -136,14 +136,6 @@ static proto_tree *root_tree; /* forward declarations for functions generated from asn1 */ -static int dissect_atn_ulcs_T_externalt_encoding_single_asn1_type( - tvbuff_t *tvb _U_, - int offset _U_, - asn1_ctx_t *actx _U_, - proto_tree *tree _U_, - int hf_index - _U_); - static int dissect_atn_ulcs_T_externalt_encoding_octet_aligned( tvbuff_t *tvb _U_, int offset _U_, @@ -280,6 +272,15 @@ static int ett_atn_ulcs; static int ett_atn_acse; +/*--- Cyclic dependencies ---*/ + +/* PDV-list/presentation-data-values/single-ASN1-type -> PDV-list/presentation-data-values/single-ASN1-type */ +static int dissect_atn_ulcs_T_pdv_list_presentation_data_values_single_asn1_type(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* EXTERNALt/encoding/single-ASN1-type -> EXTERNALt/encoding/single-ASN1-type */ +static int dissect_atn_ulcs_T_externalt_encoding_single_asn1_type(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + + static int @@ -320,8 +321,11 @@ static int dissect_atn_ulcs_T_pdv_list_presentation_data_values_single_asn1_type(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // PDV-list/presentation-data-values/single-ASN1-type -> PDV-list/presentation-data-values/single-ASN1-type + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type(tvb, offset, actx, tree, hf_index, NULL); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -528,11 +532,14 @@ static int dissect_atn_ulcs_T_externalt_encoding_single_asn1_type(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // EXTERNALt/encoding/single-ASN1-type -> EXTERNALt/encoding/single-ASN1-type + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type(tvb, offset, actx, tree, hf_index, NULL); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } diff -Nru wireshark-4.4.14/epan/dissectors/packet-beep.c wireshark-4.4.15/epan/dissectors/packet-beep.c --- wireshark-4.4.14/epan/dissectors/packet-beep.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-beep.c 2026-04-29 20:10:51.000000000 +0000 @@ -21,6 +21,7 @@ #include #include #include +#include #include #if defined(DEBUG_BEEP_HASH) #include @@ -359,13 +360,15 @@ static int dissect_beep_int(tvbuff_t *tvb, packet_info *pinfo, int offset, - proto_tree *tree, int hf, int *val, int *hfa[]) + proto_tree *tree, int hf, unsigned *val, int *hfa[]) { proto_item *hidden_item; - int ival, ind = 0; + unsigned ival, ind = 0; unsigned int len = num_len(tvb, offset); - ival = (int)strtol(tvb_get_string_enc(pinfo->pool, tvb, offset, len, ENC_ASCII), NULL, 10); + /* XXX - Should check for conversion errors and, for values except for + * seqno, values outside the range. */ + ival = (unsigned)strtoul((char*)tvb_get_string_enc(pinfo->pool, tvb, offset, len, ENC_ASCII), NULL, 10); proto_tree_add_uint(tree, hf, tvb, offset, len, ival); while (hfa[ind]) { @@ -376,7 +379,9 @@ } - *val = ival; /* Return the value */ + if (val) { + *val = ival; /* Return the value */ + } return len; @@ -444,8 +449,8 @@ { proto_tree *ti = NULL, *hdr = NULL; /*proto_item *hidden_item;*/ - int st_offset, msgno, ansno, seqno, size, channel, ackno, window, cc, - more; + int st_offset, cc, more; + unsigned size; const char * cmd_temp = NULL; int is_ANS = 0; @@ -480,11 +485,11 @@ offset += 4; /* Get the channel */ - offset += dissect_beep_int(tvb, pinfo, offset, hdr, hf_beep_channel, &channel, req_chan_hfa); + offset += dissect_beep_int(tvb, pinfo, offset, hdr, hf_beep_channel, NULL, req_chan_hfa); offset += 1; /* Skip the space */ /* Dissect the message number */ - offset += dissect_beep_int(tvb, pinfo, offset, hdr, hf_beep_msgno, &msgno, req_msgno_hfa); + offset += dissect_beep_int(tvb, pinfo, offset, hdr, hf_beep_msgno, NULL, req_msgno_hfa); offset += 1; /* skip the space */ /* Insert the more elements ... */ @@ -506,22 +511,24 @@ offset += 2; /* Skip the flag and the space ... */ /* now for the seqno */ - offset += dissect_beep_int(tvb, pinfo, offset, hdr, hf_beep_seqno, &seqno, req_seqno_hfa); + offset += dissect_beep_int(tvb, pinfo, offset, hdr, hf_beep_seqno, NULL, req_seqno_hfa); offset += 1; /* skip the space */ offset += dissect_beep_int(tvb, pinfo, offset, hdr, hf_beep_size, &size, req_size_hfa); - if (request_val) /* FIXME, is this the right order ... */ - request_val -> size = size; /* Stash this away */ - else if (beep_frame_data) { + if (size > INT32_MAX) { + THROW(ReportedBoundsError); + } + if (request_val) { /* FIXME, is this the right order ... */ + request_val->size = size; /* Stash this away */ + } else if (beep_frame_data) { beep_frame_data->pl_size = size; - if (beep_frame_data->pl_size < 0) beep_frame_data->pl_size = 0; /* FIXME: OK? */ } /* offset += 1; skip the space */ if (is_ANS) { /* We need to put in the ansno */ offset += 1; /* skip the space */ /* Dissect the message number */ - offset += dissect_beep_int(tvb, pinfo, offset, hdr, hf_beep_ansno, &ansno, req_ansno_hfa); + offset += dissect_beep_int(tvb, pinfo, offset, hdr, hf_beep_ansno, NULL, req_ansno_hfa); } if ((cc = check_term(tvb, pinfo, offset, hdr)) <= 0) { @@ -548,7 +555,7 @@ if (tvb_reported_length_remaining(tvb, offset) > 0) { /* Dissect what is left as payload */ - int pl_size = MIN(size, tvb_reported_length_remaining(tvb, offset)); + int pl_size = MIN((int)size, tvb_reported_length_remaining(tvb, offset)); /* Except, check the payload length, and only dissect that much */ @@ -594,19 +601,19 @@ offset += 1; - offset += dissect_beep_int(tvb, pinfo, offset, tree, hf_beep_channel, &channel, seq_chan_hfa); + offset += dissect_beep_int(tvb, pinfo, offset, tree, hf_beep_channel, NULL, seq_chan_hfa); /* Check the space: FIXME */ offset += 1; - offset += dissect_beep_int(tvb, pinfo, offset, tree, hf_beep_ackno, &ackno, seq_ackno_hfa); + offset += dissect_beep_int(tvb, pinfo, offset, tree, hf_beep_ackno, NULL, seq_ackno_hfa); /* Check the space: FIXME */ offset += 1; - offset += dissect_beep_int(tvb, pinfo, offset, tree, hf_beep_window, &window, seq_window_hfa); + offset += dissect_beep_int(tvb, pinfo, offset, tree, hf_beep_window, NULL, seq_window_hfa); if ((cc = check_term(tvb, pinfo, offset, tree)) <= 0) { @@ -704,7 +711,9 @@ } if (tvb_reported_length_remaining(tvb, offset) > 0) { + increment_dissection_depth(pinfo); offset += dissect_beep_tree(tvb, offset, pinfo, tree, request_val, beep_frame_data); + decrement_dissection_depth(pinfo); } } diff -Nru wireshark-4.4.14/epan/dissectors/packet-bt-dht.c wireshark-4.4.15/epan/dissectors/packet-bt-dht.c --- wireshark-4.4.14/epan/dissectors/packet-bt-dht.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-bt-dht.c 2026-04-29 20:10:51.000000000 +0000 @@ -221,11 +221,15 @@ break; /* a sub-list */ case 'l': - offset = dissect_bencoded_list( tvb, pinfo, sub_tree, offset, "Sub-list" ); + increment_dissection_depth(pinfo); + offset = dissect_bencoded_list(tvb, pinfo, sub_tree, offset, "Sub-list"); + decrement_dissection_depth(pinfo); break; /* a dictionary */ case 'd': - offset = dissect_bencoded_dict( tvb, pinfo, sub_tree, offset, "Sub-dict" ); + increment_dissection_depth(pinfo); + offset = dissect_bencoded_dict(tvb, pinfo, sub_tree, offset, "Sub-dict"); + decrement_dissection_depth(pinfo); break; /* a string */ default: @@ -460,7 +464,9 @@ switch( tvb_get_uint8(tvb,offset) ) { case 'd': - offset = dissect_bencoded_dict( tvb, pinfo, sub_tree, offset, "Value" ); + increment_dissection_depth(pinfo); + offset = dissect_bencoded_dict(tvb, pinfo, sub_tree, offset, "Value"); + decrement_dissection_depth(pinfo); val = dict_str; break; case 'l': @@ -471,7 +477,9 @@ /* other unfamiliar lists */ else { - offset = dissect_bencoded_list( tvb, pinfo, sub_tree, offset, "Value" ); + increment_dissection_depth(pinfo); + offset = dissect_bencoded_list(tvb, pinfo, sub_tree, offset, "Value"); + decrement_dissection_depth(pinfo); val = list_str; } break; @@ -793,7 +801,6 @@ { heur_dissector_add("udp", dissect_bt_dht_heur, "BitTorrent DHT over UDP", "bittorrent_dht_udp", proto_bt_dht, HEURISTIC_ENABLE); - // If this is ever streamed (transported over TCP) we need to add recursion checks. dissector_add_for_decode_as_with_preference("udp.port", bt_dht_handle); } diff -Nru wireshark-4.4.14/epan/dissectors/packet-bthci_iso.c wireshark-4.4.15/epan/dissectors/packet-bthci_iso.c --- wireshark-4.4.14/epan/dissectors/packet-bthci_iso.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-bthci_iso.c 2026-04-29 20:10:51.000000000 +0000 @@ -410,14 +410,23 @@ if (mfp != NULL && !mfp->last_frame) { int avail = (int)mfp->tot_len - mfp->cur_off; if (len > avail) { + /* XXX - This error only happens on the first pass, so + * the error indication should be added to the mfp for + * later passes. */ expert_add_info(pinfo, sub_item, &ei_length_bad); /* Try to reassemble as much as possible */ len = avail; } tvb_memcpy(tvb, (uint8_t *) mfp->reassembled + mfp->cur_off, offset, len); mfp->cur_off += len; - if (pb_flag == 0x03) + if (pb_flag == 0x03) { mfp->last_frame = pinfo->num; + if (mfp->cur_off < mfp->tot_len) { + /* XXX - As above. */ + expert_add_info(pinfo, sub_item, &ei_length_bad); + mfp->reassembled = (char *) wmem_realloc(wmem_file_scope(), mfp->reassembled, mfp->cur_off); + } + } } } if (mfp) { @@ -433,7 +442,7 @@ } if (pb_flag == 0x03) { /* last fragment */ - next_tvb = tvb_new_child_real_data(tvb, (uint8_t *) mfp->reassembled, mfp->tot_len, mfp->tot_len); + next_tvb = tvb_new_child_real_data(tvb, (uint8_t *) mfp->reassembled, mfp->cur_off, mfp->tot_len); add_new_data_source(pinfo, next_tvb, "Reassembled BTHCI ISO"); call_dissector_with_data(bthci_iso_data_handle, next_tvb, pinfo, tree, &iso_data_info); diff -Nru wireshark-4.4.14/epan/dissectors/packet-camel.c wireshark-4.4.15/epan/dissectors/packet-camel.c --- wireshark-4.4.14/epan/dissectors/packet-camel.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-camel.c 2026-04-29 20:10:51.000000000 +0000 @@ -1354,6 +1354,21 @@ static int dissect_camel_InitialDPArgExtensionV2(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); +/*--- Cyclic dependencies ---*/ + +/* ExtensionField/value -> ExtensionField/value */ +static int dissect_camel_T_value(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* Invoke/argument -> Invoke/argument */ +static int dissect_camel_T_argument(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* ReturnResult/result/result -> ReturnResult/result/result */ +static int dissect_camel_ResultArgument(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* ReturnError/parameter -> ReturnError/parameter */ +static int dissect_camel_T_parameter(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + + static int @@ -2379,6 +2394,8 @@ static int dissect_camel_T_value(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // ExtensionField/value -> ExtensionField/value + increment_dissection_depth_by_n(actx->pinfo, 1); /*XXX handle local form here */ if(camel_obj_id){ offset=call_ber_oid_callback(camel_obj_id, tvb, offset, actx->pinfo, tree, NULL); @@ -2386,6 +2403,7 @@ is_ExtensionField = false; + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -6619,9 +6637,12 @@ static int dissect_camel_T_argument(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // Invoke/argument -> Invoke/argument + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_invokeData(tree, tvb, offset, actx); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -6648,9 +6669,12 @@ static int dissect_camel_ResultArgument(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // ReturnResult/result/result -> ReturnResult/result/result + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_returnResultData(tree, tvb, offset, actx); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -6690,10 +6714,13 @@ static int dissect_camel_T_parameter(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // ReturnError/parameter -> ReturnError/parameter + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_returnErrorData(tree, tvb, offset, actx); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } diff -Nru wireshark-4.4.14/epan/dissectors/packet-charging_ase.c wireshark-4.4.15/epan/dissectors/packet-charging_ase.c --- wireshark-4.4.14/epan/dissectors/packet-charging_ase.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-charging_ase.c 2026-04-29 20:10:51.000000000 +0000 @@ -132,6 +132,12 @@ static dissector_handle_t charging_ase_handle; +/*--- Cyclic dependencies ---*/ + +/* ExtensionField/value -> ExtensionField/value */ +static int dissect_charging_ase_T_value(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + + static int * const ChargingControlIndicators_bits[] = { &hf_charging_ase_ChargingControlIndicators_subscriberCharge, @@ -504,10 +510,13 @@ static int dissect_charging_ase_T_value(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // ExtensionField/value -> ExtensionField/value + increment_dissection_depth_by_n(actx->pinfo, 1); proto_tree_add_expert(tree, actx->pinfo, &ei_charging_ase_extensions_not_dissected, tvb, offset, -1); - return tvb_reported_length(tvb); + offset = tvb_reported_length(tvb); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } diff -Nru wireshark-4.4.14/epan/dissectors/packet-cmip.c wireshark-4.4.15/epan/dissectors/packet-cmip.c --- wireshark-4.4.14/epan/dissectors/packet-cmip.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-cmip.c 2026-04-29 20:10:51.000000000 +0000 @@ -597,10 +597,64 @@ #define noInvokeId NULL /*--- Cyclic dependencies ---*/ +/* AttributeValueAssertion/value -> AttributeValueAssertion/value */ +static int dissect_cmip_T_attributeValueAssertionvalue(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* Attribute/value -> Attribute/value */ +static int dissect_cmip_AttributeValue(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + /* CMISFilter -> CMISFilter/and -> CMISFilter */ /* CMISFilter -> CMISFilter */ static int dissect_cmip_CMISFilter(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); +/* ActionInfo/actionInfoArg -> ActionInfo/actionInfoArg */ +static int dissect_cmip_T_actionInfoArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* InvalidArgumentValue/eventValue/eventInfo -> InvalidArgumentValue/eventValue/eventInfo */ +static int dissect_cmip_T_eventInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* ActionReply/actionReplyInfo -> ActionReply/actionReplyInfo */ +static int dissect_cmip_T_actionReplyInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* AttributeError/attributeValue -> AttributeError/attributeValue */ +static int dissect_cmip_T_attributeValue(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* EventReply/eventReplyInfo -> EventReply/eventReplyInfo */ +static int dissect_cmip_T_eventReplyInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* EventReportArgument/eventInfo -> EventReportArgument/eventInfo */ +static int dissect_cmip_EventReportArgumentEventInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* SpecificErrorInfo/errorInfo -> SpecificErrorInfo/errorInfo */ +static int dissect_cmip_T_errorInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* SetArgument/modificationList/_item/attributeValue -> SetArgument/modificationList/_item/attributeValue */ +static int dissect_cmip_T_attributevalue(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* ManagementExtension/information -> ManagementExtension/information */ +static int dissect_cmip_T_information(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* AttributeValueChangeDefinition/_item/oldAttributeValue -> AttributeValueChangeDefinition/_item/oldAttributeValue */ +static int dissect_cmip_T_oldAttributeValue(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* AttributeValueChangeDefinition/_item/newAttributeValue -> AttributeValueChangeDefinition/_item/newAttributeValue */ +static int dissect_cmip_T_newAttributeValue(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* ServiceUser/details -> ServiceUser/details */ +static int dissect_cmip_T_details(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* SupportedFeatures/_item/featureInfo -> SupportedFeatures/_item/featureInfo */ +static int dissect_cmip_T_featureInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* Invoke/argument -> Invoke/argument */ +static int dissect_cmip_InvokeArgument(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* ReturnResult/result/result -> ReturnResult/result/result */ +static int dissect_cmip_ResultArgument(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* ReturnError/parameter -> ReturnError/parameter */ +static int dissect_cmip_T_parameter(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + @@ -727,11 +781,14 @@ static int dissect_cmip_T_attributeValueAssertionvalue(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // AttributeValueAssertion/value -> AttributeValueAssertion/value + increment_dissection_depth_by_n(actx->pinfo, 1); if (actx->external.direct_ref_present) { offset=call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, tree, actx->private_data); } + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -880,6 +937,8 @@ static int dissect_cmip_AttributeValue(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // Attribute/value -> Attribute/value + increment_dissection_depth_by_n(actx->pinfo, 1); if(actx->external.direct_ref_present){ offset=call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, tree, actx->private_data); } else if (actx->external.indirect_ref_present && @@ -890,6 +949,7 @@ } + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -1012,14 +1072,12 @@ static int dissect_cmip_CMISFilter(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { // CMISFilter -> CMISFilter/and -> CMISFilter - actx->pinfo->dissection_depth += 2; - increment_dissection_depth(actx->pinfo); + increment_dissection_depth_by_n(actx->pinfo, 2); offset = dissect_ber_choice(actx, tree, tvb, offset, CMISFilter_choice, hf_index, ett_cmip_CMISFilter, NULL); - actx->pinfo->dissection_depth -= 2; - decrement_dissection_depth(actx->pinfo); + decrement_dissection_depth_by_n(actx->pinfo, 2); return offset; } @@ -1058,9 +1116,12 @@ static int dissect_cmip_T_actionInfoArg(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // ActionInfo/actionInfoArg -> ActionInfo/actionInfoArg + increment_dissection_depth_by_n(actx->pinfo, 1); offset=call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, tree, actx->private_data); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -1213,9 +1274,12 @@ static int dissect_cmip_T_eventInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // InvalidArgumentValue/eventValue/eventInfo -> InvalidArgumentValue/eventValue/eventInfo + increment_dissection_depth_by_n(actx->pinfo, 1); offset=call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, tree, actx->private_data); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -1316,10 +1380,13 @@ static int dissect_cmip_T_actionReplyInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // ActionReply/actionReplyInfo -> ActionReply/actionReplyInfo + increment_dissection_depth_by_n(actx->pinfo, 1); offset=call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, tree, actx->private_data); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -1396,9 +1463,12 @@ static int dissect_cmip_T_attributeValue(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // AttributeError/attributeValue -> AttributeError/attributeValue + increment_dissection_depth_by_n(actx->pinfo, 1); offset=call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, tree, actx->private_data); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -1622,9 +1692,12 @@ static int dissect_cmip_T_eventReplyInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // EventReply/eventReplyInfo -> EventReply/eventReplyInfo + increment_dissection_depth_by_n(actx->pinfo, 1); offset=call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, tree, actx->private_data); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -1647,9 +1720,12 @@ static int dissect_cmip_EventReportArgumentEventInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // EventReportArgument/eventInfo -> EventReportArgument/eventInfo + increment_dissection_depth_by_n(actx->pinfo, 1); offset=call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, tree, actx->private_data); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -1912,9 +1988,12 @@ static int dissect_cmip_T_errorInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // SpecificErrorInfo/errorInfo -> SpecificErrorInfo/errorInfo + increment_dissection_depth_by_n(actx->pinfo, 1); offset=call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, tree, actx->private_data); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -2006,6 +2085,8 @@ static int dissect_cmip_T_attributevalue(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // SetArgument/modificationList/_item/attributeValue -> SetArgument/modificationList/_item/attributeValue + increment_dissection_depth_by_n(actx->pinfo, 1); if(actx->external.direct_ref_present){ offset=call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, tree, NULL); } else if (actx->external.indirect_ref_present && @@ -2016,6 +2097,7 @@ } + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -2243,9 +2325,12 @@ static int dissect_cmip_T_information(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // ManagementExtension/information -> ManagementExtension/information + increment_dissection_depth_by_n(actx->pinfo, 1); offset=call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, tree, actx->private_data); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -2338,9 +2423,12 @@ static int dissect_cmip_T_oldAttributeValue(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // AttributeValueChangeDefinition/_item/oldAttributeValue -> AttributeValueChangeDefinition/_item/oldAttributeValue + increment_dissection_depth_by_n(actx->pinfo, 1); offset=call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, tree, actx->private_data); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -2348,9 +2436,12 @@ static int dissect_cmip_T_newAttributeValue(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // AttributeValueChangeDefinition/_item/newAttributeValue -> AttributeValueChangeDefinition/_item/newAttributeValue + increment_dissection_depth_by_n(actx->pinfo, 1); offset=call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, tree, actx->private_data); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -3122,9 +3213,12 @@ static int dissect_cmip_T_details(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // ServiceUser/details -> ServiceUser/details + increment_dissection_depth_by_n(actx->pinfo, 1); offset=call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, tree, actx->private_data); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -3243,9 +3337,12 @@ static int dissect_cmip_T_featureInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // SupportedFeatures/_item/featureInfo -> SupportedFeatures/_item/featureInfo + increment_dissection_depth_by_n(actx->pinfo, 1); offset=call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, tree, actx->private_data); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -3569,6 +3666,8 @@ static int dissect_cmip_InvokeArgument(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // Invoke/argument -> Invoke/argument + increment_dissection_depth_by_n(actx->pinfo, 1); switch(opcode){ case 0: /* M-eventreport */ offset = dissect_cmip_EventReportArgument(false, tvb, offset, actx, tree, -1); @@ -3607,6 +3706,7 @@ + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -3633,6 +3733,8 @@ static int dissect_cmip_ResultArgument(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // ReturnResult/result/result -> ReturnResult/result/result + increment_dissection_depth_by_n(actx->pinfo, 1); switch(opcode){ case 0: /* M-eventreport*/ @@ -3667,6 +3769,7 @@ /*XXX add more types here */ + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -3706,6 +3809,8 @@ static int dissect_cmip_T_parameter(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // ReturnError/parameter -> ReturnError/parameter + increment_dissection_depth_by_n(actx->pinfo, 1); switch(opcode){ case 19: /* classInstanceConflict */ @@ -3775,6 +3880,7 @@ } + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } diff -Nru wireshark-4.4.14/epan/dissectors/packet-cmp.c wireshark-4.4.15/epan/dissectors/packet-cmp.c --- wireshark-4.4.14/epan/dissectors/packet-cmp.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-cmp.c 2026-04-29 20:10:51.000000000 +0000 @@ -1089,13 +1089,11 @@ int dissect_cmp_PKIMessage(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { // PKIMessage -> PKIBody -> NestedMessageContent -> PKIMessages -> PKIMessage - actx->pinfo->dissection_depth += 4; - increment_dissection_depth(actx->pinfo); + increment_dissection_depth_by_n(actx->pinfo, 4); offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, PKIMessage_sequence, hf_index, ett_cmp_PKIMessage); - actx->pinfo->dissection_depth -= 4; - decrement_dissection_depth(actx->pinfo); + decrement_dissection_depth_by_n(actx->pinfo, 4); return offset; } diff -Nru wireshark-4.4.14/epan/dissectors/packet-dap.c wireshark-4.4.15/epan/dissectors/packet-dap.c --- wireshark-4.4.14/epan/dissectors/packet-dap.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-dap.c 2026-04-29 20:10:51.000000000 +0000 @@ -689,6 +689,18 @@ /* FamilyEntries -> FamilyEntries/familyEntries -> FamilyEntry -> FamilyEntry/family-info -> FamilyEntries */ static int dissect_dap_FamilyEntries(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); +/* FilterItem/substrings/strings/_item/initial -> FilterItem/substrings/strings/_item/initial */ +static int dissect_dap_T_initial(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* FilterItem/substrings/strings/_item/any -> FilterItem/substrings/strings/_item/any */ +static int dissect_dap_T_any(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* FilterItem/substrings/strings/_item/final -> FilterItem/substrings/strings/_item/final */ +static int dissect_dap_T_final(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* MatchingRuleAssertion/matchValue -> MatchingRuleAssertion/matchValue */ +static int dissect_dap_T_matchValue(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + /* Filter -> SetOfFilter -> Filter */ /* Filter -> Filter */ /*int dissect_dap_Filter(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);*/ @@ -1267,13 +1279,11 @@ static int dissect_dap_FamilyEntries(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { // FamilyEntries -> FamilyEntries/familyEntries -> FamilyEntry -> FamilyEntry/family-info -> FamilyEntries - actx->pinfo->dissection_depth += 4; - increment_dissection_depth(actx->pinfo); + increment_dissection_depth_by_n(actx->pinfo, 4); offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, FamilyEntries_sequence, hf_index, ett_dap_FamilyEntries); - actx->pinfo->dissection_depth -= 4; - decrement_dissection_depth(actx->pinfo); + decrement_dissection_depth_by_n(actx->pinfo, 4); return offset; } @@ -1281,11 +1291,14 @@ static int dissect_dap_T_initial(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // FilterItem/substrings/strings/_item/initial -> FilterItem/substrings/strings/_item/initial + increment_dissection_depth_by_n(actx->pinfo, 1); proto_item *it; it = proto_tree_add_item(tree, hf_index, tvb, offset, -1, ENC_BIG_ENDIAN); proto_item_append_text(it," XXX: Not yet implemented!"); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -1293,9 +1306,12 @@ static int dissect_dap_T_any(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // FilterItem/substrings/strings/_item/any -> FilterItem/substrings/strings/_item/any + increment_dissection_depth_by_n(actx->pinfo, 1); /* XXX: not yet implemented */ + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -1303,9 +1319,12 @@ static int dissect_dap_T_final(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // FilterItem/substrings/strings/_item/final -> FilterItem/substrings/strings/_item/final + increment_dissection_depth_by_n(actx->pinfo, 1); /* XXX: not yet implemented */ + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -1380,9 +1399,12 @@ static int dissect_dap_T_matchValue(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // MatchingRuleAssertion/matchValue -> MatchingRuleAssertion/matchValue + increment_dissection_depth_by_n(actx->pinfo, 1); /* XXX: not yet implemented */ + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -1470,14 +1492,12 @@ int dissect_dap_Filter(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { // Filter -> SetOfFilter -> Filter - actx->pinfo->dissection_depth += 2; - increment_dissection_depth(actx->pinfo); + increment_dissection_depth_by_n(actx->pinfo, 2); offset = dissect_ber_choice(actx, tree, tvb, offset, Filter_choice, hf_index, ett_dap_Filter, NULL); - actx->pinfo->dissection_depth -= 2; - decrement_dissection_depth(actx->pinfo); + decrement_dissection_depth_by_n(actx->pinfo, 2); return offset; } @@ -2931,14 +2951,12 @@ static int dissect_dap_ListResultData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { // ListResultData -> ListResultData/uncorrelatedListInfo -> ListResult -> ListResultData - actx->pinfo->dissection_depth += 3; - increment_dissection_depth(actx->pinfo); + increment_dissection_depth_by_n(actx->pinfo, 3); offset = dissect_ber_choice(actx, tree, tvb, offset, ListResultData_choice, hf_index, ett_dap_ListResultData, NULL); - actx->pinfo->dissection_depth -= 3; - decrement_dissection_depth(actx->pinfo); + decrement_dissection_depth_by_n(actx->pinfo, 3); return offset; } @@ -3321,14 +3339,12 @@ static int dissect_dap_SearchResultData(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { // SearchResultData -> SearchResultData/uncorrelatedSearchInfo -> SearchResult -> SearchResultData - actx->pinfo->dissection_depth += 3; - increment_dissection_depth(actx->pinfo); + increment_dissection_depth_by_n(actx->pinfo, 3); offset = dissect_ber_choice(actx, tree, tvb, offset, SearchResultData_choice, hf_index, ett_dap_SearchResultData, NULL); - actx->pinfo->dissection_depth -= 3; - decrement_dissection_depth(actx->pinfo); + decrement_dissection_depth_by_n(actx->pinfo, 3); return offset; } diff -Nru wireshark-4.4.14/epan/dissectors/packet-dcp-etsi.c wireshark-4.4.15/epan/dissectors/packet-dcp-etsi.c --- wireshark-4.4.14/epan/dissectors/packet-dcp-etsi.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-dcp-etsi.c 2026-04-29 20:10:51.000000000 +0000 @@ -231,9 +231,9 @@ return true; } -#define PFT_RS_N_MAX 207 -#define PFT_RS_K 255 -#define PFT_RS_P (PFT_RS_K - PFT_RS_N_MAX) +#define PFT_RS_K_MAX 207 +#define PFT_RS_N 255 +#define PFT_RS_P (PFT_RS_N - PFT_RS_K_MAX) static @@ -256,11 +256,23 @@ { uint32_t i, index_coded = 0, index_out = 0; int err_corr; + /* 7.3.1 Reed Solomon + * When the calculated value for k is less than 207 (PFT_RS_K_MAX), + * bytes k to 206 (inclusive) encoded by the RS(255,207) code shall + * all be zero and shall not be included in the resulting RS Block, + * thus producing a RS(k+p,k) code. [I.e., a punctured code.] + * + * This is a method of decoding it all in place, but it does require + * that output have extra space at the end for the parity bytes (PFT_RS_P) + * and any extra zeros (PFT_RS_K_MAX - rsk) beyond the real output, or + * PFT_RS_N - rsk. + */ for (i=0; i PFT_RS_K_MAX) { + return NULL; + } decoded_size = fcount*plen; c_max = fcount*plen/(rsk+PFT_RS_P); /* rounded down */ @@ -369,18 +389,30 @@ if(new_tvb && tvb_captured_length(new_tvb) > 0) { bool decoded; tvbuff_t *dtvb = NULL; - const uint8_t *input = tvb_get_ptr(new_tvb, 0, -1); uint32_t reassembled_size = tvb_captured_length(new_tvb); + /* "Note that when Reed Solomon has been used, all fragments will + * be of length s" [i.e., plen]" */ + if (reassembled_size != fcount * plen) { + proto_tree_add_expert_format(tree, pinfo, &ei_edcp_reassembly, new_tvb, 0, -1, "[All fragments must be the same size when Reed Solomon is used]"); + return NULL; + } + const uint8_t *input = tvb_get_ptr(new_tvb, 0, reassembled_size); uint8_t *deinterleaved = (uint8_t*) wmem_alloc(pinfo->pool, reassembled_size); - uint8_t *output = (uint8_t*) wmem_alloc(pinfo->pool, decoded_size); rs_deinterleave(input, deinterleaved, plen, fcount); dtvb = tvb_new_child_real_data(tvb, deinterleaved, reassembled_size, reassembled_size); add_new_data_source(pinfo, dtvb, "Deinterleaved"); + uint8_t *output = (uint8_t*) wmem_alloc(pinfo->pool, decoded_size + PFT_RS_N - rsk); decoded = rs_correct_data(deinterleaved, output, c_max, rsk, rsz); proto_tree_add_boolean (tree, hf_edcp_rs_ok, tvb, offset, 2, decoded); +#if 0 + /* We don't need to realloc here because it's pinfo->pool memory that + * will soon be freed and < 255 bytes of savings. It's a no-op most + * likely with the fast block allocator anyway. */ + output = wmem_realloc(pinfo->pool, output, decoded_size); +#endif new_tvb = tvb_new_child_real_data(dtvb, output, decoded_size, decoded_size); add_new_data_source(pinfo, new_tvb, "RS Error Corrected Data"); } diff -Nru wireshark-4.4.14/epan/dissectors/packet-disp.c wireshark-4.4.15/epan/dissectors/packet-disp.c --- wireshark-4.4.14/epan/dissectors/packet-disp.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-disp.c 2026-04-29 20:10:51.000000000 +0000 @@ -1043,13 +1043,11 @@ static int dissect_disp_Subtree(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { // Subtree -> Subtree/subtree -> Subtree - actx->pinfo->dissection_depth += 2; - increment_dissection_depth(actx->pinfo); + increment_dissection_depth_by_n(actx->pinfo, 2); offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, Subtree_sequence, hf_index, ett_disp_Subtree); - actx->pinfo->dissection_depth -= 2; - decrement_dissection_depth(actx->pinfo); + decrement_dissection_depth_by_n(actx->pinfo, 2); return offset; } @@ -1206,13 +1204,11 @@ static int dissect_disp_IncrementalStepRefresh(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { // IncrementalStepRefresh -> IncrementalStepRefresh/subordinateUpdates -> SubordinateChanges -> IncrementalStepRefresh - actx->pinfo->dissection_depth += 3; - increment_dissection_depth(actx->pinfo); + increment_dissection_depth_by_n(actx->pinfo, 3); offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, IncrementalStepRefresh_sequence, hf_index, ett_disp_IncrementalStepRefresh); - actx->pinfo->dissection_depth -= 3; - decrement_dissection_depth(actx->pinfo); + decrement_dissection_depth_by_n(actx->pinfo, 3); return offset; } diff -Nru wireshark-4.4.14/epan/dissectors/packet-e1ap.c wireshark-4.4.15/epan/dissectors/packet-e1ap.c --- wireshark-4.4.14/epan/dissectors/packet-e1ap.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-e1ap.c 2026-04-29 20:10:51.000000000 +0000 @@ -1728,6 +1728,27 @@ return e1ap_data; } +/*--- Cyclic dependencies ---*/ + +/* ProtocolIE-Field/value -> ProtocolIE-Field/value */ +static int dissect_e1ap_T_ie_field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* ProtocolExtensionField/extensionValue -> ProtocolExtensionField/extensionValue */ +static int dissect_e1ap_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* PrivateIE-Field/value -> PrivateIE-Field/value */ +static int dissect_e1ap_T_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* InitiatingMessage/value -> InitiatingMessage/value */ +static int dissect_e1ap_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* SuccessfulOutcome/value -> SuccessfulOutcome/value */ +static int dissect_e1ap_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value */ +static int dissect_e1ap_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + + static const value_string e1ap_Criticality_vals[] = { { 0, "reject" }, @@ -2115,8 +2136,11 @@ static int dissect_e1ap_T_ie_field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // ProtocolIE-Field/value -> ProtocolIE-Field/value + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolIEFieldValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -2163,8 +2187,11 @@ static int dissect_e1ap_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // ProtocolExtensionField/extensionValue -> ProtocolExtensionField/extensionValue + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolExtensionFieldExtensionValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -2202,6 +2229,8 @@ static int dissect_e1ap_T_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // PrivateIE-Field/value -> PrivateIE-Field/value + increment_dissection_depth_by_n(actx->pinfo, 1); e1ap_private_data_t *e1ap_data = e1ap_get_private_data(actx->pinfo); if (e1ap_data->obj_id) { offset = call_per_oid_callback(e1ap_data->obj_id, tvb, actx->pinfo, tree, offset, actx, hf_index); @@ -2211,6 +2240,7 @@ } + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -12595,10 +12625,13 @@ static int dissect_e1ap_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // InitiatingMessage/value -> InitiatingMessage/value + increment_dissection_depth_by_n(actx->pinfo, 1); e1ap_private_data_t *e1ap_data = e1ap_get_private_data(actx->pinfo); e1ap_data->message_type = INITIATING_MESSAGE; offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_InitiatingMessageValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -12622,10 +12655,13 @@ static int dissect_e1ap_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // SuccessfulOutcome/value -> SuccessfulOutcome/value + increment_dissection_depth_by_n(actx->pinfo, 1); e1ap_private_data_t *e1ap_data = e1ap_get_private_data(actx->pinfo); e1ap_data->message_type = SUCCESSFUL_OUTCOME; offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_SuccessfulOutcomeValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -12649,10 +12685,13 @@ static int dissect_e1ap_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value + increment_dissection_depth_by_n(actx->pinfo, 1); e1ap_private_data_t *e1ap_data = e1ap_get_private_data(actx->pinfo); e1ap_data->message_type = UNSUCCESSFUL_OUTCOME; offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_UnsuccessfulOutcomeValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } diff -Nru wireshark-4.4.14/epan/dissectors/packet-e2ap.c wireshark-4.4.15/epan/dissectors/packet-e2ap.c --- wireshark-4.4.14/epan/dissectors/packet-e2ap.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-e2ap.c 2026-04-29 20:10:51.000000000 +0000 @@ -2186,6 +2186,18 @@ /*--- Cyclic dependencies ---*/ +/* ProtocolIE-Field/value -> ProtocolIE-Field/value */ +static int dissect_e2ap_T_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* InitiatingMessage/value -> InitiatingMessage/value */ +static int dissect_e2ap_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* SuccessfulOutcome/value -> SuccessfulOutcome/value */ +static int dissect_e2ap_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value */ +static int dissect_e2ap_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + /* RANParameter-Testing-Item -> RANParameter-Testing-Item/ranParameter-Type -> RANParameter-Testing-Item-Choice-List -> RANParameter-Testing-LIST -> RANParameter-Testing-Item */ /* RANParameter-Testing-Item -> RANParameter-Testing-Item/ranParameter-Type -> RANParameter-Testing-Item-Choice-Structure -> RANParameter-Testing-STRUCTURE -> RANParameter-Testing-Item */ static int dissect_e2ap_RANParameter_Testing_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); @@ -2389,8 +2401,11 @@ static int dissect_e2ap_T_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // ProtocolIE-Field/value -> ProtocolIE-Field/value + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolIEFieldValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -5567,10 +5582,13 @@ static int dissect_e2ap_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // InitiatingMessage/value -> InitiatingMessage/value + increment_dissection_depth_by_n(actx->pinfo, 1); struct e2ap_private_data *e2ap_data = e2ap_get_private_data(actx->pinfo); e2ap_data->message_type = INITIATING_MESSAGE; offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_InitiatingMessageValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -5594,10 +5612,13 @@ static int dissect_e2ap_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // SuccessfulOutcome/value -> SuccessfulOutcome/value + increment_dissection_depth_by_n(actx->pinfo, 1); struct e2ap_private_data *e2ap_data = e2ap_get_private_data(actx->pinfo); e2ap_data->message_type = SUCCESSFUL_OUTCOME; offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_SuccessfulOutcomeValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -5621,6 +5642,8 @@ static int dissect_e2ap_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value + increment_dissection_depth_by_n(actx->pinfo, 1); struct e2ap_private_data *e2ap_data = e2ap_get_private_data(actx->pinfo); e2ap_data->message_type = UNSUCCESSFUL_OUTCOME; @@ -5642,6 +5665,7 @@ offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_UnsuccessfulOutcomeValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -7428,13 +7452,11 @@ static int dissect_e2ap_RANParameter_Testing_Item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { // RANParameter-Testing-Item -> RANParameter-Testing-Item/ranParameter-Type -> RANParameter-Testing-Item-Choice-List -> RANParameter-Testing-LIST -> RANParameter-Testing-Item - actx->pinfo->dissection_depth += 4; - increment_dissection_depth(actx->pinfo); + increment_dissection_depth_by_n(actx->pinfo, 4); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_RANParameter_Testing_Item, RANParameter_Testing_Item_sequence); - actx->pinfo->dissection_depth -= 4; - decrement_dissection_depth(actx->pinfo); + decrement_dissection_depth_by_n(actx->pinfo, 4); return offset; } @@ -7820,13 +7842,11 @@ static int dissect_e2ap_RANParameter_Definition(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { // RANParameter-Definition -> RANParameter-Definition-Choice -> RANParameter-Definition-Choice-LIST -> RANParameter-Definition-Choice-LIST/ranParameter-List -> RANParameter-Definition-Choice-LIST-Item -> RANParameter-Definition - actx->pinfo->dissection_depth += 5; - increment_dissection_depth(actx->pinfo); + increment_dissection_depth_by_n(actx->pinfo, 5); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_e2ap_RANParameter_Definition, RANParameter_Definition_sequence); - actx->pinfo->dissection_depth -= 5; - decrement_dissection_depth(actx->pinfo); + decrement_dissection_depth_by_n(actx->pinfo, 5); return offset; } @@ -7977,14 +7997,12 @@ static int dissect_e2ap_RANParameter_ValueType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { // RANParameter-ValueType -> RANParameter-ValueType-Choice-Structure -> RANParameter-STRUCTURE -> RANParameter-STRUCTURE/sequence-of-ranParameters -> RANParameter-STRUCTURE-Item -> RANParameter-ValueType - actx->pinfo->dissection_depth += 5; - increment_dissection_depth(actx->pinfo); + increment_dissection_depth_by_n(actx->pinfo, 5); offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, ett_e2ap_RANParameter_ValueType, RANParameter_ValueType_choice, NULL); - actx->pinfo->dissection_depth -= 5; - decrement_dissection_depth(actx->pinfo); + decrement_dissection_depth_by_n(actx->pinfo, 5); return offset; } diff -Nru wireshark-4.4.14/epan/dissectors/packet-epl-profile-parser.c wireshark-4.4.15/epan/dissectors/packet-epl-profile-parser.c --- wireshark-4.4.14/epan/dissectors/packet-epl-profile-parser.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-epl-profile-parser.c 2026-04-29 20:10:51.000000000 +0000 @@ -131,7 +131,7 @@ uint8_t is_sorted :1; }; -static epl_wmem_iarray_t *epl_wmem_iarray_new(wmem_allocator_t *allocator, const unsigned elem_size, GEqualFunc cmp) G_GNUC_MALLOC; +static epl_wmem_iarray_t *epl_wmem_iarray_new(wmem_allocator_t *allocator, const unsigned elem_size, GEqualFunc cmp); static void epl_wmem_iarray_insert(epl_wmem_iarray_t *iarr, uint32_t where, range_admin_t *data); static void epl_wmem_iarray_sort_and_compact(epl_wmem_iarray_t *iarr); diff -Nru wireshark-4.4.14/epan/dissectors/packet-f1ap.c wireshark-4.4.15/epan/dissectors/packet-f1ap.c --- wireshark-4.4.14/epan/dissectors/packet-f1ap.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-f1ap.c 2026-04-29 20:10:51.000000000 +0000 @@ -5425,6 +5425,27 @@ set_pdcp_nr_proto_data(pinfo, p_pdcp_nr_info); } +/*--- Cyclic dependencies ---*/ + +/* ProtocolIE-Field/value -> ProtocolIE-Field/value */ +static int dissect_f1ap_T_ie_field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* ProtocolExtensionField/extensionValue -> ProtocolExtensionField/extensionValue */ +static int dissect_f1ap_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* PrivateIE-Field/value -> PrivateIE-Field/value */ +static int dissect_f1ap_T_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* InitiatingMessage/value -> InitiatingMessage/value */ +static int dissect_f1ap_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* SuccessfulOutcome/value -> SuccessfulOutcome/value */ +static int dissect_f1ap_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value */ +static int dissect_f1ap_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + + static const value_string f1ap_Criticality_vals[] = { { 0, "reject" }, @@ -6510,8 +6531,11 @@ static int dissect_f1ap_T_ie_field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // ProtocolIE-Field/value -> ProtocolIE-Field/value + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolIEFieldValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -6558,8 +6582,11 @@ static int dissect_f1ap_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // ProtocolExtensionField/extensionValue -> ProtocolExtensionField/extensionValue + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolExtensionFieldExtensionValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -6597,6 +6624,8 @@ static int dissect_f1ap_T_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // PrivateIE-Field/value -> PrivateIE-Field/value + increment_dissection_depth_by_n(actx->pinfo, 1); f1ap_private_data_t *f1ap_data = f1ap_get_private_data(actx->pinfo); if (f1ap_data->obj_id) { offset = call_per_oid_callback(f1ap_data->obj_id, tvb, actx->pinfo, tree, offset, actx, hf_index); @@ -6606,6 +6635,7 @@ } + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -37297,10 +37327,13 @@ static int dissect_f1ap_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // InitiatingMessage/value -> InitiatingMessage/value + increment_dissection_depth_by_n(actx->pinfo, 1); f1ap_private_data_t *f1ap_data = f1ap_get_private_data(actx->pinfo); f1ap_data->message_type = INITIATING_MESSAGE; offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_InitiatingMessageValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -37324,10 +37357,13 @@ static int dissect_f1ap_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // SuccessfulOutcome/value -> SuccessfulOutcome/value + increment_dissection_depth_by_n(actx->pinfo, 1); f1ap_private_data_t *f1ap_data = f1ap_get_private_data(actx->pinfo); f1ap_data->message_type = SUCCESSFUL_OUTCOME; offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_SuccessfulOutcomeValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -37351,10 +37387,13 @@ static int dissect_f1ap_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value + increment_dissection_depth_by_n(actx->pinfo, 1); f1ap_private_data_t *f1ap_data = f1ap_get_private_data(actx->pinfo); f1ap_data->message_type = UNSUCCESSFUL_OUTCOME; offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_UnsuccessfulOutcomeValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } diff -Nru wireshark-4.4.14/epan/dissectors/packet-fcswils.c wireshark-4.4.15/epan/dissectors/packet-fcswils.c --- wireshark-4.4.14/epan/dissectors/packet-fcswils.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-fcswils.c 2026-04-29 20:10:51.000000000 +0000 @@ -1231,8 +1231,11 @@ offset += 8 + ZONENAME_LEN(tvb, offset+4); for (i = 0; i < numrec; i++) { if (objtype == FC_SWILS_ZONEOBJ_ZONESET) { - // We recurse here, but we'll run out of packet before we run out of stack. + increment_dissection_depth(pinfo); + /* XXX - Is it legal to have more than one level of nesting here? + * get_zoneobj_len assumes one at most. Should there be a subtree? */ dissect_swils_zone_obj(tvb, pinfo, zobj_tree, offset); + decrement_dissection_depth(pinfo); offset += get_zoneobj_len(tvb, offset); } else { diff -Nru wireshark-4.4.14/epan/dissectors/packet-ftam.c wireshark-4.4.15/epan/dissectors/packet-ftam.c --- wireshark-4.4.14/epan/dissectors/packet-ftam.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-ftam.c 2026-04-29 20:10:51.000000000 +0000 @@ -632,6 +632,24 @@ static expert_field ei_ftam_zero_pdu; +/*--- Cyclic dependencies ---*/ + +/* Contents-Type-Attribute/document-type/parameter -> Contents-Type-Attribute/document-type/parameter */ +static int dissect_ftam_T_parameter(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* AP-title -> AP-title */ +static int dissect_ftam_AP_title(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* AE-qualifier -> AE-qualifier */ +static int dissect_ftam_AE_qualifier(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* Extension-Attribute/extension-attribute -> Extension-Attribute/extension-attribute */ +static int dissect_ftam_T_extension_attribute(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* Attribute-Extensions-Pattern/_item/extension-set-attribute-Patterns/_item/extension-attribute-Pattern -> Attribute-Extensions-Pattern/_item/extension-set-attribute-Patterns/_item/extension-attribute-Pattern */ +static int dissect_ftam_T_extension_attribute_Pattern(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + + static int * const Protocol_Version_U_bits[] = { &hf_ftam_Protocol_Version_U_version_1, @@ -1677,11 +1695,14 @@ static int dissect_ftam_T_parameter(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // Contents-Type-Attribute/document-type/parameter -> Contents-Type-Attribute/document-type/parameter + increment_dissection_depth_by_n(actx->pinfo, 1); if (actx->external.direct_reference) { offset=call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, tree, NULL); } + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -1881,8 +1902,11 @@ static int dissect_ftam_AP_title(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // AP-title -> AP-title + increment_dissection_depth_by_n(actx->pinfo, 1); /* XXX have no idea about this one */ + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -1890,9 +1914,12 @@ static int dissect_ftam_AE_qualifier(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // AE-qualifier -> AE-qualifier + increment_dissection_depth_by_n(actx->pinfo, 1); /* XXX have no idea about this one */ + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -2042,11 +2069,14 @@ static int dissect_ftam_T_extension_attribute(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // Extension-Attribute/extension-attribute -> Extension-Attribute/extension-attribute + increment_dissection_depth_by_n(actx->pinfo, 1); if (actx->external.direct_reference) { offset=call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, tree, NULL); } + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -3748,11 +3778,14 @@ static int dissect_ftam_T_extension_attribute_Pattern(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // Attribute-Extensions-Pattern/_item/extension-set-attribute-Patterns/_item/extension-attribute-Pattern -> Attribute-Extensions-Pattern/_item/extension-set-attribute-Patterns/_item/extension-attribute-Pattern + increment_dissection_depth_by_n(actx->pinfo, 1); if (actx->external.direct_reference) { offset=call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, tree, NULL); } + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } diff -Nru wireshark-4.4.14/epan/dissectors/packet-geonw.c wireshark-4.4.15/epan/dissectors/packet-geonw.c --- wireshark-4.4.14/epan/dissectors/packet-geonw.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-geonw.c 2026-04-29 20:10:51.000000000 +0000 @@ -66,6 +66,7 @@ #include #include #include +#include #include @@ -1914,27 +1915,25 @@ field_tree = proto_item_add_subtree(ti, ett_sgeonw_field); proto_tree_add_item(field_tree, hf_sgeonw_payload_field_type, tvb, *offset, 1, ENC_BIG_ENDIAN); *offset += 1; + param_len = dissect_sec_var_len(tvb, offset, pinfo, field_tree); switch(tmp_val) { case unsecured: case signed_pl: - param_len = dissect_sec_var_len(tvb, offset, pinfo, field_tree); if (param_len) { tvbuff_t *next_tvb = tvb_new_subset_length(tvb, *offset, param_len); p_add_proto_data(pinfo->pool, pinfo, proto_geonw, SEC_TVB_KEY, next_tvb); } - *offset += param_len; break; case encrypted: case signed_and_encrypted: - param_len = dissect_sec_var_len(tvb, offset, pinfo, field_tree); proto_tree_add_item(field_tree, hf_sgeonw_opaque, tvb, *offset, param_len, ENC_NA); - *offset += param_len; break; default: // Opaque - param_len = dissect_sec_var_len(tvb, offset, pinfo, field_tree); proto_tree_add_item(field_tree, hf_sgeonw_opaque, tvb, *offset, param_len, ENC_NA); - *offset += param_len; + } + if (ckd_add(offset, *offset, param_len)) { + THROW(ReportedBoundsError); } proto_item_set_end(ti, tvb, *offset); } diff -Nru wireshark-4.4.14/epan/dissectors/packet-glow.c wireshark-4.4.15/epan/dissectors/packet-glow.c --- wireshark-4.4.14/epan/dissectors/packet-glow.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-glow.c 2026-04-29 20:10:51.000000000 +0000 @@ -1087,13 +1087,11 @@ static int dissect_glow_ElementCollection(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { // ElementCollection -> ElementCollection/_untag -> Element -> Node -> Node/_untag -> ElementCollection - actx->pinfo->dissection_depth += 5; - increment_dissection_depth(actx->pinfo); + increment_dissection_depth_by_n(actx->pinfo, 5); offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset, hf_index, BER_CLASS_APP, 4, true, dissect_glow_SEQUENCE_OF_Element); - actx->pinfo->dissection_depth -= 5; - decrement_dissection_depth(actx->pinfo); + decrement_dissection_depth_by_n(actx->pinfo, 5); return offset; } @@ -1118,13 +1116,11 @@ static int dissect_glow_Parameter(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { // Parameter -> Parameter/_untag -> ElementCollection -> ElementCollection/_untag -> Element -> Parameter - actx->pinfo->dissection_depth += 5; - increment_dissection_depth(actx->pinfo); + increment_dissection_depth_by_n(actx->pinfo, 5); offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset, hf_index, BER_CLASS_APP, 1, true, dissect_glow_Parameter_U); - actx->pinfo->dissection_depth -= 5; - decrement_dissection_depth(actx->pinfo); + decrement_dissection_depth_by_n(actx->pinfo, 5); return offset; } @@ -1175,13 +1171,11 @@ static int dissect_glow_Template(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { // Template -> Template/_untag -> TemplateElement -> Parameter -> Parameter/_untag -> ElementCollection -> ElementCollection/_untag -> Element -> Template - actx->pinfo->dissection_depth += 8; - increment_dissection_depth(actx->pinfo); + increment_dissection_depth_by_n(actx->pinfo, 8); offset = dissect_ber_tagged_type(implicit_tag, actx, tree, tvb, offset, hf_index, BER_CLASS_APP, 24, true, dissect_glow_Template_U); - actx->pinfo->dissection_depth -= 8; - decrement_dissection_depth(actx->pinfo); + decrement_dissection_depth_by_n(actx->pinfo, 8); return offset; } diff -Nru wireshark-4.4.14/epan/dissectors/packet-goose.c wireshark-4.4.15/epan/dissectors/packet-goose.c --- wireshark-4.4.14/epan/dissectors/packet-goose.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-goose.c 2026-04-29 20:10:51.000000000 +0000 @@ -713,14 +713,12 @@ static int dissect_goose_Data(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { // Data -> Data/array -> Data - actx->pinfo->dissection_depth += 2; - increment_dissection_depth(actx->pinfo); + increment_dissection_depth_by_n(actx->pinfo, 2); offset = dissect_ber_choice(actx, tree, tvb, offset, Data_choice, hf_index, ett_goose_Data, NULL); - actx->pinfo->dissection_depth -= 2; - decrement_dissection_depth(actx->pinfo); + decrement_dissection_depth_by_n(actx->pinfo, 2); return offset; } diff -Nru wireshark-4.4.14/epan/dissectors/packet-gprscdr.c wireshark-4.4.15/epan/dissectors/packet-gprscdr.c --- wireshark-4.4.14/epan/dissectors/packet-gprscdr.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-gprscdr.c 2026-04-29 20:10:51.000000000 +0000 @@ -703,6 +703,12 @@ return length; } +/*--- Cyclic dependencies ---*/ + +/* ManagementExtension/information -> ManagementExtension/information */ +static int dissect_gprscdr_T_information(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + + static int @@ -949,6 +955,8 @@ static int dissect_gprscdr_T_information(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // ManagementExtension/information -> ManagementExtension/information + increment_dissection_depth_by_n(actx->pinfo, 1); proto_tree *ext_tree; ext_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_gprscdr_managementextension_information, NULL, "Information"); @@ -959,6 +967,7 @@ } + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } diff -Nru wireshark-4.4.14/epan/dissectors/packet-gsm_a_rp.c wireshark-4.4.15/epan/dissectors/packet-gsm_a_rp.c --- wireshark-4.4.14/epan/dissectors/packet-gsm_a_rp.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-gsm_a_rp.c 2026-04-29 20:10:51.000000000 +0000 @@ -93,8 +93,6 @@ static int proto_json; -static proto_tree *g_tree; - #define NUM_GSM_RP_ELEM array_length(gsm_rp_elem_strings) int ett_gsm_rp_elem[NUM_GSM_RP_ELEM]; @@ -153,7 +151,7 @@ */ tpdu_tvb = tvb_new_subset_length(tvb, curr_offset, len); - call_dissector_only(gsm_sms_handle, tpdu_tvb, pinfo, g_tree, NULL); + call_dissector_only(gsm_sms_handle, tpdu_tvb, pinfo, proto_tree_get_parent_tree(tree), NULL); curr_offset += len; @@ -431,8 +429,6 @@ offset = 0; saved_offset = offset; - g_tree = tree; - len = tvb_reported_length(tvb); /* diff -Nru wireshark-4.4.14/epan/dissectors/packet-gsm_map.c wireshark-4.4.15/epan/dissectors/packet-gsm_map.c --- wireshark-4.4.14/epan/dissectors/packet-gsm_map.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-gsm_map.c 2026-04-29 20:10:51.000000000 +0000 @@ -3703,6 +3703,12 @@ /* --- Module MAP-ExtensionDataTypes --- --- --- */ +/*--- Cyclic dependencies ---*/ + +/* PrivateExtension/extType -> PrivateExtension/extType */ +static int dissect_gsm_map_T_extType(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + + static int @@ -3719,6 +3725,8 @@ static int dissect_gsm_map_T_extType(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // PrivateExtension/extType -> PrivateExtension/extType + increment_dissection_depth_by_n(actx->pinfo, 1); proto_tree *ext_tree; ext_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_gsm_map_extension_data, NULL, "Extension Data"); if (actx->external.direct_ref_present){ @@ -3729,6 +3737,7 @@ } + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } diff -Nru wireshark-4.4.14/epan/dissectors/packet-h225.c wireshark-4.4.15/epan/dissectors/packet-h225.c --- wireshark-4.4.14/epan/dissectors/packet-h225.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-h225.c 2026-04-29 20:10:51.000000000 +0000 @@ -3971,8 +3971,7 @@ static int dissect_h225_EnumeratedParameter(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { // EnumeratedParameter -> Content -> Content/compound -> EnumeratedParameter - actx->pinfo->dissection_depth += 3; - increment_dissection_depth(actx->pinfo); + increment_dissection_depth_by_n(actx->pinfo, 3); gef_ctx_t *parent_gefx; parent_gefx = gef_ctx_get(actx->private_data); @@ -3980,8 +3979,7 @@ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_h225_EnumeratedParameter, EnumeratedParameter_sequence); - actx->pinfo->dissection_depth -= 3; - decrement_dissection_depth(actx->pinfo); + decrement_dissection_depth_by_n(actx->pinfo, 3); actx->private_data = parent_gefx; return offset; } @@ -3996,8 +3994,7 @@ int dissect_h225_GenericData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { // GenericData -> GenericData/parameters -> EnumeratedParameter -> Content -> Content/nested -> GenericData - actx->pinfo->dissection_depth += 5; - increment_dissection_depth(actx->pinfo); + increment_dissection_depth_by_n(actx->pinfo, 5); void *priv_data = actx->private_data; gef_ctx_t *gefx; @@ -4010,8 +4007,7 @@ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_h225_GenericData, GenericData_sequence); - actx->pinfo->dissection_depth -= 5; - decrement_dissection_depth(actx->pinfo); + decrement_dissection_depth_by_n(actx->pinfo, 5); actx->private_data = priv_data; return offset; } diff -Nru wireshark-4.4.14/epan/dissectors/packet-h245.c wireshark-4.4.15/epan/dissectors/packet-h245.c --- wireshark-4.4.14/epan/dissectors/packet-h245.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-h245.c 2026-04-29 20:10:51.000000000 +0000 @@ -3866,13 +3866,11 @@ static int dissect_h245_GenericParameter(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { // GenericParameter -> ParameterValue -> ParameterValue/genericParameter -> GenericParameter - actx->pinfo->dissection_depth += 3; - increment_dissection_depth(actx->pinfo); + increment_dissection_depth_by_n(actx->pinfo, 3); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_h245_GenericParameter, GenericParameter_sequence); - actx->pinfo->dissection_depth -= 3; - decrement_dissection_depth(actx->pinfo); + decrement_dissection_depth_by_n(actx->pinfo, 3); return offset; } @@ -5666,8 +5664,7 @@ static int dissect_h245_VideoCapability(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { // VideoCapability -> ExtendedVideoCapability -> ExtendedVideoCapability/videoCapability -> VideoCapability - actx->pinfo->dissection_depth += 3; - increment_dissection_depth(actx->pinfo); + increment_dissection_depth_by_n(actx->pinfo, 3); int32_t value; offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, @@ -5677,8 +5674,7 @@ codec_type = val_to_str_const(value, h245_VideoCapability_vals, ""); - actx->pinfo->dissection_depth -= 3; - decrement_dissection_depth(actx->pinfo); + decrement_dissection_depth_by_n(actx->pinfo, 3); return offset; } @@ -5987,8 +5983,7 @@ static int dissect_h245_AudioCapability(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { // AudioCapability -> VBDCapability -> AudioCapability - actx->pinfo->dissection_depth += 2; - increment_dissection_depth(actx->pinfo); + increment_dissection_depth_by_n(actx->pinfo, 2); int32_t value; offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, @@ -5997,8 +5992,7 @@ codec_type = val_to_str_const(value, h245_AudioCapability_short_vals, ""); - actx->pinfo->dissection_depth -= 2; - decrement_dissection_depth(actx->pinfo); + decrement_dissection_depth_by_n(actx->pinfo, 2); return offset; } @@ -7150,8 +7144,7 @@ static int dissect_h245_DataType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { // DataType -> H235Media -> H235Media/mediaType -> RedundancyEncoding -> DataType - actx->pinfo->dissection_depth += 4; - increment_dissection_depth(actx->pinfo); + increment_dissection_depth_by_n(actx->pinfo, 4); int choice_index; offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, @@ -7168,8 +7161,7 @@ } - actx->pinfo->dissection_depth -= 4; - decrement_dissection_depth(actx->pinfo); + decrement_dissection_depth_by_n(actx->pinfo, 4); return offset; } @@ -8871,8 +8863,7 @@ static int dissect_h245_MultiplexElement(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { // MultiplexElement -> MultiplexElement/type -> MultiplexElement/type/subElementList -> MultiplexElement - actx->pinfo->dissection_depth += 3; - increment_dissection_depth(actx->pinfo); + increment_dissection_depth_by_n(actx->pinfo, 3); /*MultiplexElement*/ h223_mux_element* me = wmem_new(wmem_file_scope(), h223_mux_element); h223_me->next = me; @@ -8881,8 +8872,7 @@ offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_h245_MultiplexElement, MultiplexElement_sequence); - actx->pinfo->dissection_depth -= 3; - decrement_dissection_depth(actx->pinfo); + decrement_dissection_depth_by_n(actx->pinfo, 3); return offset; } @@ -9505,8 +9495,7 @@ static int dissect_h245_AudioMode(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { // AudioMode -> VBDMode -> AudioMode - actx->pinfo->dissection_depth += 2; - increment_dissection_depth(actx->pinfo); + increment_dissection_depth_by_n(actx->pinfo, 2); int32_t value; offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, @@ -9515,8 +9504,7 @@ codec_type = val_to_str_const(value, h245_AudioMode_vals, ""); - actx->pinfo->dissection_depth -= 2; - decrement_dissection_depth(actx->pinfo); + decrement_dissection_depth_by_n(actx->pinfo, 2); return offset; } @@ -9863,14 +9851,12 @@ static int dissect_h245_ModeElementType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { // ModeElementType -> RedundancyEncodingDTMode -> RedundancyEncodingDTModeElement -> RedundancyEncodingDTModeElement/type -> FECMode -> ModeElementType - actx->pinfo->dissection_depth += 5; - increment_dissection_depth(actx->pinfo); + increment_dissection_depth_by_n(actx->pinfo, 5); offset = dissect_per_choice(tvb, offset, actx, tree, hf_index, ett_h245_ModeElementType, ModeElementType_choice, NULL); - actx->pinfo->dissection_depth -= 5; - decrement_dissection_depth(actx->pinfo); + decrement_dissection_depth_by_n(actx->pinfo, 5); return offset; } diff -Nru wireshark-4.4.14/epan/dissectors/packet-h248.c wireshark-4.4.15/epan/dissectors/packet-h248.c --- wireshark-4.4.14/epan/dissectors/packet-h248.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-h248.c 2026-04-29 20:10:51.000000000 +0000 @@ -4252,13 +4252,11 @@ static int dissect_h248_SecondEventsDescriptor(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { // SecondEventsDescriptor -> SecondEventsDescriptor/eventList -> SecondRequestedEvent -> SecondRequestedActions -> NotifyBehaviour -> RegulatedEmbeddedDescriptor -> SecondEventsDescriptor - actx->pinfo->dissection_depth += 6; - increment_dissection_depth(actx->pinfo); + increment_dissection_depth_by_n(actx->pinfo, 6); offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, SecondEventsDescriptor_sequence, hf_index, ett_h248_SecondEventsDescriptor); - actx->pinfo->dissection_depth -= 6; - decrement_dissection_depth(actx->pinfo); + decrement_dissection_depth_by_n(actx->pinfo, 6); return offset; } diff -Nru wireshark-4.4.14/epan/dissectors/packet-h450-ros.c wireshark-4.4.15/epan/dissectors/packet-h450-ros.c --- wireshark-4.4.14/epan/dissectors/packet-h450-ros.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-h450-ros.c 2026-04-29 20:10:51.000000000 +0000 @@ -95,6 +95,18 @@ return tvb_captured_length(tvb); } +/*--- Cyclic dependencies ---*/ + +/* Invoke/argument -> Invoke/argument */ +static int dissect_h450_ros_InvokeArgument(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* ReturnResult/result/result -> ReturnResult/result/result */ +static int dissect_h450_ros_ResultArgument(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* ReturnError/parameter -> ReturnError/parameter */ +static int dissect_h450_ros_T_parameter(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + + static int @@ -159,8 +171,11 @@ static int dissect_h450_ros_InvokeArgument(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // Invoke/argument -> Invoke/argument + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, argument_cb); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -224,8 +239,11 @@ static int dissect_h450_ros_ResultArgument(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // ReturnResult/result/result -> ReturnResult/result/result + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, result_cb); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -305,8 +323,11 @@ static int dissect_h450_ros_T_parameter(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // ReturnError/parameter -> ReturnError/parameter + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, error_cb); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } diff -Nru wireshark-4.4.14/epan/dissectors/packet-h450.c wireshark-4.4.15/epan/dissectors/packet-h450.c --- wireshark-4.4.14/epan/dissectors/packet-h450.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-h450.c 2026-04-29 20:10:51.000000000 +0000 @@ -797,6 +797,12 @@ /* --- Modules H4501-Supplementary-ServiceAPDU-Structure Addressing-Data-Elements H225-generic-parameters-definition Manufacturer-specific-service-extension-definition H4501-General-Error-List --- --- --- */ +/*--- Cyclic dependencies ---*/ + +/* Extension/extensionArgument -> Extension/extensionArgument */ +static int dissect_h450_T_extensionArgument(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + + static int @@ -1073,8 +1079,11 @@ static int dissect_h450_T_extensionArgument(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // Extension/extensionArgument -> Extension/extensionArgument + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type(tvb, offset, actx, tree, hf_index, NULL); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } diff -Nru wireshark-4.4.14/epan/dissectors/packet-hnbap.c wireshark-4.4.15/epan/dissectors/packet-hnbap.c --- wireshark-4.4.14/epan/dissectors/packet-hnbap.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-hnbap.c 2026-04-29 20:10:51.000000000 +0000 @@ -338,6 +338,27 @@ return hnbap_data; } +/*--- Cyclic dependencies ---*/ + +/* ProtocolIE-Field/value -> ProtocolIE-Field/value */ +static int dissect_hnbap_ProtocolIE_Field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* ProtocolExtensionField/extensionValue -> ProtocolExtensionField/extensionValue */ +static int dissect_hnbap_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* PrivateIE-Field/value -> PrivateIE-Field/value */ +static int dissect_hnbap_PrivateIE_Field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* InitiatingMessage/value -> InitiatingMessage/value */ +static int dissect_hnbap_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* SuccessfulOutcome/value -> SuccessfulOutcome/value */ +static int dissect_hnbap_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value */ +static int dissect_hnbap_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + + static const value_string hnbap_Criticality_vals[] = { { 0, "reject" }, @@ -494,8 +515,11 @@ static int dissect_hnbap_ProtocolIE_Field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // ProtocolIE-Field/value -> ProtocolIE-Field/value + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolIEFieldValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -533,8 +557,11 @@ static int dissect_hnbap_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // ProtocolExtensionField/extensionValue -> ProtocolExtensionField/extensionValue + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolExtensionFieldExtensionValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -572,8 +599,11 @@ static int dissect_hnbap_PrivateIE_Field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // PrivateIE-Field/value -> PrivateIE-Field/value + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type(tvb, offset, actx, tree, hf_index, NULL); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -2140,8 +2170,11 @@ static int dissect_hnbap_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // InitiatingMessage/value -> InitiatingMessage/value + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_InitiatingMessageValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -2165,8 +2198,11 @@ static int dissect_hnbap_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // SuccessfulOutcome/value -> SuccessfulOutcome/value + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_SuccessfulOutcomeValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -2190,8 +2226,11 @@ static int dissect_hnbap_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_UnsuccessfulOutcomeValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } diff -Nru wireshark-4.4.14/epan/dissectors/packet-http.c wireshark-4.4.15/epan/dissectors/packet-http.c --- wireshark-4.4.14/epan/dissectors/packet-http.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-http.c 2026-04-29 20:10:51.000000000 +0000 @@ -970,7 +970,13 @@ } /* Otherwise, it replaces the last element in the URI */ else { - char *scheme_end = strstr(base_url_no_query, "://") + 3; + char *scheme_end; + + scheme_end = strstr(base_url_no_query, "://"); + if (!(scheme_end)) { + return NULL; + } + scheme_end += strlen("://"); char *end_of_path = g_strrstr(scheme_end, "/"); if (end_of_path != NULL) { diff -Nru wireshark-4.4.14/epan/dissectors/packet-http2.c wireshark-4.4.15/epan/dissectors/packet-http2.c --- wireshark-4.4.14/epan/dissectors/packet-http2.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-http2.c 2026-04-29 20:10:51.000000000 +0000 @@ -1113,7 +1113,7 @@ } g_strstrip(rec->header_value); - if (rec->header_name[0] == 0) { + if (rec->header_value[0] == 0) { *err = g_strdup("Header value can't be empty"); return false; } @@ -3909,22 +3909,21 @@ /* Altsvc */ static int dissect_http2_altsvc(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *http2_tree, - unsigned offset, uint8_t flags _U_, uint16_t length) + unsigned offset, uint8_t flags _U_, uint32_t length) { uint32_t origin_len; - int remain = length; proto_tree_add_item_ret_uint(http2_tree, hf_http2_altsvc_origin_len, tvb, offset, 2, ENC_BIG_ENDIAN, &origin_len); offset += 2; - remain -= 2; + length -= 2; proto_tree_add_item(http2_tree, hf_http2_altsvc_origin, tvb, offset, origin_len, ENC_ASCII); offset += origin_len; - remain -= origin_len; + length -= origin_len; - if(remain) { - proto_tree_add_item(http2_tree, hf_http2_altsvc_field_value, tvb, offset, remain, ENC_ASCII); - offset += remain; + if (length) { + proto_tree_add_item(http2_tree, hf_http2_altsvc_field_value, tvb, offset, length, ENC_ASCII); + offset += length; } return offset; @@ -3958,16 +3957,14 @@ /* Priority Update */ static int dissect_http2_priority_update(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *http2_tree, - unsigned offset, uint8_t flags _U_, uint16_t length) + unsigned offset, uint8_t flags _U_, uint32_t length) { - int remain = length; - proto_tree_add_item(http2_tree, hf_http2_priority_update_stream_id, tvb, offset, 4, ENC_BIG_ENDIAN); offset += 4; - remain -= 4; + length -= 4; - proto_tree_add_item(http2_tree, hf_http2_priority_update_field_value, tvb, offset, remain, ENC_ASCII); - offset += remain; + proto_tree_add_item(http2_tree, hf_http2_priority_update_field_value, tvb, offset, length, ENC_ASCII); + offset += length; return offset; } @@ -3980,7 +3977,7 @@ proto_tree *http2_tree; unsigned offset = 0; uint8_t type, flags; - uint16_t length; + uint32_t length; uint32_t streamid; struct HTTP2Tap *http2_stats; GHashTable* entry; @@ -4043,8 +4040,7 @@ return MAGIC_FRAME_LENGTH; } - proto_tree_add_item(http2_tree, hf_http2_length, tvb, offset, 3, ENC_BIG_ENDIAN); - length = tvb_get_ntoh24(tvb, offset); + proto_tree_add_item_ret_uint(http2_tree, hf_http2_length, tvb, offset, 3, ENC_BIG_ENDIAN, &length); offset += 3; proto_tree_add_item(http2_tree, hf_http2_type, tvb, offset, 1, ENC_BIG_ENDIAN); diff -Nru wireshark-4.4.14/epan/dissectors/packet-icmpv6.c wireshark-4.4.15/epan/dissectors/packet-icmpv6.c --- wireshark-4.4.14/epan/dissectors/packet-icmpv6.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-icmpv6.c 2026-04-29 20:10:51.000000000 +0000 @@ -2246,8 +2246,14 @@ opt_offset += 16; } - /* Options */ - opt_offset = dissect_icmpv6_nd_opt(tvb, opt_offset, pinfo, icmp6opt_tree); + /* https://datatracker.ietf.org/doc/html/rfc8801#section-3.1-3.24 + * Zero or more RA options to be ignored by hosts that are not + * PvD aware. */ + if (opt_offset < offset + opt_len) { + // Don't dissect options in the main body. + opt_tvb = tvb_new_subset_length(tvb, opt_offset, offset + opt_len - opt_offset); + opt_offset += dissect_icmpv6_nd_opt(opt_tvb, 0, pinfo, icmp6opt_tree); + } break; } @@ -2453,7 +2459,7 @@ opt_offset += hai_len; /* Padding... */ - padd_length = opt_len - opt_offset; + padd_length = opt_len - (opt_offset - offset); proto_tree_add_item(icmp6opt_tree, hf_icmpv6_opt_padding, tvb, opt_offset, padd_length, ENC_NA); opt_offset += padd_length; @@ -2477,7 +2483,7 @@ opt_offset += mn_len; /* Padding... */ - padd_length = opt_len - opt_offset; + padd_length = opt_len - (opt_offset - offset); proto_tree_add_item(icmp6opt_tree, hf_icmpv6_opt_padding, tvb, opt_offset, padd_length, ENC_NA); opt_offset += padd_length; diff -Nru wireshark-4.4.14/epan/dissectors/packet-idmp.c wireshark-4.4.15/epan/dissectors/packet-idmp.c --- wireshark-4.4.14/epan/dissectors/packet-idmp.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-idmp.c 2026-04-29 20:10:51.000000000 +0000 @@ -166,6 +166,21 @@ static int ett_idmp_Code; static int ett_idmp_InvokeId; +/*--- Cyclic dependencies ---*/ + +/* IdmBind/argument -> IdmBind/argument */ +static int dissect_idmp_Bind_argument(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* IdmBindResult/result -> IdmBindResult/result */ +static int dissect_idmp_Bind_result(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* Request/argument -> Request/argument */ +static int dissect_idmp_T_argument(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* IdmResult/result -> IdmResult/result */ +static int dissect_idmp_T_result(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + + static int @@ -179,11 +194,13 @@ static int dissect_idmp_Bind_argument(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - struct SESSION_DATA_STRUCTURE *session = (struct SESSION_DATA_STRUCTURE*)actx->private_data; - - return call_idmp_oid_callback(tvb, offset, actx->pinfo, (ROS_OP_BIND | ROS_OP_ARGUMENT), top_tree, session); + // IdmBind/argument -> IdmBind/argument + increment_dissection_depth_by_n(actx->pinfo, 1); + struct SESSION_DATA_STRUCTURE *session = (struct SESSION_DATA_STRUCTURE*)actx->private_data; + offset = call_idmp_oid_callback(tvb, offset, actx->pinfo, (ROS_OP_BIND | ROS_OP_ARGUMENT), top_tree, session); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -198,13 +215,13 @@ static int dissect_idmp_IdmBind(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - protocolID = saved_protocolID = NULL; + protocolID = saved_protocolID = NULL; offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, IdmBind_sequence, hf_index, ett_idmp_IdmBind); - if (protocolID) { - saved_protocolID = wmem_strdup(wmem_epan_scope(), protocolID); - } + if (protocolID) { + saved_protocolID = wmem_strdup(wmem_epan_scope(), protocolID); + } return offset; } @@ -212,11 +229,13 @@ static int dissect_idmp_Bind_result(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - struct SESSION_DATA_STRUCTURE *session = (struct SESSION_DATA_STRUCTURE*)actx->private_data; - - return call_idmp_oid_callback(tvb, offset, actx->pinfo, (ROS_OP_BIND | ROS_OP_RESULT), top_tree, session); + // IdmBindResult/result -> IdmBindResult/result + increment_dissection_depth_by_n(actx->pinfo, 1); + struct SESSION_DATA_STRUCTURE *session = (struct SESSION_DATA_STRUCTURE*)actx->private_data; + offset = call_idmp_oid_callback(tvb, offset, actx->pinfo, (ROS_OP_BIND | ROS_OP_RESULT), top_tree, session); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -265,9 +284,8 @@ static int dissect_idmp_Bind_error(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - struct SESSION_DATA_STRUCTURE *session = (struct SESSION_DATA_STRUCTURE*)actx->private_data; - - return call_idmp_oid_callback(tvb, offset, actx->pinfo, (ROS_OP_BIND| ROS_OP_ERROR), top_tree, session); + struct SESSION_DATA_STRUCTURE *session = (struct SESSION_DATA_STRUCTURE*)actx->private_data; + offset = call_idmp_oid_callback(tvb, offset, actx->pinfo, (ROS_OP_BIND| ROS_OP_ERROR), top_tree, session); return offset; @@ -337,11 +355,13 @@ static int dissect_idmp_T_argument(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - struct SESSION_DATA_STRUCTURE *session = (struct SESSION_DATA_STRUCTURE*)actx->private_data; - - return call_idmp_oid_callback(tvb, offset, actx->pinfo, (ROS_OP_INVOKE | ROS_OP_ARGUMENT | opcode), top_tree, session); + // Request/argument -> Request/argument + increment_dissection_depth_by_n(actx->pinfo, 1); + struct SESSION_DATA_STRUCTURE *session = (struct SESSION_DATA_STRUCTURE*)actx->private_data; + offset = call_idmp_oid_callback(tvb, offset, actx->pinfo, (ROS_OP_INVOKE | ROS_OP_ARGUMENT | opcode), top_tree, session); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -396,11 +416,13 @@ static int dissect_idmp_T_result(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - struct SESSION_DATA_STRUCTURE *session = (struct SESSION_DATA_STRUCTURE*)actx->private_data; - - return call_idmp_oid_callback(tvb, offset, actx->pinfo, (ROS_OP_INVOKE | ROS_OP_RESULT | opcode), top_tree, session); + // IdmResult/result -> IdmResult/result + increment_dissection_depth_by_n(actx->pinfo, 1); + struct SESSION_DATA_STRUCTURE *session = (struct SESSION_DATA_STRUCTURE*)actx->private_data; + offset = call_idmp_oid_callback(tvb, offset, actx->pinfo, (ROS_OP_INVOKE | ROS_OP_RESULT | opcode), top_tree, session); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } diff -Nru wireshark-4.4.14/epan/dissectors/packet-ieee1609dot2.c wireshark-4.4.15/epan/dissectors/packet-ieee1609dot2.c --- wireshark-4.4.14/epan/dissectors/packet-ieee1609dot2.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-ieee1609dot2.c 2026-04-29 20:10:51.000000000 +0000 @@ -431,6 +431,18 @@ /*--- Cyclic dependencies ---*/ +/* AppExtension/content -> AppExtension/content */ +static int dissect_ieee1609dot2_T_content(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* CertIssueExtension/permissions/specific -> CertIssueExtension/permissions/specific */ +static int dissect_ieee1609dot2_T_specific(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* CertRequestExtension/permissions/content -> CertRequestExtension/permissions/content */ +static int dissect_ieee1609dot2_T_content_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* ContributedExtensionBlock/extns/_item -> ContributedExtensionBlock/extns/_item */ +static int dissect_ieee1609dot2_T_extns_item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + /* Ieee1609Dot2Data -> Ieee1609Dot2Content -> SignedData -> ToBeSignedData -> SignedDataPayload -> Ieee1609Dot2Data */ static int dissect_ieee1609dot2_Ieee1609Dot2Data(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); @@ -2341,8 +2353,11 @@ static int dissect_ieee1609dot2_T_content(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // AppExtension/content -> AppExtension/content + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_oer_open_type(tvb, offset, actx, tree, hf_index, NULL); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -2379,8 +2394,11 @@ static int dissect_ieee1609dot2_T_specific(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // CertIssueExtension/permissions/specific -> CertIssueExtension/permissions/specific + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_oer_open_type(tvb, offset, actx, tree, hf_index, NULL); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -2439,8 +2457,11 @@ static int dissect_ieee1609dot2_T_content_01(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // CertRequestExtension/permissions/content -> CertRequestExtension/permissions/content + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_oer_open_type(tvb, offset, actx, tree, hf_index, NULL); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -2588,8 +2609,11 @@ static int dissect_ieee1609dot2_T_extns_item(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // ContributedExtensionBlock/extns/_item -> ContributedExtensionBlock/extns/_item + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_oer_open_type(tvb, offset, actx, tree, hf_index, NULL); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -3060,14 +3084,12 @@ static int dissect_ieee1609dot2_Ieee1609Dot2Data(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { // Ieee1609Dot2Data -> Ieee1609Dot2Content -> SignedData -> ToBeSignedData -> SignedDataPayload -> Ieee1609Dot2Data - actx->pinfo->dissection_depth += 5; - increment_dissection_depth(actx->pinfo); + increment_dissection_depth_by_n(actx->pinfo, 5); actx->private_data = (void*)wmem_new0(actx->pinfo->pool, ieee1609_private_data_t); offset = dissect_oer_sequence(tvb, offset, actx, tree, hf_index, ett_ieee1609dot2_Ieee1609Dot2Data, Ieee1609Dot2Data_sequence); - actx->pinfo->dissection_depth -= 5; - decrement_dissection_depth(actx->pinfo); + decrement_dissection_depth_by_n(actx->pinfo, 5); return offset; } diff -Nru wireshark-4.4.14/epan/dissectors/packet-inap.c wireshark-4.4.15/epan/dissectors/packet-inap.c --- wireshark-4.4.14/epan/dissectors/packet-inap.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-inap.c 2026-04-29 20:10:51.000000000 +0000 @@ -1419,6 +1419,36 @@ static int dissect_returnResultData(proto_tree *tree, tvbuff_t *tvb, int offset, asn1_ctx_t *actx _U_); static int dissect_returnErrorData(proto_tree *tree, tvbuff_t *tvb, int offset, asn1_ctx_t *actx); +/*--- Cyclic dependencies ---*/ + +/* ExtensionField/value -> ExtensionField/value */ +static int dissect_inap_T_value(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* TriggerData/triggerPar -> TriggerData/triggerPar */ +static int dissect_inap_T_triggerPar(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* ScriptCloseArg/uIScriptSpecificInfo -> ScriptCloseArg/uIScriptSpecificInfo */ +static int dissect_inap_T_uIScriptSpecificInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* ScriptEventArg/uIScriptResult -> ScriptEventArg/uIScriptResult */ +static int dissect_inap_T_uIScriptResult(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* ScriptInformationArg/uIScriptSpecificInfo -> ScriptInformationArg/uIScriptSpecificInfo */ +static int dissect_inap_T_uIScriptSpecificInfo_01(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* ScriptRunArg/uIScriptSpecificInfo -> ScriptRunArg/uIScriptSpecificInfo */ +static int dissect_inap_T_uIScriptSpecificInfo_02(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* Invoke/argument -> Invoke/argument */ +static int dissect_inap_T_argument(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* ReturnResult/result/result -> ReturnResult/result/result */ +static int dissect_inap_ResultArgument(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* ReturnError/parameter -> ReturnError/parameter */ +static int dissect_inap_T_parameter(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + + const value_string inap_CriticalityType_vals[] = { { 0, "ignore" }, @@ -1494,6 +1524,8 @@ static int dissect_inap_T_value(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // ExtensionField/value -> ExtensionField/value + increment_dissection_depth_by_n(actx->pinfo, 1); proto_tree *ext_tree; ext_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_inap_extension_data, NULL, "Extension Data"); if (obj_id){ @@ -1507,6 +1539,7 @@ + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -5216,9 +5249,12 @@ static int dissect_inap_T_triggerPar(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // TriggerData/triggerPar -> TriggerData/triggerPar + increment_dissection_depth_by_n(actx->pinfo, 1); /* FIX ME */ + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -7792,9 +7828,12 @@ static int dissect_inap_T_uIScriptSpecificInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // ScriptCloseArg/uIScriptSpecificInfo -> ScriptCloseArg/uIScriptSpecificInfo + increment_dissection_depth_by_n(actx->pinfo, 1); /* FIX ME */ + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -7819,9 +7858,12 @@ static int dissect_inap_T_uIScriptResult(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // ScriptEventArg/uIScriptResult -> ScriptEventArg/uIScriptResult + increment_dissection_depth_by_n(actx->pinfo, 1); /* FIX ME */ + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -7847,8 +7889,11 @@ static int dissect_inap_T_uIScriptSpecificInfo_01(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // ScriptInformationArg/uIScriptSpecificInfo -> ScriptInformationArg/uIScriptSpecificInfo + increment_dissection_depth_by_n(actx->pinfo, 1); /* FIX ME */ + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -7873,9 +7918,12 @@ static int dissect_inap_T_uIScriptSpecificInfo_02(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // ScriptRunArg/uIScriptSpecificInfo -> ScriptRunArg/uIScriptSpecificInfo + increment_dissection_depth_by_n(actx->pinfo, 1); /* FIX ME */ + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -8102,10 +8150,13 @@ static int dissect_inap_T_argument(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // Invoke/argument -> Invoke/argument + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_invokeData(tree, tvb, offset, actx); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -8133,10 +8184,13 @@ static int dissect_inap_ResultArgument(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // ReturnResult/result/result -> ReturnResult/result/result + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_returnResultData(tree, tvb, offset, actx); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -8177,12 +8231,15 @@ static int dissect_inap_T_parameter(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // ReturnError/parameter -> ReturnError/parameter + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_returnErrorData(tree, tvb, offset, actx); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } diff -Nru wireshark-4.4.14/epan/dissectors/packet-ip.c wireshark-4.4.15/epan/dissectors/packet-ip.c --- wireshark-4.4.14/epan/dissectors/packet-ip.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-ip.c 2026-04-29 20:10:51.000000000 +0000 @@ -2240,6 +2240,12 @@ copy_address_shallow(&pinfo->dst, &pinfo->net_dst); copy_address_shallow(&iph->ip_dst, &pinfo->net_dst); + /* XXX - We do not want pinfo->conv_elements, if set, to be used to find the + * default conversation after this, or else subdissectors will set the + * wrong dissector. This is a bit of a hack, it should be solved more + * generally. */ + pinfo->conv_elements = NULL; + /* If an IP is destined for an IP address in the Local Network Control Block * (e.g. 224.0.0.0/24), the packet should never be routed and the TTL would * be expected to be 1. (see RFC 3171) Flag a TTL greater than 1. diff -Nru wireshark-4.4.14/epan/dissectors/packet-ipsec.c wireshark-4.4.15/epan/dissectors/packet-ipsec.c --- wireshark-4.4.14/epan/dissectors/packet-ipsec.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-ipsec.c 2026-04-29 20:10:51.000000000 +0000 @@ -2057,10 +2057,11 @@ esp_block_len = 1; /* Allocate buffer for decrypted data */ + if (esp_encr_data_len < esp_icv_len) { + return esp_packet_len; + } esp_decr_data_len = esp_encr_data_len - esp_icv_len; - esp_decr_data = (uint8_t *)wmem_alloc(pinfo->pool, esp_decr_data_len); - - tvb_memcpy(tvb, esp_decr_data, ESP_HEADER_LEN, esp_decr_data_len); + esp_decr_data = tvb_memdup(pinfo->pool, tvb, ESP_HEADER_LEN, esp_decr_data_len); decrypt_ok = true; @@ -2141,10 +2142,8 @@ /* * Allocate buffer for decrypted data. */ - esp_decr_data = (unsigned char*)wmem_alloc(pinfo->pool, esp_encr_data_len); esp_decr_data_len = esp_encr_data_len; - - tvb_memcpy(tvb, esp_decr_data, ESP_HEADER_LEN, esp_encr_data_len); + esp_decr_data = tvb_memdup(pinfo->pool, tvb, ESP_HEADER_LEN, esp_decr_data_len); /* (Lazily) create the cipher_hd */ if (!(*cipher_hd_created)) { diff -Nru wireshark-4.4.14/epan/dissectors/packet-ipv6.c wireshark-4.4.15/epan/dissectors/packet-ipv6.c --- wireshark-4.4.14/epan/dissectors/packet-ipv6.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-ipv6.c 2026-04-29 20:10:51.000000000 +0000 @@ -3569,6 +3569,9 @@ alloc_address_wmem_ipv6(pinfo->pool, &pinfo->net_dst, ip6_dst); copy_address_shallow(&pinfo->dst, &pinfo->net_dst); + /* XXX - See comment in the IPv4 disector. */ + pinfo->conv_elements = NULL; + if (tree) { if (ipv6_summary_in_tree) { proto_item_append_text(ipv6_item, ", Src: %s, Dst: %s", diff -Nru wireshark-4.4.14/epan/dissectors/packet-iso8583.c wireshark-4.4.15/epan/dissectors/packet-iso8583.c --- wireshark-4.4.14/epan/dissectors/packet-iso8583.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-iso8583.c 2026-04-29 20:10:51.000000000 +0000 @@ -521,21 +521,18 @@ */ static char* bin2hex(wmem_allocator_t *pool, const uint8_t *bin, enum bin2hex_enum type, uint32_t len) { - char* ret; uint8_t ch; const uint8_t* str = bin; uint32_t size = len; - char* buff; + wmem_strbuf_t* buff; - /* "size" characters, plus terminating NUL */ - ret = (char *)wmem_alloc(pool, size + 1); - buff = ret; + buff = wmem_strbuf_new_sized(pool, size); if(type == TYPE_BCD) { if(size % 2) /* odd */ { ch = *str & 0x0f; - *buff++ = NIBBLE_2_ASCHEX(ch); + wmem_strbuf_append_c(buff, NIBBLE_2_ASCHEX(ch)); str++; size--; } @@ -545,13 +542,12 @@ while(size-- > 0) { ch = (*str >> 4) & 0x0f; - *buff++ = NIBBLE_2_ASCHEX(ch); + wmem_strbuf_append_c(buff, NIBBLE_2_ASCHEX(ch)); ch = *str & 0x0f; - *buff++ = NIBBLE_2_ASCHEX(ch); + wmem_strbuf_append_c(buff, NIBBLE_2_ASCHEX(ch)); str++; } - *buff = '\0'; - return ret; + return wmem_strbuf_finalize(buff); } static uint64_t hex2bin(const char* hexstr, int len) diff -Nru wireshark-4.4.14/epan/dissectors/packet-its.c wireshark-4.4.15/epan/dissectors/packet-its.c --- wireshark-4.4.14/epan/dissectors/packet-its.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-its.c 2026-04-29 20:10:51.000000000 +0000 @@ -10654,6 +10654,12 @@ /* --- Module DSRC --- --- --- */ +/*--- Cyclic dependencies ---*/ + +/* RegionalExtension/regExtValue -> RegionalExtension/regExtValue */ +static int dissect_dsrc_T_regExtValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + + static const value_string dsrc_RegionId_vals[] = { { noRegion, "noRegion" }, @@ -10676,8 +10682,11 @@ static int dissect_dsrc_T_regExtValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // RegionalExtension/regExtValue -> RegionalExtension/regExtValue + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_regextval_pdu); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -15474,13 +15483,11 @@ static int dissect_gdd_GddStructure(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { // GddStructure -> GddAttributes -> GddAttributes/_item -> InternationalSign-destinationInformation -> InternationalSign-destinationInformation/ioList -> DestinationInformationIO -> DestinationInformationIO/destPlace -> DestinationPlace -> GddStructure - actx->pinfo->dissection_depth += 8; - increment_dissection_depth(actx->pinfo); + increment_dissection_depth_by_n(actx->pinfo, 8); offset = dissect_per_sequence(tvb, offset, actx, tree, hf_index, ett_gdd_GddStructure, gdd_GddStructure_sequence); - actx->pinfo->dissection_depth -= 8; - decrement_dissection_depth(actx->pinfo); + decrement_dissection_depth_by_n(actx->pinfo, 8); return offset; } @@ -22103,6 +22110,12 @@ /* --- Module CPM-PDU-Descriptions --- --- --- */ +/*--- Cyclic dependencies ---*/ + +/* WrappedCpmContainer/containerData -> WrappedCpmContainer/containerData */ +static int dissect_cpm_T_containerData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + + static const per_sequence_t cpm_MessageRateRange_sequence[] = { { &hf_cpm_messageRateMin , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_its_MessageRateHz }, @@ -22163,8 +22176,11 @@ static int dissect_cpm_T_containerData(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // WrappedCpmContainer/containerData -> WrappedCpmContainer/containerData + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_cpmcontainers_pdu); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } diff -Nru wireshark-4.4.14/epan/dissectors/packet-kismet.c wireshark-4.4.15/epan/dissectors/packet-kismet.c --- wireshark-4.4.14/epan/dissectors/packet-kismet.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-kismet.c 2026-04-29 20:10:51.000000000 +0000 @@ -38,7 +38,7 @@ #define TCP_PORT_KISMET 2501 /* Not IANA registered */ -static bool response_is_continuation(const unsigned char * data); +static bool response_is_continuation(char data); void proto_reg_handoff_kismet(void); void proto_register_kismet(void); @@ -57,7 +57,6 @@ int next_offset; int linelen; int tokenlen; - int i; const unsigned char *next_token; /* @@ -74,20 +73,11 @@ * Check if it is an ASCII based protocol with reasonable length * packets, if not return, and try another dissector. */ - if (linelen < 8) { - /* - * Packet is too short - */ + if (linelen < 8) + return 0; + + if (!tvb_ascii_isprint(tvb, offset, 8)) return 0; - } else { - for (i = 0; i < 8; ++i) { - /* - * Packet contains non-ASCII data - */ - if (line[i] < 32 || line[i] > 128) - return 0; - } - } /* * If it is Kismet traffic set COL_PROTOCOL. @@ -102,7 +92,7 @@ is_continuation = false; } else { is_request = false; - is_continuation = response_is_continuation (line); + is_continuation = response_is_continuation(line[0]); } /* @@ -172,48 +162,42 @@ linelen -= (int) (next_token - line); line = next_token; tokenlen = get_token_len(line, line + linelen, &next_token); - proto_tree_add_string(reqresp_tree, hf_kismet_version, tvb, offset, - tokenlen, format_text(pinfo->pool, line, tokenlen)); + proto_tree_add_item(reqresp_tree, hf_kismet_version, tvb, offset, tokenlen, ENC_ASCII); offset += (int) (next_token - line); linelen -= (int) (next_token - line); line = next_token; tokenlen = get_token_len(line, line + linelen, &next_token); - proto_tree_add_string(reqresp_tree, hf_kismet_start_time, tvb, offset, - tokenlen, format_text(pinfo->pool, line, tokenlen)); + proto_tree_add_item(reqresp_tree, hf_kismet_start_time, tvb, offset, tokenlen, ENC_ASCII); offset += (int) (next_token - line); linelen -= (int) (next_token - line); line = next_token; tokenlen = get_token_len(line, line + linelen, &next_token); - proto_tree_add_string(reqresp_tree, hf_kismet_server_name, tvb, offset, - tokenlen, format_text(pinfo->pool, line + 1, tokenlen - 2)); + proto_tree_add_item(reqresp_tree, hf_kismet_server_name, tvb, offset+1, tokenlen-2, ENC_ASCII); offset += (int) (next_token - line); linelen -= (int) (next_token - line); line = next_token; tokenlen = get_token_len(line, line + linelen, &next_token); - proto_tree_add_string(reqresp_tree, hf_kismet_build_revision, tvb, offset, - tokenlen, format_text(pinfo->pool, line, tokenlen)); + proto_tree_add_item(reqresp_tree, hf_kismet_build_revision, tvb, offset, tokenlen, ENC_ASCII); offset += (int) (next_token - line); linelen -= (int) (next_token - line); line = next_token; tokenlen = get_token_len(line, line + linelen, &next_token); - proto_tree_add_string(reqresp_tree, hf_kismet_unknown_field, tvb, offset, - tokenlen, format_text(pinfo->pool, line, tokenlen)); + proto_tree_add_item(reqresp_tree, hf_kismet_unknown_field, tvb, offset, tokenlen, ENC_ASCII); offset += (int) (next_token - line); linelen -= (int) (next_token - line); line = next_token; tokenlen = get_token_len(line, line + linelen, &next_token); - proto_tree_add_string(reqresp_tree, hf_kismet_extended_version_string, tvb, offset, - tokenlen, format_text(pinfo->pool, line, tokenlen)); + proto_tree_add_item(reqresp_tree, hf_kismet_extended_version_string, tvb, offset, tokenlen, ENC_ASCII); } /* * *TIME: {Time} */ - if (!strncmp(reqresp, "*TIME", 5)) { + else if (!strncmp(reqresp, "*TIME", 5)) { nstime_t t; char *ptr = NULL; proto_tree* time_item; @@ -252,15 +236,16 @@ } static bool -response_is_continuation(const unsigned char * data) +response_is_continuation(char data) { - if (!strncmp(data, "*", 1)) - return false; - - if (!strncmp(data, "!", 1)) + switch (data) + { + case '*': + case '!': return false; - - return true; + default: + return true; + } } void diff -Nru wireshark-4.4.14/epan/dissectors/packet-lcsap.c wireshark-4.4.15/epan/dissectors/packet-lcsap.c --- wireshark-4.4.14/epan/dissectors/packet-lcsap.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-lcsap.c 2026-04-29 20:10:51.000000000 +0000 @@ -456,6 +456,24 @@ }; +/*--- Cyclic dependencies ---*/ + +/* ProtocolIE-Field/value -> ProtocolIE-Field/value */ +static int dissect_lcsap_T_ie_field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* ProtocolExtensionField/extensionValue -> ProtocolExtensionField/extensionValue */ +static int dissect_lcsap_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* InitiatingMessage/value -> InitiatingMessage/value */ +static int dissect_lcsap_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* SuccessfulOutcome/value -> SuccessfulOutcome/value */ +static int dissect_lcsap_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value */ +static int dissect_lcsap_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + + static const value_string lcsap_Criticality_vals[] = { { 0, "reject" }, @@ -574,8 +592,11 @@ static int dissect_lcsap_T_ie_field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // ProtocolIE-Field/value -> ProtocolIE-Field/value + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolIEFieldValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -613,8 +634,11 @@ static int dissect_lcsap_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // ProtocolExtensionField/extensionValue -> ProtocolExtensionField/extensionValue + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolExtensionFieldExtensionValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -2538,8 +2562,11 @@ static int dissect_lcsap_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // InitiatingMessage/value -> InitiatingMessage/value + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_InitiatingMessageValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -2563,8 +2590,11 @@ static int dissect_lcsap_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // SuccessfulOutcome/value -> SuccessfulOutcome/value + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_SuccessfulOutcomeValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -2588,8 +2618,11 @@ static int dissect_lcsap_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_UnsuccessfulOutcomeValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } diff -Nru wireshark-4.4.14/epan/dissectors/packet-ldap.c wireshark-4.4.15/epan/dissectors/packet-ldap.c --- wireshark-4.4.14/epan/dissectors/packet-ldap.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-ldap.c 2026-04-29 20:10:51.000000000 +0000 @@ -2174,8 +2174,7 @@ static int dissect_ldap_Filter(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { // Filter -> Filter/and -> Filter/and/_item -> Filter - actx->pinfo->dissection_depth += 3; - increment_dissection_depth(actx->pinfo); + increment_dissection_depth_by_n(actx->pinfo, 3); proto_tree *tr; proto_item *it; attributedesc_string=NULL; @@ -2201,8 +2200,7 @@ proto_item_append_text(it, "%s", string_or_null(Filter_string)); - actx->pinfo->dissection_depth -= 3; - decrement_dissection_depth(actx->pinfo); + decrement_dissection_depth_by_n(actx->pinfo, 3); return offset; } diff -Nru wireshark-4.4.14/epan/dissectors/packet-lppa.c wireshark-4.4.15/epan/dissectors/packet-lppa.c --- wireshark-4.4.14/epan/dissectors/packet-lppa.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-lppa.c 2026-04-29 20:10:51.000000000 +0000 @@ -494,6 +494,27 @@ return lppa_data; } +/*--- Cyclic dependencies ---*/ + +/* ProtocolIE-Field/value -> ProtocolIE-Field/value */ +static int dissect_lppa_T_ie_field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* ProtocolExtensionField/extensionValue -> ProtocolExtensionField/extensionValue */ +static int dissect_lppa_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* PrivateIE-Field/value -> PrivateIE-Field/value */ +static int dissect_lppa_T_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* InitiatingMessage/value -> InitiatingMessage/value */ +static int dissect_lppa_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* SuccessfulOutcome/value -> SuccessfulOutcome/value */ +static int dissect_lppa_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value */ +static int dissect_lppa_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + + static const value_string lppa_Criticality_vals[] = { { 0, "reject" }, @@ -664,8 +685,11 @@ static int dissect_lppa_T_ie_field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // ProtocolIE-Field/value -> ProtocolIE-Field/value + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolIEFieldValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -712,8 +736,11 @@ static int dissect_lppa_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // ProtocolExtensionField/extensionValue -> ProtocolExtensionField/extensionValue + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolExtensionFieldExtensionValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -751,8 +778,11 @@ static int dissect_lppa_T_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // PrivateIE-Field/value -> PrivateIE-Field/value + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type(tvb, offset, actx, tree, hf_index, NULL); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -3837,10 +3867,13 @@ static int dissect_lppa_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // InitiatingMessage/value -> InitiatingMessage/value + increment_dissection_depth_by_n(actx->pinfo, 1); struct lppa_private_data *lppa_data = lppa_get_private_data(actx->pinfo); lppa_data->message_type = INITIATING_MESSAGE; offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_InitiatingMessageValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -3865,10 +3898,13 @@ static int dissect_lppa_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // SuccessfulOutcome/value -> SuccessfulOutcome/value + increment_dissection_depth_by_n(actx->pinfo, 1); struct lppa_private_data *lppa_data = lppa_get_private_data(actx->pinfo); lppa_data->message_type = SUCCESSFUL_OUTCOME; offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_SuccessfulOutcomeValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -3893,11 +3929,14 @@ static int dissect_lppa_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value + increment_dissection_depth_by_n(actx->pinfo, 1); struct lppa_private_data *lppa_data = lppa_get_private_data(actx->pinfo); lppa_data->message_type = UNSUCCESSFUL_OUTCOME; offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_UnsuccessfulOutcomeValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } diff -Nru wireshark-4.4.14/epan/dissectors/packet-m2ap.c wireshark-4.4.15/epan/dissectors/packet-m2ap.c --- wireshark-4.4.14/epan/dissectors/packet-m2ap.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-m2ap.c 2026-04-29 20:10:51.000000000 +0000 @@ -467,6 +467,27 @@ return m2ap_data; } +/*--- Cyclic dependencies ---*/ + +/* ProtocolIE-Field/value -> ProtocolIE-Field/value */ +static int dissect_m2ap_T_ie_field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* ProtocolExtensionField/extensionValue -> ProtocolExtensionField/extensionValue */ +static int dissect_m2ap_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* PrivateIE-Field/value -> PrivateIE-Field/value */ +static int dissect_m2ap_T_private_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* InitiatingMessage/value -> InitiatingMessage/value */ +static int dissect_m2ap_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* SuccessfulOutcome/value -> SuccessfulOutcome/value */ +static int dissect_m2ap_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value */ +static int dissect_m2ap_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + + static const value_string m2ap_Criticality_vals[] = { { 0, "reject" }, @@ -646,8 +667,11 @@ static int dissect_m2ap_T_ie_field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // ProtocolIE-Field/value -> ProtocolIE-Field/value + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolIEFieldValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -694,8 +718,11 @@ static int dissect_m2ap_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // ProtocolExtensionField/extensionValue -> ProtocolExtensionField/extensionValue + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolExtensionFieldExtensionValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -733,8 +760,11 @@ static int dissect_m2ap_T_private_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // PrivateIE-Field/value -> PrivateIE-Field/value + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type(tvb, offset, actx, tree, hf_index, NULL); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -2984,10 +3014,13 @@ static int dissect_m2ap_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // InitiatingMessage/value -> InitiatingMessage/value + increment_dissection_depth_by_n(actx->pinfo, 1); message_type = INITIATING_MESSAGE; offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_InitiatingMessageValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -3011,10 +3044,13 @@ static int dissect_m2ap_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // SuccessfulOutcome/value -> SuccessfulOutcome/value + increment_dissection_depth_by_n(actx->pinfo, 1); message_type = SUCCESSFUL_OUTCOME; offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_SuccessfulOutcomeValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -3038,10 +3074,13 @@ static int dissect_m2ap_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value + increment_dissection_depth_by_n(actx->pinfo, 1); message_type = UNSUCCESSFUL_OUTCOME; offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_UnsuccessfulOutcomeValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } diff -Nru wireshark-4.4.14/epan/dissectors/packet-m3ap.c wireshark-4.4.15/epan/dissectors/packet-m3ap.c --- wireshark-4.4.14/epan/dissectors/packet-m3ap.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-m3ap.c 2026-04-29 20:10:51.000000000 +0000 @@ -291,6 +291,27 @@ return m3ap_data; } +/*--- Cyclic dependencies ---*/ + +/* ProtocolIE-Field/value -> ProtocolIE-Field/value */ +static int dissect_m3ap_T_ie_field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* ProtocolExtensionField/extensionValue -> ProtocolExtensionField/extensionValue */ +static int dissect_m3ap_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* PrivateIE-Field/value -> PrivateIE-Field/value */ +static int dissect_m3ap_T_private_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* InitiatingMessage/value -> InitiatingMessage/value */ +static int dissect_m3ap_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* SuccessfulOutcome/value -> SuccessfulOutcome/value */ +static int dissect_m3ap_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value */ +static int dissect_m3ap_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + + static const value_string m3ap_Criticality_vals[] = { { 0, "reject" }, @@ -439,8 +460,11 @@ static int dissect_m3ap_T_ie_field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // ProtocolIE-Field/value -> ProtocolIE-Field/value + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolIEFieldValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -487,8 +511,11 @@ static int dissect_m3ap_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // ProtocolExtensionField/extensionValue -> ProtocolExtensionField/extensionValue + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolExtensionFieldExtensionValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -526,8 +553,11 @@ static int dissect_m3ap_T_private_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // PrivateIE-Field/value -> PrivateIE-Field/value + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type(tvb, offset, actx, tree, hf_index, NULL); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -1588,9 +1618,12 @@ static int dissect_m3ap_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // InitiatingMessage/value -> InitiatingMessage/value + increment_dissection_depth_by_n(actx->pinfo, 1); message_type = INITIATING_MESSAGE; offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_InitiatingMessageValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -1614,9 +1647,12 @@ static int dissect_m3ap_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // SuccessfulOutcome/value -> SuccessfulOutcome/value + increment_dissection_depth_by_n(actx->pinfo, 1); message_type = SUCCESSFUL_OUTCOME; offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_SuccessfulOutcomeValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -1640,6 +1676,8 @@ static int dissect_m3ap_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value + increment_dissection_depth_by_n(actx->pinfo, 1); message_type = UNSUCCESSFUL_OUTCOME; @@ -1650,6 +1688,7 @@ offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_UnsuccessfulOutcomeValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } diff -Nru wireshark-4.4.14/epan/dissectors/packet-mbim.c wireshark-4.4.15/epan/dissectors/packet-mbim.c --- wireshark-4.4.14/epan/dissectors/packet-mbim.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-mbim.c 2026-04-29 20:10:51.000000000 +0000 @@ -47,6 +47,7 @@ #include #include #include +#include #include #include "packet-gsm_a_common.h" @@ -3674,7 +3675,9 @@ break; } decrement_dissection_depth(pinfo); - *offset = tlv_data_offset + data_length; + if (ckd_add(offset, tlv_data_offset, data_length)) { + THROW(ReportedBoundsError); + } } if (padding_length) { proto_tree_add_item(tree, hf_mbim_tlv_ie_padding, tvb, *offset, padding_length, ENC_NA); diff -Nru wireshark-4.4.14/epan/dissectors/packet-mms.c wireshark-4.4.15/epan/dissectors/packet-mms.c --- wireshark-4.4.14/epan/dissectors/packet-mms.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-mms.c 2026-04-29 20:10:51.000000000 +0000 @@ -2065,14 +2065,12 @@ static int dissect_mms_TypeSpecification(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { // TypeSpecification -> TypeSpecification/array -> TypeSpecification - actx->pinfo->dissection_depth += 2; - increment_dissection_depth(actx->pinfo); + increment_dissection_depth_by_n(actx->pinfo, 2); offset = dissect_ber_choice(actx, tree, tvb, offset, TypeSpecification_choice, hf_index, ett_mms_TypeSpecification, NULL); - actx->pinfo->dissection_depth -= 2; - decrement_dissection_depth(actx->pinfo); + decrement_dissection_depth_by_n(actx->pinfo, 2); return offset; } @@ -2255,13 +2253,11 @@ static int dissect_mms_AlternateAccess(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { // AlternateAccess -> AlternateAccess/_item -> AlternateAccessSelection -> AlternateAccessSelection/selectAlternateAccess -> AlternateAccess - actx->pinfo->dissection_depth += 4; - increment_dissection_depth(actx->pinfo); + increment_dissection_depth_by_n(actx->pinfo, 4); offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, AlternateAccess_sequence_of, hf_index, ett_mms_AlternateAccess); - actx->pinfo->dissection_depth -= 4; - decrement_dissection_depth(actx->pinfo); + decrement_dissection_depth_by_n(actx->pinfo, 4); return offset; } @@ -2316,14 +2312,12 @@ static int dissect_mms_VariableSpecification(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { // VariableSpecification -> ScatteredAccessDescription -> ScatteredAccessDescription/_item -> VariableSpecification - actx->pinfo->dissection_depth += 3; - increment_dissection_depth(actx->pinfo); + increment_dissection_depth_by_n(actx->pinfo, 3); offset = dissect_ber_choice(actx, tree, tvb, offset, VariableSpecification_choice, hf_index, ett_mms_VariableSpecification, NULL); - actx->pinfo->dissection_depth -= 3; - decrement_dissection_depth(actx->pinfo); + decrement_dissection_depth_by_n(actx->pinfo, 3); return offset; } @@ -2886,8 +2880,7 @@ static int dissect_mms_Data(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { // Data -> Data/array -> Data - actx->pinfo->dissection_depth += 2; - increment_dissection_depth(actx->pinfo); + increment_dissection_depth_by_n(actx->pinfo, 2); mms_actx_private_data_t *mms_priv = (mms_actx_private_data_t *)actx->private_data; if(mms_priv){ mms_priv->data_cnt += 1; @@ -2899,8 +2892,7 @@ - actx->pinfo->dissection_depth -= 2; - decrement_dissection_depth(actx->pinfo); + decrement_dissection_depth_by_n(actx->pinfo, 2); return offset; } diff -Nru wireshark-4.4.14/epan/dissectors/packet-monero.c wireshark-4.4.15/epan/dissectors/packet-monero.c --- wireshark-4.4.14/epan/dissectors/packet-monero.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-monero.c 2026-04-29 20:10:51.000000000 +0000 @@ -193,7 +193,7 @@ static int dissect_encoded_value(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, proto_item *ti, int offset, uint32_t type); -// we are parsing generic data structures, recursion is a first class citizen here +// we check for recursion limits due to nested structs // NOLINTNEXTLINE(misc-no-recursion) static int dissect_encoded_dictionary(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset) { @@ -234,7 +234,7 @@ return offset; } -// we are parsing generic data structures, recursion is a first class citizen here +// we check for recursion limits due to nested structs // NOLINTNEXTLINE(misc-no-recursion) static int dissect_encoded_value(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, proto_item *ti, int offset, uint32_t type) { @@ -342,7 +342,9 @@ struct_ti = proto_tree_add_item(tree, hf_monero_payload_item_value_struct, tvb, offset, -1, ENC_NA); struct_tree = proto_item_add_subtree(struct_ti, ett_struct); + increment_dissection_depth_by_n(pinfo, 2); offset = dissect_encoded_dictionary(tvb, pinfo, struct_tree, offset); + decrement_dissection_depth_by_n(pinfo, 2); proto_item_set_end(struct_ti, tvb, offset); break; diff -Nru wireshark-4.4.14/epan/dissectors/packet-mysql.c wireshark-4.4.15/epan/dissectors/packet-mysql.c --- wireshark-4.4.14/epan/dissectors/packet-mysql.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-mysql.c 2026-04-29 20:10:51.000000000 +0000 @@ -2825,7 +2825,9 @@ /* && mysql_exec_dissectors[dissector_index].unsigned_flag == stmt_data->param_flags[stmt_pos]) */ { - mysql_exec_dissectors[dissector_index].dissector(tvb, pinfo, &offset, param_tree, stmt_data->param_metas.encodings[stmt_pos]); + /* The character set for a parameter + * is character_set_client. */ + mysql_exec_dissectors[dissector_index].dissector(tvb, pinfo, &offset, param_tree, my_frame_data->encoding_client); break; } dissector_index++; @@ -3740,6 +3742,14 @@ my_frame_data->field_metas.encodings[fieldpos] = fld_encoding; } } + /* If the state is PREPARED_PARAMETERS, then the information is about + * the columns to which the parameters will refer. That's of interest + * to the client, but not to us; the client when later specifying a + * parameter gives the type and (a different set of) flags (if the + * type does not match, does that result in an error?), and always uses + * the character_set_client for the connection (which hopefully can + * be translated). At least that's what the documentation implies. + */ /* default (Only use for show fields) */ if (tvb_reported_length_remaining(tvb, offset) > 0) { @@ -3863,7 +3873,12 @@ param_metas->count = stmt_num_params; param_metas->flags = (uint16_t *)wmem_alloc0_array(wmem_file_scope(), uint16_t, param_metas->count); param_metas->types = (uint8_t *)wmem_alloc0_array(wmem_file_scope(), uint8_t, param_metas->count); - //param_metas->encodings = (unsigned *)wmem_alloc0_array(wmem_file_scope(), unsigned, param_metas->count); + /* parameters always come from the client, and so are always in + * character_set_client, so this should not be used. We can + * allocate it to reduce the chance of deferencing a NULL + * pointer dereference, but perhaps the parameter metadata + * should be a different type. */ + param_metas->encodings = (unsigned *)wmem_alloc0_array(wmem_file_scope(), unsigned, param_metas->count); stmt_data->param_metas = *param_metas; field_metas = wmem_new(wmem_file_scope(), my_metadata_list_t); diff -Nru wireshark-4.4.14/epan/dissectors/packet-nas_5gs.c wireshark-4.4.15/epan/dissectors/packet-nas_5gs.c --- wireshark-4.4.14/epan/dissectors/packet-nas_5gs.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-nas_5gs.c 2026-04-29 20:10:51.000000000 +0000 @@ -8495,7 +8495,7 @@ /* 4C Alternative NSSAI Alternative NSSAI 9.11.3.97 O TLV 2-146 */ ELEM_OPT_TLV(0x4C, NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_ALT_NSSAI, NULL); /* 7B S-NSSAI location validity information S-NSSAI location validity information 9.11.3.100 O TLV-E 17-38611 */ - ELEM_OPT_TLV_E(0x7B, NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_ALT_NSSAI, NULL); + ELEM_OPT_TLV_E(0x7B, NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_S_NSSAI_LOC_VALID_INFO, NULL); /* 5B S-NSSAI time validity information S-NSSAI time validity information 9.11.3.101 O TLV 23-257 */ ELEM_OPT_TLV(0x5B, NAS_5GS_PDU_TYPE_MM, DE_NAS_5GS_MM_S_NSSAI_TIME_VALID_INFO, NULL); /* 4F Maximum time offset GPRS timer 3 9.11.2.5 O TLV 3 */ diff -Nru wireshark-4.4.14/epan/dissectors/packet-nbap.c wireshark-4.4.15/epan/dissectors/packet-nbap.c --- wireshark-4.4.14/epan/dissectors/packet-nbap.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-nbap.c 2026-04-29 20:10:51.000000000 +0000 @@ -6805,6 +6805,30 @@ /*Easy way to add hsdhsch binds for corner cases*/ static void add_hsdsch_bind(packet_info * pinfo); +/*--- Cyclic dependencies ---*/ + +/* ProtocolIE-Field/value -> ProtocolIE-Field/value */ +static int dissect_nbap_ProtocolIE_Field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* ProtocolExtensionField/extensionValue -> ProtocolExtensionField/extensionValue */ +static int dissect_nbap_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* PrivateIE-Field/value -> PrivateIE-Field/value */ +static int dissect_nbap_PrivateIE_Field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* InitiatingMessage/value -> InitiatingMessage/value */ +static int dissect_nbap_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* SuccessfulOutcome/value -> SuccessfulOutcome/value */ +static int dissect_nbap_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value */ +static int dissect_nbap_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* Outcome/value -> Outcome/value */ +static int dissect_nbap_Outcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + + static const value_string nbap_Criticality_vals[] = { { 0, "reject" }, @@ -8306,8 +8330,11 @@ static int dissect_nbap_ProtocolIE_Field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // ProtocolIE-Field/value -> ProtocolIE-Field/value + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolIEFieldValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -8354,8 +8381,11 @@ static int dissect_nbap_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // ProtocolExtensionField/extensionValue -> ProtocolExtensionField/extensionValue + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolExtensionFieldExtensionValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -8393,8 +8423,11 @@ static int dissect_nbap_PrivateIE_Field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // PrivateIE-Field/value -> PrivateIE-Field/value + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type(tvb, offset, actx, tree, hf_index, NULL); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -47702,8 +47735,11 @@ static int dissect_nbap_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // InitiatingMessage/value -> InitiatingMessage/value + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_InitiatingMessageValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -47729,8 +47765,11 @@ static int dissect_nbap_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // SuccessfulOutcome/value -> SuccessfulOutcome/value + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_SuccessfulOutcomeValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -47756,8 +47795,11 @@ static int dissect_nbap_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_UnsuccessfulOutcomeValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -47783,8 +47825,11 @@ static int dissect_nbap_Outcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // Outcome/value -> Outcome/value + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type(tvb, offset, actx, tree, hf_index, NULL); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } diff -Nru wireshark-4.4.14/epan/dissectors/packet-ngap.c wireshark-4.4.15/epan/dissectors/packet-ngap.c --- wireshark-4.4.14/epan/dissectors/packet-ngap.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-ngap.c 2026-04-29 20:10:51.000000000 +0000 @@ -3964,6 +3964,27 @@ static int dissect_MulticastSessionDeactivationRequestTransfer_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_); static int dissect_MulticastSessionUpdateRequestTransfer_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_); +/*--- Cyclic dependencies ---*/ + +/* ProtocolIE-Field/value -> ProtocolIE-Field/value */ +static int dissect_ngap_T_ie_field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* ProtocolExtensionField/extensionValue -> ProtocolExtensionField/extensionValue */ +static int dissect_ngap_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* PrivateIE-Field/value -> PrivateIE-Field/value */ +static int dissect_ngap_T_private_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* InitiatingMessage/value -> InitiatingMessage/value */ +static int dissect_ngap_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* SuccessfulOutcome/value -> SuccessfulOutcome/value */ +static int dissect_ngap_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value */ +static int dissect_ngap_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + + static const value_string ngap_Criticality_vals[] = { { 0, "reject" }, @@ -4617,8 +4638,11 @@ static int dissect_ngap_T_ie_field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // ProtocolIE-Field/value -> ProtocolIE-Field/value + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolIEFieldValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -4665,8 +4689,11 @@ static int dissect_ngap_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // ProtocolExtensionField/extensionValue -> ProtocolExtensionField/extensionValue + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolExtensionFieldExtensionValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -4704,8 +4731,11 @@ static int dissect_ngap_T_private_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // PrivateIE-Field/value -> PrivateIE-Field/value + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type(tvb, offset, actx, tree, hf_index, NULL); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -26258,10 +26288,13 @@ static int dissect_ngap_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // InitiatingMessage/value -> InitiatingMessage/value + increment_dissection_depth_by_n(actx->pinfo, 1); struct ngap_private_data *ngap_data = ngap_get_private_data(actx->pinfo); ngap_data->message_type = INITIATING_MESSAGE; offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_InitiatingMessageValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -26285,10 +26318,13 @@ static int dissect_ngap_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // SuccessfulOutcome/value -> SuccessfulOutcome/value + increment_dissection_depth_by_n(actx->pinfo, 1); struct ngap_private_data *ngap_data = ngap_get_private_data(actx->pinfo); ngap_data->message_type = SUCCESSFUL_OUTCOME; offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_SuccessfulOutcomeValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -26312,6 +26348,8 @@ static int dissect_ngap_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value + increment_dissection_depth_by_n(actx->pinfo, 1); struct ngap_private_data *ngap_data = ngap_get_private_data(actx->pinfo); ngap_data->message_type = UNSUCCESSFUL_OUTCOME; @@ -26328,6 +26366,7 @@ offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_UnsuccessfulOutcomeValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } diff -Nru wireshark-4.4.14/epan/dissectors/packet-nrppa.c wireshark-4.4.15/epan/dissectors/packet-nrppa.c --- wireshark-4.4.14/epan/dissectors/packet-nrppa.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-nrppa.c 2026-04-29 20:10:51.000000000 +0000 @@ -1508,6 +1508,27 @@ static int dissect_SuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *); static int dissect_UnsuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *); +/*--- Cyclic dependencies ---*/ + +/* ProtocolIE-Field/value -> ProtocolIE-Field/value */ +static int dissect_nrppa_T_ie_field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* ProtocolExtensionField/extensionValue -> ProtocolExtensionField/extensionValue */ +static int dissect_nrppa_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* PrivateIE-Field/value -> PrivateIE-Field/value */ +static int dissect_nrppa_T_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* InitiatingMessage/value -> InitiatingMessage/value */ +static int dissect_nrppa_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* SuccessfulOutcome/value -> SuccessfulOutcome/value */ +static int dissect_nrppa_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value */ +static int dissect_nrppa_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + + static const value_string nrppa_Criticality_vals[] = { { 0, "reject" }, @@ -1812,8 +1833,11 @@ static int dissect_nrppa_T_ie_field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // ProtocolIE-Field/value -> ProtocolIE-Field/value + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolIEFieldValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -1860,8 +1884,11 @@ static int dissect_nrppa_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // ProtocolExtensionField/extensionValue -> ProtocolExtensionField/extensionValue + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolExtensionFieldExtensionValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -1899,8 +1926,11 @@ static int dissect_nrppa_T_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // PrivateIE-Field/value -> PrivateIE-Field/value + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type(tvb, offset, actx, tree, hf_index, NULL); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -1938,8 +1968,11 @@ static int dissect_nrppa_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // InitiatingMessage/value -> InitiatingMessage/value + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_InitiatingMessageValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -1964,8 +1997,11 @@ static int dissect_nrppa_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // SuccessfulOutcome/value -> SuccessfulOutcome/value + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_SuccessfulOutcomeValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -1990,8 +2026,11 @@ static int dissect_nrppa_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_UnsuccessfulOutcomeValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } diff -Nru wireshark-4.4.14/epan/dissectors/packet-openflow_v5.c wireshark-4.4.15/epan/dissectors/packet-openflow_v5.c --- wireshark-4.4.14/epan/dissectors/packet-openflow_v5.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-openflow_v5.c 2026-04-29 20:10:51.000000000 +0000 @@ -1076,7 +1076,7 @@ #define OXM_FIELD_OFFSET 1 #define OXM_HM_MASK 0x01 static int -dissect_openflow_oxm_header_v5(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, uint16_t length _U_) +dissect_openflow_oxm_header_v5(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset) { uint16_t oxm_class; @@ -1106,7 +1106,7 @@ #define OFPVID_PRESENT 0x1000 static int -dissect_openflow_oxm_v5(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, uint16_t length _U_) +dissect_openflow_oxm_v5(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset) { proto_tree *oxm_tree; uint16_t oxm_class; @@ -1128,7 +1128,7 @@ oxm_tree = proto_tree_add_subtree(tree, tvb, offset, oxm_length + 4, ett_openflow_v5_oxm, NULL, "OXM field"); - offset = dissect_openflow_oxm_header_v5(tvb, pinfo, oxm_tree, offset, length); + offset = dissect_openflow_oxm_header_v5(tvb, pinfo, oxm_tree, offset); if (oxm_class == OFPXMC_OPENFLOW_BASIC) { switch(oxm_field) { @@ -1304,7 +1304,7 @@ case OFPMT_OXM: fields_end = offset + match_length - 4; while(offset < fields_end) { - offset = dissect_openflow_oxm_v5(tvb, pinfo, match_tree, offset, length); + offset = dissect_openflow_oxm_v5(tvb, pinfo, match_tree, offset); } break; @@ -2193,7 +2193,7 @@ static int -dissect_openflow_action_header_v5(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, uint16_t length _U_) +dissect_openflow_action_header_v5(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset) { uint16_t act_type; @@ -2217,7 +2217,7 @@ static int -dissect_openflow_action_v5(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, uint16_t length _U_) +dissect_openflow_action_v5(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset) { proto_tree *act_tree; uint16_t act_type; @@ -2230,7 +2230,7 @@ act_tree = proto_tree_add_subtree(tree, tvb, offset, act_length, ett_openflow_v5_action, NULL, "Action"); - offset = dissect_openflow_action_header_v5(tvb, pinfo, act_tree, offset, length); + offset = dissect_openflow_action_header_v5(tvb, pinfo, act_tree, offset); switch (act_type) { case OFPAT_OUTPUT: @@ -2341,7 +2341,7 @@ break; case OFPAT_SET_FIELD: - offset = dissect_openflow_oxm_v5(tvb, pinfo, act_tree, offset, length); + offset = dissect_openflow_oxm_v5(tvb, pinfo, act_tree, offset); /* padded to 64 bits */ if (offset < act_end) { @@ -2369,7 +2369,7 @@ case OFPAT_EXPERIMENTER: if (act_length <= 8) { expert_add_info(pinfo, act_tree, &ei_openflow_v5_length_too_short); - offset = length; + offset = tvb_reported_length(tvb); break; } proto_tree_add_expert_format(act_tree, pinfo, &ei_openflow_v5_action_undecoded, @@ -2380,7 +2380,7 @@ default: if (act_length <= 4) { expert_add_info(pinfo, act_tree, &ei_openflow_v5_length_too_short); - offset = length; + offset = tvb_reported_length(tvb); break; } proto_tree_add_expert_format(act_tree, pinfo, &ei_openflow_v5_action_undecoded, @@ -2762,7 +2762,8 @@ { proto_tree *data_tree; uint16_t acts_len; - int32_t acts_end; + int acts_offset = 0; + tvbuff_t *acts_tvb; tvbuff_t *next_tvb; bool save_writable; bool save_in_error_pkt; @@ -2786,11 +2787,12 @@ offset+=6; /* struct ofp_action_header actions[0]; */ - acts_end = offset + acts_len; + acts_tvb = tvb_new_subset_length(tvb, offset, acts_len); - while (offset < acts_end) { - offset = dissect_openflow_action_v5(tvb, pinfo, tree, offset, length); + while (tvb_reported_length_remaining(acts_tvb, acts_offset)) { + acts_offset = dissect_openflow_action_v5(acts_tvb, pinfo, tree, acts_offset); } + offset += acts_offset; /* uint8_t data[0]; */ if (offset < length) { @@ -2874,7 +2876,8 @@ proto_tree *inst_tree; uint16_t inst_type; uint16_t inst_length; - int32_t acts_end; + tvbuff_t *acts_tvb; + int acts_offset = 0; inst_type = tvb_get_ntohs(tvb, offset); inst_length = tvb_get_ntohs(tvb, offset + 2); @@ -2918,10 +2921,11 @@ proto_tree_add_item(inst_tree, hf_openflow_v5_instruction_actions_pad, tvb, offset, 4, ENC_NA); offset+=4; - acts_end = offset + inst_length - 8; - while (offset < acts_end) { - offset = dissect_openflow_action_v5(tvb, pinfo, inst_tree, offset, length); + acts_tvb = tvb_new_subset_length(tvb, offset, inst_length - 8); + while (tvb_reported_length_remaining(acts_tvb, acts_offset)) { + acts_offset = dissect_openflow_action_v5(acts_tvb, pinfo, inst_tree, acts_offset); } + offset += acts_offset; break; case OFPIT_METER: @@ -3043,12 +3047,13 @@ } static int -dissect_openflow_bucket_v5(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, uint16_t length) +dissect_openflow_bucket_v5(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, uint16_t length _U_) { proto_item *ti; proto_tree *bucket_tree; uint16_t bucket_length; - int32_t acts_end; + tvbuff_t *acts_tvb; + int acts_offset = 0; bucket_tree = proto_tree_add_subtree(tree, tvb, offset, -1, ett_openflow_v5_bucket, &ti, "Bucket"); @@ -3079,10 +3084,11 @@ offset+=4; /*struct ofp_action_header actions[0]; */ - acts_end = offset + bucket_length - 16; - while (offset < acts_end) { - offset = dissect_openflow_action_v5(tvb, pinfo, bucket_tree, offset, length); + acts_tvb = tvb_new_subset_length(tvb, offset, bucket_length - 16); + while (tvb_reported_length_remaining(acts_tvb, acts_offset)) { + acts_offset = dissect_openflow_action_v5(acts_tvb, pinfo, bucket_tree, acts_offset); } + offset += acts_offset; return offset; } @@ -3340,7 +3346,7 @@ #define OFPTMPEF_IMPORTANCE 1<<1 #define OFPTMPEF_LIFETIME 1<<2 static int -dissect_openflow_tablemod_prop_v5(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, uint16_t length _U_) +dissect_openflow_tablemod_prop_v5(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, uint16_t length) { proto_item *ti; proto_tree *prop_tree, *flags_tree; @@ -3632,7 +3638,7 @@ elem_begin = offset; elem_tree = proto_tree_add_subtree(prop_tree, tvb, offset, -1, ett_openflow_v5_table_feature_prop_action_id, &ti, "Action ID"); - offset = dissect_openflow_action_header_v5(tvb, pinfo, elem_tree, offset, length); + offset = dissect_openflow_action_header_v5(tvb, pinfo, elem_tree, offset); proto_item_set_len(ti, offset - elem_begin); } break; @@ -3647,7 +3653,7 @@ elem_begin = offset; elem_tree = proto_tree_add_subtree(prop_tree, tvb, offset, -1, ett_openflow_v5_table_feature_prop_oxm_id, &ti, "OXM ID"); - offset = dissect_openflow_oxm_header_v5(tvb, pinfo, elem_tree, offset, length); + offset = dissect_openflow_oxm_header_v5(tvb, pinfo, elem_tree, offset); proto_item_set_len(ti, offset - elem_begin); } break; @@ -4451,15 +4457,16 @@ static int -dissect_openflow_table_desc_v5(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, int offset, uint16_t length _U_) +dissect_openflow_table_desc_v5(tvbuff_t *parent_tvb, packet_info *pinfo _U_, proto_tree *tree, int parent_offset) { proto_item *ti; proto_tree *desc_tree, *conf_tree; uint16_t desc_length; - int32_t desc_end; + tvbuff_t *tvb; + unsigned offset = 0; - desc_length = tvb_get_ntohs(tvb, offset); - desc_end = offset + desc_length; + desc_length = tvb_get_ntohs(parent_tvb, parent_offset); + tvb = tvb_new_subset_length(parent_tvb, parent_offset, desc_length); desc_tree = proto_tree_add_subtree(tree, tvb, offset, desc_length, ett_openflow_v5_table_desc, NULL, "Table desc"); @@ -4484,11 +4491,11 @@ offset+=4; /* struct ofp_table_mod_prop_header properties[0]; */ - while (offset < desc_end) { - offset = dissect_openflow_tablemod_prop_v5(tvb, pinfo, desc_tree, offset, length); + while (tvb_reported_length_remaining(tvb, offset)) { + offset = dissect_openflow_tablemod_prop_v5(tvb, pinfo, desc_tree, offset, tvb_reported_length(tvb)); } - return offset; + return parent_offset + offset; } @@ -5379,7 +5386,7 @@ break; case OFPMP_TABLE_DESC: while (offset < length) { - offset = dissect_openflow_table_desc_v5(tvb, pinfo, tree, offset, length); + offset = dissect_openflow_table_desc_v5(tvb, pinfo, tree, offset); } break; case OFPMP_QUEUE_DESC: @@ -5744,7 +5751,7 @@ offset+=1; /* struct ofp_table_desc table; */ - dissect_openflow_table_desc_v5(tvb, pinfo, tree, offset, length); + dissect_openflow_table_desc_v5(tvb, pinfo, tree, offset); } static void diff -Nru wireshark-4.4.14/epan/dissectors/packet-openflow_v6.c wireshark-4.4.15/epan/dissectors/packet-openflow_v6.c --- wireshark-4.4.14/epan/dissectors/packet-openflow_v6.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-openflow_v6.c 2026-04-29 20:10:51.000000000 +0000 @@ -6398,6 +6398,11 @@ switch (prop_type) { case OFPBPT_TIME: + if (prop_len <= 4) { + expert_add_info(pinfo, prop_item, &ei_openflow_v6_length_too_short); + offset = length; + break; + } dissect_openflow_time_v6(tvb, pinfo, tree, offset, length); offset += prop_len - 4; break; diff -Nru wireshark-4.4.14/epan/dissectors/packet-p1.c wireshark-4.4.15/epan/dissectors/packet-p1.c --- wireshark-4.4.14/epan/dissectors/packet-p1.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-p1.c 2026-04-29 20:10:51.000000000 +0000 @@ -983,6 +983,24 @@ } } +/*--- Cyclic dependencies ---*/ + +/* ExtensionAttribute/extension-attribute-value -> ExtensionAttribute/extension-attribute-value */ +static int dissect_p1_T_extension_attribute_value(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* PerDomainBilateralInformation/bilateral-information -> PerDomainBilateralInformation/bilateral-information */ +static int dissect_p1_T_bilateral_information(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* ExtensionField/value -> ExtensionField/value */ +static int dissect_p1_ExtensionValue(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* AdditionalInformation -> AdditionalInformation */ +static int dissect_p1_AdditionalInformation(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* TokenData/value -> TokenData/value */ +static int dissect_p1_T_value(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + + static int @@ -2162,6 +2180,8 @@ static int dissect_p1_T_extension_attribute_value(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // ExtensionAttribute/extension-attribute-value -> ExtensionAttribute/extension-attribute-value + increment_dissection_depth_by_n(actx->pinfo, 1); proto_item_append_text(tree, " (%s)", val_to_str(actx->external.indirect_reference, p1_ExtensionAttributeType_vals, "extension-attribute-type %d")); p_add_proto_data(actx->pinfo->pool, actx->pinfo, proto_p1, 0, actx->subtree.tree_ctx); @@ -2180,6 +2200,7 @@ + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -2730,6 +2751,8 @@ static int dissect_p1_T_bilateral_information(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // PerDomainBilateralInformation/bilateral-information -> PerDomainBilateralInformation/bilateral-information + increment_dissection_depth_by_n(actx->pinfo, 1); proto_item *item = NULL; int loffset = 0; uint32_t len = 0; @@ -2745,6 +2768,7 @@ offset = dissect_unknown_ber(actx->pinfo, tvb, offset, tree); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -3034,6 +3058,8 @@ static int dissect_p1_ExtensionValue(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // ExtensionField/value -> ExtensionField/value + increment_dissection_depth_by_n(actx->pinfo, 1); const char *name; if(actx->external.indirect_ref_present) { @@ -3057,6 +3083,7 @@ + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -3407,6 +3434,8 @@ static int dissect_p1_AdditionalInformation(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // AdditionalInformation -> AdditionalInformation + increment_dissection_depth_by_n(actx->pinfo, 1); proto_item *item = NULL; int loffset = 0; uint32_t len = 0; @@ -3422,6 +3451,7 @@ offset = dissect_unknown_ber(actx->pinfo, tvb, offset, tree); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -7081,6 +7111,8 @@ static int dissect_p1_T_value(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // TokenData/value -> TokenData/value + increment_dissection_depth_by_n(actx->pinfo, 1); proto_item_append_text(tree, " (%s)", val_to_str(actx->external.indirect_reference, p1_TokenDataType_vals, "tokendata-type %d")); if (dissector_try_uint(p1_tokendata_dissector_table, actx->external.indirect_reference, tvb, actx->pinfo, tree)) { @@ -7096,6 +7128,7 @@ } + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } diff -Nru wireshark-4.4.14/epan/dissectors/packet-p22.c wireshark-4.4.15/epan/dissectors/packet-p22.c --- wireshark-4.4.14/epan/dissectors/packet-p22.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-p22.c 2026-04-29 20:10:51.000000000 +0000 @@ -827,9 +827,21 @@ /*--- Cyclic dependencies ---*/ +/* IPMSExtension/value -> IPMSExtension/value */ +static int dissect_p22_T_value(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + /* IPM -> Body -> BodyPart -> BodyPart/basic -> MessageBodyPart -> MessageData -> IPM */ /*int dissect_p22_IPM(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);*/ +/* NationallyDefinedBodyPart -> NationallyDefinedBodyPart */ +static int dissect_p22_NationallyDefinedBodyPart(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* Contents-Type-Attribute/document-type/parameter -> Contents-Type-Attribute/document-type/parameter */ +static int dissect_p22_T_parameter(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* CompressionParameter/compression-algorithm-param -> CompressionParameter/compression-algorithm-param */ +static int dissect_p22_T_compression_algorithm_param(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + /* IPMSynopsis -> BodyPartSynopsis -> MessageBodyPartSynopsis -> IPMSynopsis */ static int dissect_p22_IPMSynopsis(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); @@ -1011,10 +1023,13 @@ static int dissect_p22_T_value(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // IPMSExtension/value -> IPMSExtension/value + increment_dissection_depth_by_n(actx->pinfo, 1); offset=call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, tree, NULL); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -1690,9 +1705,12 @@ static int dissect_p22_NationallyDefinedBodyPart(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // NationallyDefinedBodyPart -> NationallyDefinedBodyPart + increment_dissection_depth_by_n(actx->pinfo, 1); /* XXX Not implemented yet */ + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -1803,8 +1821,7 @@ int dissect_p22_IPM(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { // IPM -> Body -> BodyPart -> BodyPart/basic -> MessageBodyPart -> MessageData -> IPM - actx->pinfo->dissection_depth += 6; - increment_dissection_depth(actx->pinfo); + increment_dissection_depth_by_n(actx->pinfo, 6); col_append_str(actx->pinfo->cinfo, COL_INFO, " Message"); @@ -1814,8 +1831,7 @@ - actx->pinfo->dissection_depth -= 6; - decrement_dissection_depth(actx->pinfo); + decrement_dissection_depth_by_n(actx->pinfo, 6); return offset; } @@ -2898,9 +2914,12 @@ static int dissect_p22_T_parameter(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // Contents-Type-Attribute/document-type/parameter -> Contents-Type-Attribute/document-type/parameter + increment_dissection_depth_by_n(actx->pinfo, 1); /* XXX: Not implemented yet */ + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -3062,9 +3081,12 @@ static int dissect_p22_T_compression_algorithm_param(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // CompressionParameter/compression-algorithm-param -> CompressionParameter/compression-algorithm-param + increment_dissection_depth_by_n(actx->pinfo, 1); /* XXX: Not implemented yet */ + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -3519,13 +3541,11 @@ static int dissect_p22_IPMSynopsis(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { // IPMSynopsis -> BodyPartSynopsis -> MessageBodyPartSynopsis -> IPMSynopsis - actx->pinfo->dissection_depth += 3; - increment_dissection_depth(actx->pinfo); + increment_dissection_depth_by_n(actx->pinfo, 3); offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, IPMSynopsis_sequence_of, hf_index, ett_p22_IPMSynopsis); - actx->pinfo->dissection_depth -= 3; - decrement_dissection_depth(actx->pinfo); + decrement_dissection_depth_by_n(actx->pinfo, 3); return offset; } @@ -3984,13 +4004,11 @@ static int dissect_p22_BodyPartTokens(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { // BodyPartTokens -> BodyPartTokens/_item -> BodyPartTokens/_item/body-part-choice -> BodyPartTokens - actx->pinfo->dissection_depth += 3; - increment_dissection_depth(actx->pinfo); + increment_dissection_depth_by_n(actx->pinfo, 3); offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset, BodyPartTokens_set_of, hf_index, ett_p22_BodyPartTokens); - actx->pinfo->dissection_depth -= 3; - decrement_dissection_depth(actx->pinfo); + decrement_dissection_depth_by_n(actx->pinfo, 3); return offset; } @@ -4039,13 +4057,11 @@ static int dissect_p22_ForwardedContentToken(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { // ForwardedContentToken -> ForwardedContentToken/_item -> ForwardedContentToken/_item/body-part-choice -> ForwardedContentToken - actx->pinfo->dissection_depth += 3; - increment_dissection_depth(actx->pinfo); + increment_dissection_depth_by_n(actx->pinfo, 3); offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset, ForwardedContentToken_set_of, hf_index, ett_p22_ForwardedContentToken); - actx->pinfo->dissection_depth -= 3; - decrement_dissection_depth(actx->pinfo); + decrement_dissection_depth_by_n(actx->pinfo, 3); return offset; } diff -Nru wireshark-4.4.14/epan/dissectors/packet-p7.c wireshark-4.4.15/epan/dissectors/packet-p7.c --- wireshark-4.4.14/epan/dissectors/packet-p7.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-p7.c 2026-04-29 20:10:51.000000000 +0000 @@ -640,10 +640,43 @@ /*--- Cyclic dependencies ---*/ +/* Attribute/attribute-values/_item -> Attribute/attribute-values/_item */ +static int dissect_p7_AttributeItem(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* AutoActionRegistration/registration-parameter -> AutoActionRegistration/registration-parameter */ +static int dissect_p7_T_registration_parameter(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* AttributeValueAssertion/attribute-value -> AttributeValueAssertion/attribute-value */ +static int dissect_p7_T_attribute_value(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* FilterItem/substrings/strings/_item/initial -> FilterItem/substrings/strings/_item/initial */ +static int dissect_p7_T_initial(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* FilterItem/substrings/strings/_item/any -> FilterItem/substrings/strings/_item/any */ +static int dissect_p7_T_any(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* FilterItem/substrings/strings/_item/final -> FilterItem/substrings/strings/_item/final */ +static int dissect_p7_T_final(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* MatchingRuleAssertion/match-value -> MatchingRuleAssertion/match-value */ +static int dissect_p7_T_match_value(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + /* Filter -> Filter/and -> Filter */ /* Filter -> Filter */ static int dissect_p7_Filter(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); +/* Summary/present/_item/value -> Summary/present/_item/value */ +static int dissect_p7_SummaryPresentItemValue(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* OrderedAttribute/attribute-values/_item/value -> OrderedAttribute/attribute-values/_item/value */ +static int dissect_p7_OrderedAttributeValue(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* PAR-attribute-error/problems/_item/value -> PAR-attribute-error/problems/_item/value */ +static int dissect_p7_T_attr_value(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* RTABapdu/userdataAB -> RTABapdu/userdataAB */ +static int dissect_p7_T_userdataAB(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + @@ -658,10 +691,13 @@ static int dissect_p7_AttributeItem(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // Attribute/attribute-values/_item -> Attribute/attribute-values/_item + increment_dissection_depth_by_n(actx->pinfo, 1); if(actx->external.direct_reference) call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, tree, NULL); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -716,11 +752,14 @@ static int dissect_p7_T_registration_parameter(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // AutoActionRegistration/registration-parameter -> AutoActionRegistration/registration-parameter + increment_dissection_depth_by_n(actx->pinfo, 1); if(actx->external.direct_reference) call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, tree, NULL); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -1361,10 +1400,13 @@ static int dissect_p7_T_attribute_value(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // AttributeValueAssertion/attribute-value -> AttributeValueAssertion/attribute-value + increment_dissection_depth_by_n(actx->pinfo, 1); if(actx->external.direct_reference) call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, tree, NULL); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -1387,10 +1429,13 @@ static int dissect_p7_T_initial(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // FilterItem/substrings/strings/_item/initial -> FilterItem/substrings/strings/_item/initial + increment_dissection_depth_by_n(actx->pinfo, 1); if(actx->external.direct_reference) call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, tree, NULL); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -1398,10 +1443,13 @@ static int dissect_p7_T_any(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // FilterItem/substrings/strings/_item/any -> FilterItem/substrings/strings/_item/any + increment_dissection_depth_by_n(actx->pinfo, 1); if(actx->external.direct_reference) call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, tree, NULL); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -1409,10 +1457,13 @@ static int dissect_p7_T_final(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // FilterItem/substrings/strings/_item/final -> FilterItem/substrings/strings/_item/final + increment_dissection_depth_by_n(actx->pinfo, 1); if(actx->external.direct_reference) call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, tree, NULL); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -1472,10 +1523,13 @@ static int dissect_p7_T_match_value(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // MatchingRuleAssertion/match-value -> MatchingRuleAssertion/match-value + increment_dissection_depth_by_n(actx->pinfo, 1); if(actx->external.direct_reference) call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, tree, NULL); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -1560,14 +1614,12 @@ static int dissect_p7_Filter(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { // Filter -> Filter/and -> Filter - actx->pinfo->dissection_depth += 2; - increment_dissection_depth(actx->pinfo); + increment_dissection_depth_by_n(actx->pinfo, 2); offset = dissect_ber_choice(actx, tree, tvb, offset, Filter_choice, hf_index, ett_p7_Filter, NULL); - actx->pinfo->dissection_depth -= 2; - decrement_dissection_depth(actx->pinfo); + decrement_dissection_depth_by_n(actx->pinfo, 2); return offset; } @@ -1846,10 +1898,13 @@ static int dissect_p7_SummaryPresentItemValue(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // Summary/present/_item/value -> Summary/present/_item/value + increment_dissection_depth_by_n(actx->pinfo, 1); if(actx->external.direct_reference) call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, tree, NULL); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -2562,10 +2617,13 @@ static int dissect_p7_OrderedAttributeValue(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // OrderedAttribute/attribute-values/_item/value -> OrderedAttribute/attribute-values/_item/value + increment_dissection_depth_by_n(actx->pinfo, 1); if(actx->external.direct_reference) call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, tree, NULL); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -2852,11 +2910,14 @@ static int dissect_p7_T_attr_value(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // PAR-attribute-error/problems/_item/value -> PAR-attribute-error/problems/_item/value + increment_dissection_depth_by_n(actx->pinfo, 1); if(actx->external.direct_reference) call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, tree, NULL); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -3641,9 +3702,12 @@ static int dissect_p7_T_userdataAB(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // RTABapdu/userdataAB -> RTABapdu/userdataAB + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_unknown_ber(actx->pinfo, tvb, offset, tree); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } diff -Nru wireshark-4.4.14/epan/dissectors/packet-pcap.c wireshark-4.4.15/epan/dissectors/packet-pcap.c --- wireshark-4.4.14/epan/dissectors/packet-pcap.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-pcap.c 2026-04-29 20:10:51.000000000 +0000 @@ -1964,6 +1964,30 @@ static int dissect_UnsuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *); static int dissect_OutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *); +/*--- Cyclic dependencies ---*/ + +/* ProtocolIE-Field/value -> ProtocolIE-Field/value */ +static int dissect_pcap_T_ie_field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* ProtocolExtensionField/extensionValue -> ProtocolExtensionField/extensionValue */ +static int dissect_pcap_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* PrivateIE-Field/value -> PrivateIE-Field/value */ +static int dissect_pcap_T_private_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* InitiatingMessage/value -> InitiatingMessage/value */ +static int dissect_pcap_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* SuccessfulOutcome/value -> SuccessfulOutcome/value */ +static int dissect_pcap_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value */ +static int dissect_pcap_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* Outcome/value -> Outcome/value */ +static int dissect_pcap_Outcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + + static const value_string pcap_Criticality_vals[] = { { 0, "reject" }, @@ -2276,8 +2300,11 @@ static int dissect_pcap_T_ie_field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // ProtocolIE-Field/value -> ProtocolIE-Field/value + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolIEFieldValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -2324,8 +2351,11 @@ static int dissect_pcap_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // ProtocolExtensionField/extensionValue -> ProtocolExtensionField/extensionValue + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolExtensionFieldExtensionValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -2363,8 +2393,11 @@ static int dissect_pcap_T_private_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // PrivateIE-Field/value -> PrivateIE-Field/value + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type(tvb, offset, actx, tree, hf_index, NULL); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -13339,8 +13372,11 @@ static int dissect_pcap_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // InitiatingMessage/value -> InitiatingMessage/value + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_InitiatingMessageValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -13365,8 +13401,11 @@ static int dissect_pcap_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // SuccessfulOutcome/value -> SuccessfulOutcome/value + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_SuccessfulOutcomeValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -13391,8 +13430,11 @@ static int dissect_pcap_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_UnsuccessfulOutcomeValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -13417,8 +13459,11 @@ static int dissect_pcap_Outcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // Outcome/value -> Outcome/value + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_OutcomeValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } diff -Nru wireshark-4.4.14/epan/dissectors/packet-q932-ros.c wireshark-4.4.15/epan/dissectors/packet-q932-ros.c --- wireshark-4.4.14/epan/dissectors/packet-q932-ros.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-q932-ros.c 2026-04-29 20:10:51.000000000 +0000 @@ -85,6 +85,18 @@ static tvbuff_t *arg_next_tvb, *res_next_tvb, *err_next_tvb; +/*--- Cyclic dependencies ---*/ + +/* Invoke/argument -> Invoke/argument */ +static int dissect_q932_ros_InvokeArgument(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* ReturnResult/result/result -> ReturnResult/result/result */ +static int dissect_q932_ros_ResultArgument(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* ReturnError/parameter -> ReturnError/parameter */ +static int dissect_q932_ros_T_parameter(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + + static int @@ -213,6 +225,8 @@ static int dissect_q932_ros_InvokeArgument(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // Invoke/argument -> Invoke/argument + increment_dissection_depth_by_n(actx->pinfo, 1); int len; len = tvb_reported_length_remaining(tvb, offset); @@ -222,6 +236,7 @@ offset += tvb_reported_length_remaining(tvb, offset); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -285,6 +300,8 @@ static int dissect_q932_ros_ResultArgument(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // ReturnResult/result/result -> ReturnResult/result/result + increment_dissection_depth_by_n(actx->pinfo, 1); int len; len = tvb_reported_length_remaining(tvb, offset); @@ -295,6 +312,7 @@ offset += tvb_reported_length_remaining(tvb, offset); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -374,6 +392,8 @@ static int dissect_q932_ros_T_parameter(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // ReturnError/parameter -> ReturnError/parameter + increment_dissection_depth_by_n(actx->pinfo, 1); int len; @@ -384,6 +404,7 @@ offset += tvb_reported_length_remaining(tvb, offset); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } diff -Nru wireshark-4.4.14/epan/dissectors/packet-qsig.c wireshark-4.4.15/epan/dissectors/packet-qsig.c --- wireshark-4.4.14/epan/dissectors/packet-qsig.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-qsig.c 2026-04-29 20:10:51.000000000 +0000 @@ -2033,6 +2033,12 @@ /* --- Modules Manufacturer-specific-service-extension-class-asn1-97 PSS1-generic-parameters-definition-asn1-97 Addressing-Data-Elements-asn1-97 --- --- --- */ +/*--- Cyclic dependencies ---*/ + +/* Extension/extensionArgument -> Extension/extensionArgument */ +static int dissect_qsig_T_extensionArgument(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + + static int @@ -2046,6 +2052,8 @@ static int dissect_qsig_T_extensionArgument(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // Extension/extensionArgument -> Extension/extensionArgument + increment_dissection_depth_by_n(actx->pinfo, 1); tvbuff_t *next_tvb; next_tvb = tvb_new_subset_remaining(tvb, offset); @@ -2060,6 +2068,7 @@ offset+=tvb_reported_length_remaining(tvb, offset); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -8938,6 +8947,12 @@ /* --- Module WTM-Authentication-Operations-asn1-97 --- --- --- */ +/*--- Cyclic dependencies ---*/ + +/* AuthAlgorithm/param -> AuthAlgorithm/param */ +static int dissect_qsig_wtmau_T_param(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + + static int @@ -9174,8 +9189,11 @@ static int dissect_qsig_wtmau_T_param(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // AuthAlgorithm/param -> AuthAlgorithm/param + increment_dissection_depth_by_n(actx->pinfo, 1); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } diff -Nru wireshark-4.4.14/epan/dissectors/packet-quic.c wireshark-4.4.15/epan/dissectors/packet-quic.c --- wireshark-4.4.14/epan/dissectors/packet-quic.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-quic.c 2026-04-29 20:10:51.000000000 +0000 @@ -494,8 +494,8 @@ /* Returns the QUIC draft version or 0 if not applicable. */ static inline uint8_t quic_draft_version(uint32_t version) { - /* IETF Draft versions */ - if ((version >> 8) == 0xff0000) { + /* IETF Draft versions (draft-34 is the final draft version) */ + if ((version ^ 0xff000000) <= 34) { return (uint8_t) version; } /* Facebook mvfst, based on draft -22. */ diff -Nru wireshark-4.4.14/epan/dissectors/packet-ranap.c wireshark-4.4.15/epan/dissectors/packet-ranap.c --- wireshark-4.4.14/epan/dissectors/packet-ranap.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-ranap.c 2026-04-29 20:10:51.000000000 +0000 @@ -1721,6 +1721,36 @@ static int dissect_ranap_TargetRNC_ToSourceRNC_TransparentContainer(tvbuff_t *tvb, int offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index); +/*--- Cyclic dependencies ---*/ + +/* ProtocolIE-Field/value -> ProtocolIE-Field/value */ +static int dissect_ranap_T_ie_field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* ProtocolIE-FieldPair/firstValue -> ProtocolIE-FieldPair/firstValue */ +static int dissect_ranap_T_firstValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* ProtocolIE-FieldPair/secondValue -> ProtocolIE-FieldPair/secondValue */ +static int dissect_ranap_T_secondValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* ProtocolExtensionField/extensionValue -> ProtocolExtensionField/extensionValue */ +static int dissect_ranap_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* PrivateIE-Field/value -> PrivateIE-Field/value */ +static int dissect_ranap_T_private_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* InitiatingMessage/value -> InitiatingMessage/value */ +static int dissect_ranap_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* SuccessfulOutcome/value -> SuccessfulOutcome/value */ +static int dissect_ranap_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value */ +static int dissect_ranap_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* Outcome/value -> Outcome/value */ +static int dissect_ranap_T_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + + static const value_string ranap_Criticality_vals[] = { { 0, "reject" }, @@ -2192,8 +2222,11 @@ static int dissect_ranap_T_ie_field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // ProtocolIE-Field/value -> ProtocolIE-Field/value + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolIEFieldValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -2231,8 +2264,11 @@ static int dissect_ranap_T_firstValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // ProtocolIE-FieldPair/firstValue -> ProtocolIE-FieldPair/firstValue + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolIEFieldPairFirstValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -2240,8 +2276,11 @@ static int dissect_ranap_T_secondValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // ProtocolIE-FieldPair/secondValue -> ProtocolIE-FieldPair/secondValue + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolIEFieldPairSecondValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -2321,8 +2360,11 @@ static int dissect_ranap_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // ProtocolExtensionField/extensionValue -> ProtocolExtensionField/extensionValue + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolExtensionFieldExtensionValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -2360,8 +2402,11 @@ static int dissect_ranap_T_private_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // PrivateIE-Field/value -> PrivateIE-Field/value + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type(tvb, offset, actx, tree, hf_index, NULL); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -11925,8 +11970,11 @@ static int dissect_ranap_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // InitiatingMessage/value -> InitiatingMessage/value + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_InitiatingMessageValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -11950,8 +11998,11 @@ static int dissect_ranap_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // SuccessfulOutcome/value -> SuccessfulOutcome/value + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_SuccessfulOutcomeValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -11975,8 +12026,11 @@ static int dissect_ranap_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_UnsuccessfulOutcomeValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -12000,8 +12054,11 @@ static int dissect_ranap_T_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // Outcome/value -> Outcome/value + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_OutcomeValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } diff -Nru wireshark-4.4.14/epan/dissectors/packet-rf4ce-nwk.c wireshark-4.4.15/epan/dissectors/packet-rf4ce-nwk.c --- wireshark-4.4.14/epan/dissectors/packet-rf4ce-nwk.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-rf4ce-nwk.c 2026-04-29 20:10:51.000000000 +0000 @@ -30,6 +30,7 @@ #define RF4CE_PROTOABBREV_PROFILE "rf4ce_profile" static int proto_rf4ce_nwk; +static dissector_handle_t rf4ce_nwk_handle; static dissector_handle_t rf4ce_gdp_handle; /* UAT vars */ @@ -741,7 +742,6 @@ { unsigned offset = 0; bool success; - uint8_t *decrypted = (uint8_t *)wmem_alloc(pinfo->pool, 512); uint8_t src_addr[RF4CE_IEEE_ADDR_LEN] = {0}; uint8_t dst_addr[RF4CE_IEEE_ADDR_LEN] = {0}; @@ -790,6 +790,8 @@ if (fcf & RF4CE_NWK_FCF_SECURITY_MASK) { + uint8_t *decrypted = (uint8_t *)wmem_alloc(pinfo->pool, 512); + success = decrypt_data( tvb_get_ptr(tvb, 0, size), decrypted, @@ -797,11 +799,15 @@ &size, src_addr, dst_addr); + + if (success) { + tvb = tvb_new_child_real_data(tvb, decrypted, size, size); + add_new_data_source(pinfo, tvb, "CCM* decrypted payload"); + } } else if (size > offset) { - size -= offset; - tvb_memcpy(tvb, decrypted, offset, size); + tvb = tvb_new_subset_remaining(tvb, offset); success = true; } else @@ -814,12 +820,10 @@ unsigned decrypted_offset = 0; /* On decryption success: replace the tvb, make offset point to its beginning */ - tvb = tvb_new_child_real_data(tvb, decrypted, size, size); - add_new_data_source(pinfo, tvb, "CCM* decrypted payload"); if (frame_type == RF4CE_NWK_FCF_FRAME_TYPE_CMD) { - proto_tree *nwk_payload_tree = proto_tree_add_subtree(rf4ce_nwk_tree, tvb, decrypted_offset, tvb_captured_length(tvb) - decrypted_offset, ett_rf4ce_nwk_payload, NULL, "NWK Payload"); + proto_tree *nwk_payload_tree = proto_tree_add_subtree(rf4ce_nwk_tree, tvb, decrypted_offset, tvb_captured_length_remaining(tvb, decrypted_offset), ett_rf4ce_nwk_payload, NULL, "NWK Payload"); dissect_rf4ce_nwk_cmd(tvb, pinfo, nwk_payload_tree, &decrypted_offset); } else if (frame_type == RF4CE_NWK_FCF_FRAME_TYPE_DATA) @@ -1390,7 +1394,7 @@ register_cleanup_routine(rf4ce_cleanup); - register_dissector(RF4CE_PROTOABBREV_NWK, dissect_rf4ce_nwk_common, proto_rf4ce_nwk); + rf4ce_nwk_handle = register_dissector(RF4CE_PROTOABBREV_NWK, dissect_rf4ce_nwk_common, proto_rf4ce_nwk); static uat_field_t key_uat_fields[] = { @@ -1435,6 +1439,6 @@ rf4ce_gdp_handle = find_dissector_add_dependency(RF4CE_PROTOABBREV_PROFILE, proto_rf4ce_nwk); /* create_dissector_handle(dissect_rf4ce_nwk_common, proto_rf4ce_nwk); */ - dissector_add_for_decode_as(IEEE802154_PROTOABBREV_WPAN_PANID, find_dissector(RF4CE_PROTOABBREV_NWK)); + dissector_add_for_decode_as(IEEE802154_PROTOABBREV_WPAN_PANID, rf4ce_nwk_handle); heur_dissector_add(IEEE802154_PROTOABBREV_WPAN, dissect_rf4ce_nwk_heur, "Radio Frequency for Consumer Electronics over IEEE 802.15.4", RF4CE_PROTOABBREV_NWK, proto_rf4ce_nwk, HEURISTIC_ENABLE); } diff -Nru wireshark-4.4.14/epan/dissectors/packet-rnsap.c wireshark-4.4.15/epan/dissectors/packet-rnsap.c --- wireshark-4.4.14/epan/dissectors/packet-rnsap.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-rnsap.c 2026-04-29 20:10:51.000000000 +0000 @@ -5851,6 +5851,30 @@ return pdata; } +/*--- Cyclic dependencies ---*/ + +/* ProtocolIE-Field/value -> ProtocolIE-Field/value */ +static int dissect_rnsap_ProtocolIE_Field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* ProtocolExtensionField/extensionValue -> ProtocolExtensionField/extensionValue */ +static int dissect_rnsap_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* PrivateIE-Field/value -> PrivateIE-Field/value */ +static int dissect_rnsap_PrivateIE_Field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* InitiatingMessage/value -> InitiatingMessage/value */ +static int dissect_rnsap_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* SuccessfulOutcome/value -> SuccessfulOutcome/value */ +static int dissect_rnsap_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value */ +static int dissect_rnsap_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* Outcome/value -> Outcome/value */ +static int dissect_rnsap_Outcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + + static const value_string rnsap_Criticality_vals[] = { { 0, "reject" }, @@ -7107,8 +7131,11 @@ static int dissect_rnsap_ProtocolIE_Field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // ProtocolIE-Field/value -> ProtocolIE-Field/value + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolIEFieldValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -7155,8 +7182,11 @@ static int dissect_rnsap_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // ProtocolExtensionField/extensionValue -> ProtocolExtensionField/extensionValue + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolExtensionFieldExtensionValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -7194,8 +7224,11 @@ static int dissect_rnsap_PrivateIE_Field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // PrivateIE-Field/value -> PrivateIE-Field/value + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_PrivateIEFieldValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -42121,8 +42154,11 @@ static int dissect_rnsap_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // InitiatingMessage/value -> InitiatingMessage/value + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_InitiatingMessageValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -42147,8 +42183,11 @@ static int dissect_rnsap_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // SuccessfulOutcome/value -> SuccessfulOutcome/value + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_SuccessfulOutcomeValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -42173,8 +42212,11 @@ static int dissect_rnsap_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_UnsuccessfulOutcomeValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -42199,8 +42241,11 @@ static int dissect_rnsap_Outcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // Outcome/value -> Outcome/value + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type(tvb, offset, actx, tree, hf_index, NULL); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } diff -Nru wireshark-4.4.14/epan/dissectors/packet-rpki-rtr.c wireshark-4.4.15/epan/dissectors/packet-rpki-rtr.c --- wireshark-4.4.14/epan/dissectors/packet-rpki-rtr.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-rpki-rtr.c 2026-04-29 20:10:51.000000000 +0000 @@ -19,6 +19,7 @@ #include "packet-tcp.h" #include "packet-tls.h" #include +#include #include #include "packet-x509af.h" @@ -153,7 +154,7 @@ proto_item *ti = NULL, *ti_flags, *ti_type; proto_tree *rpkirtr_tree = NULL, *flags_tree = NULL; - int offset = 0; + unsigned offset = 0; uint8_t pdu_type, version; unsigned length; @@ -173,8 +174,6 @@ proto_item_append_text(ti, " (%s)", val_to_str(pdu_type, rtr_pdu_type_vals, "Unknown %d")); offset += 1; - length = tvb_get_ntohl(tvb, offset); - switch (pdu_type) { case RPKI_RTR_SERIAL_NOTIFY_PDU: /* Serial Notify (0) */ case RPKI_RTR_SERIAL_QUERY_PDU: /* Serial Query (1) */ @@ -344,12 +343,19 @@ break; default: /* No default ? At least sanity check the length*/ + offset += 2; // Depends on the PDU type + proto_tree_add_item_ret_uint(rpkirtr_tree, hf_rpkirtr_length, tvb, offset, 4, ENC_BIG_ENDIAN, &length); if (length > tvb_reported_length(tvb)) { + /* XXX - I don't believe this ever gets called, because + * tcp_dissect_pdus and get_rpkirtr_pdu_len guarantee + * that the tvb reported length matches the field here. */ expert_add_info(pinfo, ti_type, &ei_rpkirtr_bad_length); return tvb_reported_length(tvb); } - - offset += length; + /* Since we don't add a field to the tree... */ + if (ckd_add(&offset, offset, length)) { + THROW(ReportedBoundsError); + } break; } } diff -Nru wireshark-4.4.14/epan/dissectors/packet-rrlp.c wireshark-4.4.15/epan/dissectors/packet-rrlp.c --- wireshark-4.4.14/epan/dissectors/packet-rrlp.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-rrlp.c 2026-04-29 20:10:51.000000000 +0000 @@ -1129,6 +1129,12 @@ #define maxGANSSAssistanceData 40 +/*--- Cyclic dependencies ---*/ + +/* PrivateExtension/extType -> PrivateExtension/extType */ +static int dissect_rrlp_T_extType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + + static int @@ -1142,8 +1148,11 @@ static int dissect_rrlp_T_extType(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // PrivateExtension/extType -> PrivateExtension/extType + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type(tvb, offset, actx, tree, hf_index, NULL); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } diff -Nru wireshark-4.4.14/epan/dissectors/packet-rtp-midi.c wireshark-4.4.15/epan/dissectors/packet-rtp-midi.c --- wireshark-4.4.14/epan/dissectors/packet-rtp-midi.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-rtp-midi.c 2026-04-29 20:10:51.000000000 +0000 @@ -4379,7 +4379,7 @@ command_tree = proto_tree_add_subtree(tree, tvb, offset - 1, 2, ett_rtp_midi_command, NULL, status_str ); proto_tree_add_item( command_tree, hf_rtp_midi_common_status, tvb, offset - 1, 1, ENC_BIG_ENDIAN ); proto_tree_add_item( command_tree, hf_rtp_midi_quarter_frame_type, tvb, offset, 1, ENC_BIG_ENDIAN ); - proto_tree_add_item( command_tree, hf_rtp_midi_quarter_frame_value, tvb, offset + 1, 1, ENC_BIG_ENDIAN ); + proto_tree_add_item( command_tree, hf_rtp_midi_quarter_frame_value, tvb, offset, 1, ENC_BIG_ENDIAN ); if ( cmd_count ) { col_append_fstr(pinfo->cinfo, COL_INFO, ", %s", status_str ); diff -Nru wireshark-4.4.14/epan/dissectors/packet-rtps.c wireshark-4.4.15/epan/dissectors/packet-rtps.c --- wireshark-4.4.14/epan/dissectors/packet-rtps.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-rtps.c 2026-04-29 20:10:51.000000000 +0000 @@ -3544,13 +3544,11 @@ return NULL; } - secure_body_ptr = wmem_alloc0(allocator, secure_payload_len); + secure_body_ptr = tvb_memdup(allocator, tvb, offset, secure_payload_len); if (secure_body_ptr == NULL) { return NULL; } - tvb_memcpy(tvb, secure_body_ptr, offset, secure_payload_len); - *error = rtps_util_decrypt_data( secure_body_ptr, secure_payload_len, @@ -5707,6 +5705,7 @@ char *indent_string; int retVal; char type_name[40]; + size_t bytesWritten; /* Structure of the typecode data: * Offset | Size | Field | Notes @@ -5865,7 +5864,10 @@ if (seq_max_len != -1) { /* We're dissecting a sequence of struct, bypass the seq definition */ - snprintf(type_name, 40, "%s", struct_name); + bytesWritten = g_strlcpy(type_name, struct_name, sizeof(type_name)); + if (bytesWritten >= sizeof(type_name)) { + ws_utf8_truncate(type_name, sizeof(type_name) - 1); + } break; } @@ -6024,7 +6026,10 @@ if (seq_max_len != -1) { /* We're dissecting a sequence of struct, bypass the seq definition */ - snprintf(type_name, 40, "%s", struct_name); + bytesWritten = g_strlcpy(type_name, struct_name, sizeof(type_name)); + if (bytesWritten >= sizeof(type_name)) { + ws_utf8_truncate(type_name, sizeof(type_name) - 1); + } break; } /* Prints it */ @@ -6117,9 +6122,12 @@ LONG_ALIGN(offset); string_length = tvb_get_uint32(tvb, offset, encoding); offset += 4; - snprintf(type_name, 40, "%s<%d>", - (tk_id == RTI_CDR_TK_STRING) ? "string" : "wstring", - string_length); + bytesWritten = snprintf(type_name, sizeof(type_name), "%s<%d>", + (tk_id == RTI_CDR_TK_STRING) ? "string" : "wstring", + string_length); + if (bytesWritten >= sizeof(type_name)) { + ws_utf8_truncate(type_name, sizeof(type_name) - 1); + } break; } @@ -6194,7 +6202,10 @@ offset += 4; alias_name = tvb_get_string_enc(wmem_packet_scope(), tvb, offset, alias_name_length, ENC_ASCII); offset = check_offset_addition(offset, alias_name_length, tree, NULL, tvb); - (void) g_strlcpy(type_name, alias_name, sizeof(type_name)); + bytesWritten = g_strlcpy(type_name, alias_name, sizeof(type_name)); + if (bytesWritten >= sizeof(type_name)) { + ws_utf8_truncate(type_name, sizeof(type_name) - 1); + } break; } @@ -6229,7 +6240,10 @@ if (tk_id == RTI_CDR_TK_VALUE_PARAM) { type_id_name = "valueparam"; } - snprintf(type_name, sizeof(type_name), "%s '%s'", type_id_name, value_name); + bytesWritten = snprintf(type_name, sizeof(type_name), "%s '%s'", type_id_name, value_name); + if (bytesWritten >= sizeof(type_name)) { + ws_utf8_truncate(type_name, sizeof(type_name) - 1); + } break; } } /* switch(tk_id) */ @@ -11512,12 +11526,7 @@ * checksum field set to 0. To calculate the checksum of the RTPS message * we need to set those bytes to 0 in a separate buffer. */ - tvb_zero_checksum = wmem_alloc0_array(wmem_packet_scope(), char, rtps_root->tvb_len); - tvb_memcpy( - rtps_root->tvb, - tvb_zero_checksum, - rtps_root->tvb_offset, - rtps_root->tvb_len); + tvb_zero_checksum = tvb_memdup(pinfo->pool, rtps_root->tvb, rtps_root->tvb_offset, rtps_root->tvb_len); /* Set checksum bytes to 0 */ memset(tvb_zero_checksum + offset, 0, checksum_len); diff -Nru wireshark-4.4.14/epan/dissectors/packet-rua.c wireshark-4.4.15/epan/dissectors/packet-rua.c --- wireshark-4.4.14/epan/dissectors/packet-rua.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-rua.c 2026-04-29 20:10:51.000000000 +0000 @@ -199,6 +199,27 @@ void proto_reg_handoff_rua(void); +/*--- Cyclic dependencies ---*/ + +/* ProtocolIE-Field/value -> ProtocolIE-Field/value */ +static int dissect_rua_ProtocolIE_Field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* ProtocolExtensionField/extensionValue -> ProtocolExtensionField/extensionValue */ +static int dissect_rua_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* PrivateIE-Field/value -> PrivateIE-Field/value */ +static int dissect_rua_PrivateIE_Field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* InitiatingMessage/value -> InitiatingMessage/value */ +static int dissect_rua_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* SuccessfulOutcome/value -> SuccessfulOutcome/value */ +static int dissect_rua_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value */ +static int dissect_rua_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + + static const value_string rua_Criticality_vals[] = { { 0, "reject" }, @@ -329,8 +350,11 @@ static int dissect_rua_ProtocolIE_Field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // ProtocolIE-Field/value -> ProtocolIE-Field/value + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolIEFieldValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -368,8 +392,11 @@ static int dissect_rua_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // ProtocolExtensionField/extensionValue -> ProtocolExtensionField/extensionValue + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolExtensionFieldExtensionValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -407,8 +434,11 @@ static int dissect_rua_PrivateIE_Field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // PrivateIE-Field/value -> PrivateIE-Field/value + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type(tvb, offset, actx, tree, hf_index, NULL); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -1086,8 +1116,11 @@ static int dissect_rua_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // InitiatingMessage/value -> InitiatingMessage/value + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_InitiatingMessageValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -1111,8 +1144,11 @@ static int dissect_rua_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // SuccessfulOutcome/value -> SuccessfulOutcome/value + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_SuccessfulOutcomeValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -1136,8 +1172,11 @@ static int dissect_rua_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_UnsuccessfulOutcomeValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } diff -Nru wireshark-4.4.14/epan/dissectors/packet-s1ap.c wireshark-4.4.15/epan/dissectors/packet-s1ap.c --- wireshark-4.4.14/epan/dissectors/packet-s1ap.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-s1ap.c 2026-04-29 20:10:51.000000000 +0000 @@ -2274,6 +2274,27 @@ return false; } +/*--- Cyclic dependencies ---*/ + +/* ProtocolIE-Field/value -> ProtocolIE-Field/value */ +static int dissect_s1ap_T_ie_field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* ProtocolExtensionField/extensionValue -> ProtocolExtensionField/extensionValue */ +static int dissect_s1ap_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* PrivateIE-Field/value -> PrivateIE-Field/value */ +static int dissect_s1ap_T_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* InitiatingMessage/value -> InitiatingMessage/value */ +static int dissect_s1ap_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* SuccessfulOutcome/value -> SuccessfulOutcome/value */ +static int dissect_s1ap_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value */ +static int dissect_s1ap_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + + static const value_string s1ap_Criticality_vals[] = { { 0, "reject" }, @@ -2833,8 +2854,11 @@ static int dissect_s1ap_T_ie_field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // ProtocolIE-Field/value -> ProtocolIE-Field/value + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolIEFieldValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -2901,8 +2925,11 @@ static int dissect_s1ap_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // ProtocolExtensionField/extensionValue -> ProtocolExtensionField/extensionValue + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolExtensionFieldExtensionValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -2940,6 +2967,8 @@ static int dissect_s1ap_T_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // PrivateIE-Field/value -> PrivateIE-Field/value + increment_dissection_depth_by_n(actx->pinfo, 1); struct s1ap_private_data *s1ap_data = s1ap_get_private_data(actx->pinfo); if (s1ap_data->obj_id) { offset = call_per_oid_callback(s1ap_data->obj_id, tvb, actx->pinfo, tree, offset, actx, hf_index); @@ -2951,6 +2980,7 @@ + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -14309,10 +14339,13 @@ static int dissect_s1ap_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // InitiatingMessage/value -> InitiatingMessage/value + increment_dissection_depth_by_n(actx->pinfo, 1); struct s1ap_private_data *s1ap_data = s1ap_get_private_data(actx->pinfo); s1ap_data->message_type = INITIATING_MESSAGE; offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_InitiatingMessageValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -14336,10 +14369,13 @@ static int dissect_s1ap_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // SuccessfulOutcome/value -> SuccessfulOutcome/value + increment_dissection_depth_by_n(actx->pinfo, 1); struct s1ap_private_data *s1ap_data = s1ap_get_private_data(actx->pinfo); s1ap_data->message_type = SUCCESSFUL_OUTCOME; offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_SuccessfulOutcomeValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -14363,6 +14399,8 @@ static int dissect_s1ap_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value + increment_dissection_depth_by_n(actx->pinfo, 1); struct s1ap_private_data *s1ap_data = s1ap_get_private_data(actx->pinfo); s1ap_data->message_type = UNSUCCESSFUL_OUTCOME; @@ -14370,6 +14408,7 @@ offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_UnsuccessfulOutcomeValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } diff -Nru wireshark-4.4.14/epan/dissectors/packet-sabp.c wireshark-4.4.15/epan/dissectors/packet-sabp.c --- wireshark-4.4.14/epan/dissectors/packet-sabp.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-sabp.c 2026-04-29 20:10:51.000000000 +0000 @@ -242,6 +242,24 @@ static int dissect_UnsuccessfulOutcomeValue(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *); static void dissect_sabp_cb_data(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree); +/*--- Cyclic dependencies ---*/ + +/* ProtocolIE-Field/value -> ProtocolIE-Field/value */ +static int dissect_sabp_ProtocolIE_Field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* ProtocolExtensionField/extensionValue -> ProtocolExtensionField/extensionValue */ +static int dissect_sabp_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* InitiatingMessage/value -> InitiatingMessage/value */ +static int dissect_sabp_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* SuccessfulOutcome/value -> SuccessfulOutcome/value */ +static int dissect_sabp_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value */ +static int dissect_sabp_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + + static const value_string sabp_Criticality_vals[] = { { 0, "reject" }, @@ -360,8 +378,11 @@ static int dissect_sabp_ProtocolIE_Field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // ProtocolIE-Field/value -> ProtocolIE-Field/value + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolIEFieldValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -399,8 +420,11 @@ static int dissect_sabp_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // ProtocolExtensionField/extensionValue -> ProtocolExtensionField/extensionValue + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolExtensionFieldExtensionValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -1251,8 +1275,11 @@ static int dissect_sabp_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // InitiatingMessage/value -> InitiatingMessage/value + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_InitiatingMessageValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -1276,8 +1303,11 @@ static int dissect_sabp_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // SuccessfulOutcome/value -> SuccessfulOutcome/value + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_SuccessfulOutcomeValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -1301,8 +1331,11 @@ static int dissect_sabp_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_UnsuccessfulOutcomeValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } diff -Nru wireshark-4.4.14/epan/dissectors/packet-sane.c wireshark-4.4.15/epan/dissectors/packet-sane.c --- wireshark-4.4.14/epan/dissectors/packet-sane.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-sane.c 2026-04-29 20:10:51.000000000 +0000 @@ -42,6 +42,7 @@ #include #include #include +#include #include "packet-tcp.h" @@ -473,9 +474,13 @@ int array_length = 0; proto_item *length_item = dissect_sane_word(r, value_tree, hf_sane_option_length, &array_length); - if (value_type == SANE_TYPE_STRING) { + switch (value_type) { + case SANE_TYPE_STRING: dissect_sane_string(r, pinfo, value_tree, hf_sane_option_string_value, "Option value: '%s'"); - } else { + break; + case SANE_TYPE_FIXED: + case SANE_TYPE_INT: + case SANE_TYPE_BOOL: proto_item_append_text(length_item, " (vector of length %d)", array_length / SANE_WORD_LENGTH); dissect_sane_word(r, value_tree, hf_sane_array_length, &array_length); @@ -492,6 +497,17 @@ dissect_sane_word(r, value_tree, hf_sane_option_boolean_value, NULL); } } + break; + case SANE_TYPE_BUTTON: /* Length supposed to be ignored, should be zero. */ + /* Since there is no value, presumably it doesn't include the + * extra word for the array length? Need an example. */ + default: /* These violate the spec, and should have an expert info */ + if (tvb_skip_bytes(r, array_length) == 0) { + /* Bogus length, didn't advance the offset. */ + /* We shouldn't get here because get_sane_pdu_len would have + * returned 0. */ + THROW(ReportedBoundsError); + } } } diff -Nru wireshark-4.4.14/epan/dissectors/packet-sbc-ap.c wireshark-4.4.15/epan/dissectors/packet-sbc-ap.c --- wireshark-4.4.14/epan/dissectors/packet-sbc-ap.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-sbc-ap.c 2026-04-29 20:10:51.000000000 +0000 @@ -426,6 +426,24 @@ return sbc_ap_data; } +/*--- Cyclic dependencies ---*/ + +/* ProtocolIE-Field/value -> ProtocolIE-Field/value */ +static int dissect_sbc_ap_T_ie_field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* ProtocolExtensionField/extensionValue -> ProtocolExtensionField/extensionValue */ +static int dissect_sbc_ap_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* InitiatingMessage/value -> InitiatingMessage/value */ +static int dissect_sbc_ap_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* SuccessfulOutcome/value -> SuccessfulOutcome/value */ +static int dissect_sbc_ap_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value */ +static int dissect_sbc_ap_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + + static const value_string sbc_ap_Criticality_vals[] = { { 0, "reject" }, @@ -560,8 +578,11 @@ static int dissect_sbc_ap_T_ie_field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // ProtocolIE-Field/value -> ProtocolIE-Field/value + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolIEFieldValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -599,8 +620,11 @@ static int dissect_sbc_ap_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // ProtocolExtensionField/extensionValue -> ProtocolExtensionField/extensionValue + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolExtensionFieldExtensionValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -2295,8 +2319,11 @@ static int dissect_sbc_ap_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // InitiatingMessage/value -> InitiatingMessage/value + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_InitiatingMessageValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -2320,8 +2347,11 @@ static int dissect_sbc_ap_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // SuccessfulOutcome/value -> SuccessfulOutcome/value + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_SuccessfulOutcomeValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -2345,8 +2375,11 @@ static int dissect_sbc_ap_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_UnsuccessfulOutcomeValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } diff -Nru wireshark-4.4.14/epan/dissectors/packet-signal-pdu.c wireshark-4.4.15/epan/dissectors/packet-signal-pdu.c --- wireshark-4.4.14/epan/dissectors/packet-signal-pdu.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-signal-pdu.c 2026-04-29 20:10:51.000000000 +0000 @@ -1,7 +1,7 @@ /* packet-signal-pdu.c * Signal PDU dissector. * By Dr. Lars Völker - * Copyright 2020-2025 Dr. Lars Völker + * Copyright 2020-2026 Dr. Lars Völker * * Wireshark - Network traffic analyzer * By Gerald Combs @@ -999,8 +999,12 @@ } if (hf_type == HF_TYPE_RAW && vs != NULL) { - dynamic_hf[i].hfinfo.strings = VALS64(vs); - dynamic_hf[i].hfinfo.display |= BASE_VAL64_STRING | BASE_SPECIAL_VALS; + if (data_type == SPDU_DATA_TYPE_STRING || data_type == SPDU_DATA_TYPE_STRINGZ || data_type == SPDU_DATA_TYPE_UINT_STRING) { + ws_warning("Preference Error: Signal_PDU_signal_list Signal PDU ID: 0x%04x Signal Position: %d. String based types must not define values in Signal_PDU_signal_values!\n", id, pos); + } else { + dynamic_hf[i].hfinfo.strings = VALS64(vs); + dynamic_hf[i].hfinfo.display |= BASE_VAL64_STRING | BASE_SPECIAL_VALS; + } } else { dynamic_hf[i].hfinfo.strings = NULL; } diff -Nru wireshark-4.4.14/epan/dissectors/packet-smb2.c wireshark-4.4.15/epan/dissectors/packet-smb2.c --- wireshark-4.4.14/epan/dissectors/packet-smb2.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-smb2.c 2026-04-29 20:10:51.000000000 +0000 @@ -3301,6 +3301,11 @@ } offset = start_offset+next_offset; + if (offset < start_offset) { + proto_tree_add_expert_format(tree, pinfo, &ei_smb2_invalid_length, tvb, offset, -1, + "Invalid offset/length. Malformed packet"); + break; + } } return offset; @@ -4662,6 +4667,11 @@ } offset = start_offset+next_offset; + if (offset < (int)start_offset) { + proto_tree_add_expert_format(tree, pinfo, &ei_smb2_invalid_length, tvb, offset, -1, + "Invalid offset/length. Malformed packet"); + break; + } } } @@ -11013,7 +11023,7 @@ static int dissect_smb2_compression_pattern_v1(proto_tree *tree, tvbuff_t *tvb, int offset, int length, - wmem_array_t *out) + wmem_array_t *out, bool *ok) { proto_item *pat_item; proto_tree *pat_tree; @@ -11037,11 +11047,31 @@ proto_item_append_text(pat_item, " 0x%02x repeated %u times", pattern, times); - if (out && times < MAX_UNCOMPRESSED_SIZE) { + if (times > MAX_UNCOMPRESSED_SIZE) { + *ok = false; + } + + if (out && *ok) { uint8_t v = (uint8_t)pattern; - for (unsigned i = 0; i < times; i++) + /* Both of these are much faster than adding one byte at a, + * time though the second is somewhat faster in testing due + * to how compilers optimize a known length memset. */ +#if 0 + uint8_t *bytes = g_malloc(times); + memset(bytes, v, times); + wmem_array_append(out, bytes, times); + g_free(bytes); +#else + uint8_t sixty_four_bytes[64]; + memset(sixty_four_bytes, v, 64); + unsigned i = 0; + for (i = 0; i < times/64; i++) + wmem_array_append(out, sixty_four_bytes, 64); + + for (i *= 64; i < times; i++) wmem_array_append(out, &v, 1); +#endif } return offset; @@ -11059,8 +11089,6 @@ tvbuff_t *uncomp_tvb = NULL; bool lz_based = false; - *ok = true; - subtree = proto_tree_add_subtree_format(tree, tvb, offset, 0, ett_smb2_comp_payload, &subitem, "COMPRESSION_PAYLOAD_HEADER"); proto_tree_add_item_ret_uint(subtree, hf_smb2_comp_transform_comp_alg, tvb, offset, 2, ENC_LITTLE_ENDIAN, &alg); offset += 2; @@ -11081,10 +11109,15 @@ length -= 4; } - if (length > MAX_UNCOMPRESSED_SIZE) { + if (length > MAX_UNCOMPRESSED_SIZE || wmem_array_get_count(out) > MAX_UNCOMPRESSED_SIZE) { /* decompression error */ - col_append_str(pinfo->cinfo, COL_INFO, "Comp. SMB3 (invalid)"); + if (*ok) { + col_append_str(pinfo->cinfo, COL_INFO, "Comp. SMB3 (too big)"); + } *ok = false; + } + + if (!*ok && (lz_based || SMB2_COMP_ALG_NONE)) { goto out; } @@ -11102,18 +11135,24 @@ uncomp_tvb = tvb_uncompress_lznt1(tvb, offset, length); break; case SMB2_COMP_ALG_PATTERN_V1: - dissect_smb2_compression_pattern_v1(subtree, tvb, offset, length, out); + dissect_smb2_compression_pattern_v1(subtree, tvb, offset, length, out, ok); break; default: - col_append_str(pinfo->cinfo, COL_INFO, "Comp. SMB3 (unknown)"); + // XXX - This should be an expert info, probably not in column + if (*ok) { + col_append_str(pinfo->cinfo, COL_INFO, "Comp. SMB3 (unknown)"); + } uncomp_tvb = NULL; + *ok = false; break; } if (lz_based) { if (!uncomp_tvb || tvb_reported_length(uncomp_tvb) != orig_size) { /* decompression error */ - col_append_str(pinfo->cinfo, COL_INFO, "Comp. SMB3 (invalid)"); + if (*ok) { + col_append_str(pinfo->cinfo, COL_INFO, "Comp. SMB3 (invalid)"); + } *ok = false; goto out; } @@ -11175,11 +11214,7 @@ *comp_tvb = tvb_new_subset_length(tvb, offset, tvb_reported_length_remaining(tvb, offset)); do { - bool ok = false; - - offset = dissect_smb2_chained_comp_payload(pinfo, tree, tvb, offset, uncomp_data, &ok); - if (!ok) - all_ok = false; + offset = dissect_smb2_chained_comp_payload(pinfo, tree, tvb, offset, uncomp_data, &all_ok); } while (tvb_reported_length_remaining(tvb, offset) > 8); if (all_ok) goto decompression_ok; diff -Nru wireshark-4.4.14/epan/dissectors/packet-snort-config.c wireshark-4.4.15/epan/dissectors/packet-snort-config.c --- wireshark-4.4.14/epan/dissectors/packet-snort-config.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-snort-config.c 2026-04-29 20:10:51.000000000 +0000 @@ -9,7 +9,9 @@ * SPDX-License-Identifier: GPL-2.0-or-later */ +#define WS_LOG_DOMAIN "packet-snort-config" #include "config.h" +#include #include #include @@ -21,6 +23,9 @@ #include "packet-snort-config.h" #include "ws_attributes.h" +#define MAX_LINE_LENGTH 4096U +#define STR_BUF_SIZE 1024U + /* Forward declaration */ static void parse_config_file(SnortConfig_t *snort_config, FILE *config_file_fd, const char *filename, const char *dirname, int recursion_level); @@ -47,7 +52,7 @@ * - returns: requested string. Returns from static buffer when copy is false */ static char* read_token(const char* source, char delimeter, int *length, int *accumulated_length, bool copy) { - static char static_buffer[1024]; + static char static_buffer[MAX_LINE_LENGTH]; int offset = 0; const char *source_proper = skipWhiteSpace(source, accumulated_length); @@ -60,8 +65,7 @@ *accumulated_length += offset; if (copy) { /* Copy into new string */ - char *new_string = g_strndup(source_proper, offset+1); - new_string[offset] = '\0'; + char *new_string = g_strndup(source_proper, offset); return new_string; } else { @@ -368,7 +372,7 @@ /* This can be relative or absolute. */ snort_config->rule_path = value; snort_config->rule_path_is_absolute = g_path_is_absolute(value); - snort_debug_printf("rule_path set to %s (is_absolute=%d)\n", + ws_debug("rule_path set to %s (is_absolute=%d)", snort_config->rule_path, snort_config->rule_path_is_absolute); } g_hash_table_insert(snort_config->vars, variable_name, value); @@ -445,7 +449,7 @@ int accumulated_length = 0; /* Extract up to ',', then substitute prefix! */ - snort_debug_printf("expand_reference(%s)\n", reference); + ws_debug("expand_reference(%s)", reference); char *prefix = read_token(reference, ',', &length, &accumulated_length, false); if (*prefix != '\0') { @@ -561,7 +565,7 @@ /* Try to open the file. */ new_config_fd = ws_fopen(substituted_filename, "r"); if (new_config_fd == NULL) { - snort_debug_printf("Failed to open config file %s\n", substituted_filename); + ws_debug("Failed to open config file %s", substituted_filename); report_failure("Snort dissector: Failed to open config file %s\n", substituted_filename); g_free(substituted_filename); return false; @@ -585,31 +589,34 @@ /* Process an individual option - i.e. the elements found between '(' and ')' */ static void process_rule_option(Rule_t *rule, char *options, int option_start_offset, int options_end_offset, int colon_offset) { - static char name[1024], value[1024]; + static char name[STR_BUF_SIZE], value[STR_BUF_SIZE]; name[0] = '\0'; value[0] = '\0'; - int value_length = 0; - uint32_t value32 = 0; + size_t value_length = 0; + int32_t value_i32 = 0; + uint32_t value_u32 = 0; + uint16_t value_u16 = 0; + const char *endptr; // Just to ignore trailing whitespace int spaces_after_colon = 0; if (colon_offset != 0) { /* Name and value */ - (void) g_strlcpy(name, options+option_start_offset, colon_offset-option_start_offset); + (void) g_strlcpy(name, options+option_start_offset, STR_BUF_SIZE); + // colon_offset is the offset *after* the colon if (options[colon_offset] == ' ') { spaces_after_colon = 1; } - (void) g_strlcpy(value, options+colon_offset+spaces_after_colon, options_end_offset-spaces_after_colon-colon_offset); - value_length = (int)strlen(value); + value_length = g_strlcpy(value, options+colon_offset+spaces_after_colon, STR_BUF_SIZE); + if (value_length >= STR_BUF_SIZE) { + // XXX - Should we do anything on truncation? + value_length = STR_BUF_SIZE - 1; + } } else { /* Just name */ - (void) g_strlcpy(name, options+option_start_offset, options_end_offset-option_start_offset); + (void) g_strlcpy(name, options+option_start_offset, STR_BUF_SIZE); } - /* Some rule options expect a number, parse it now. Note that any space - * after the value will currently result in the number being ignored. */ - ws_strtoi32(value, NULL, &value32); - /* Think this is space at end of all options - don't compare with option names */ if (name[0] == '\0') { return; @@ -620,10 +627,18 @@ rule->msg = g_strdup(value); } else if (strcmp(name, "sid") == 0) { - rule->sid = value32; + if (!ws_strtou32(value, &endptr, &value_u32)) { + ws_info("failed to parse %s argument", name); + return; + } + rule->sid = value_u32; } else if (strcmp(name, "rev") == 0) { - rule->rev = value32; + if (!ws_strtou32(value, &endptr, &value_u32)) { + ws_info("failed to parse %s argument", name); + return; + } + rule->rev = value_u32; } else if (strcmp(name, "content") == 0) { int value_start = 0; @@ -682,16 +697,36 @@ rule_set_content_nocase(rule); } else if (strcmp(name, "offset") == 0) { - rule_set_content_offset(rule, value32); + // Allows values from -65535 to 65535 + if (!ws_strtoi32(value, &endptr, &value_i32)) { + ws_info("failed to parse %s argument", name); + return; + } + rule_set_content_offset(rule, value_i32); } else if (strcmp(name, "depth") == 0) { - rule_set_content_depth(rule, value32); + // Max value is 65535 + if (!ws_strtou16(value, &endptr, &value_u16)) { + ws_info("failed to parse %s argument", name); + return; + } + rule_set_content_depth(rule, value_u16); } else if (strcmp(name, "within") == 0) { - rule_set_content_within(rule, value32); + // Max value is 65535 + if (!ws_strtou16(value, &endptr, &value_u16)) { + ws_info("failed to parse %s argument", name); + return; + } + rule_set_content_within(rule, value_u16); } else if (strcmp(name, "distance") == 0) { - rule_set_content_distance(rule, value32); + // Allows values from -65535 to 65535 + if (!ws_strtoi32(value, &endptr, &value_i32)) { + ws_info("failed to parse %s argument", name); + return; + } + rule_set_content_distance(rule, value_i32); } else if (strcmp(name, "fast_pattern") == 0) { rule_set_content_fast_pattern(rule); @@ -741,7 +776,7 @@ /* Allocate the rule itself */ rule = g_new(Rule_t, 1); - snort_debug_printf("looks like a rule: %s\n", line); + ws_debug("looks like a rule: %s", line); memset(rule, 0, sizeof(Rule_t)); rule->rule_string = g_strdup(line); @@ -754,7 +789,9 @@ /* Find start of options. */ options_start = strstr(line, "("); if (options_start == NULL) { - snort_debug_printf("start of options not found\n"); + ws_debug("start of options not found"); + g_free(rule->rule_string); + g_free(rule->file); g_free(rule); return false; } @@ -762,6 +799,8 @@ /* To make parsing simpler, replace final ')' with ';' */ if (line[line_length-1] != ')') { + g_free(rule->rule_string); + g_free(rule->file); g_free(rule); return false; } @@ -785,10 +824,16 @@ if (!in_quotes) { if (c == ':') { colon_offset = options_index; + options[colon_offset - 1] = '\0'; } if (c == ';') { /* End of current option - add to rule. */ + options[options_index - 1] = '\0'; process_rule_option(rule, options, options_start_index, options_index, colon_offset); + options[options_index - 1] = ';'; + if (colon_offset) { + options[colon_offset - 1] = ':'; + } /* Skip any spaces before next option */ while (options[options_index] == ' ') options_index++; @@ -803,7 +848,7 @@ /* Add rule to map of rules. */ g_hash_table_insert(snort_config->rules, GUINT_TO_POINTER((unsigned)rule->sid), rule); - snort_debug_printf("Snort rule with SID=%u added to table\n", rule->sid); + ws_debug("Snort rule with SID=%u added to table", rule->sid); return true; } @@ -832,7 +877,7 @@ g_free(rule->references[n]); } - snort_debug_printf("Freeing rule at :%p\n", rule); + ws_debug("Freeing rule at :%p", rule); g_free(rule); return TRUE; } @@ -845,11 +890,10 @@ static void parse_config_file(SnortConfig_t *snort_config, FILE *config_file_fd, const char *filename, const char *dirname, int recursion_level) { - #define MAX_LINE_LENGTH 4096 char line[MAX_LINE_LENGTH]; int line_number = 0; - snort_debug_printf("parse_config_file(filename=%s, recursion_level=%d)\n", filename, recursion_level); + ws_debug("parse_config_file(filename=%s, recursion_level=%d)", filename, recursion_level); if (recursion_level > MAX_CONFIG_FILE_RECURSE_DEPTH) { return; @@ -902,7 +946,7 @@ char* basename; FILE *config_file_fd; - snort_debug_printf("create_config (%s)\n", snort_config_file); + ws_debug("create_config (%s)", snort_config_file); *snort_config = g_new(SnortConfig_t, 1); memset(*snort_config, 0, sizeof(SnortConfig_t)); @@ -925,7 +969,7 @@ /* Attempt to open the config file */ config_file_fd = ws_fopen(snort_config_file, "r"); if (config_file_fd == NULL) { - snort_debug_printf("Failed to open config file %s\n", snort_config_file); + ws_debug("Failed to open config file %s", snort_config_file); report_failure("Snort dissector: Failed to open config file %s\n", snort_config_file); } else { @@ -942,7 +986,7 @@ /* Delete the entire config */ void delete_config(SnortConfig_t **snort_config) { - snort_debug_printf("delete_config()\n"); + ws_debug("delete_config()"); /* Iterate over all rules, freeing each one! */ g_hash_table_foreach_remove((*snort_config)->rules, delete_rule, NULL); @@ -1056,13 +1100,17 @@ char c; int n; bool have_backslash = false; - static char binary_str[1024]; + static char binary_str[STR_BUF_SIZE]; /* Just return length if have previously translated in binary string. */ if (content->translated) { return content->translated_length; } + /* content->str was set by rule_add_content, strdup'd from a substring of + * value, which, null-terminated, fit in an array of STR_BUF_SIZE. */ + ws_assert(strlen(content->str) < STR_BUF_SIZE); + /* Walk over each character, work out what needs to be written into output */ for (n=0; content->str[n] != '\0'; n++) { c = content->str[n]; @@ -1180,7 +1228,7 @@ /* TODO: handle other modifiers that will get seen? */ /* N.B. 'U' (match in decoded URI buffers) can't be handled, so don't store in flag. */ /* N.B. not sure if/how to handle 'R' (effectively distance:0) */ - snort_debug_printf("Unhandled pcre modifier '%c'\n", content->str[i]); + ws_debug("Unhandled pcre modifier '%c'", content->str[i]); break; } } diff -Nru wireshark-4.4.14/epan/dissectors/packet-snort-config.h wireshark-4.4.15/epan/dissectors/packet-snort-config.h --- wireshark-4.4.14/epan/dissectors/packet-snort-config.h 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-snort-config.h 2026-04-29 20:10:51.000000000 +0000 @@ -14,14 +14,6 @@ #include -/* #define SNORT_CONFIG_DEBUG */ -#ifdef SNORT_CONFIG_DEBUG -#include -#define snort_debug_printf printf -#else -#define snort_debug_printf(...) -#endif - /************************************************************************/ /* Rule related data types */ diff -Nru wireshark-4.4.14/epan/dissectors/packet-snort.c wireshark-4.4.15/epan/dissectors/packet-snort.c --- wireshark-4.4.14/epan/dissectors/packet-snort.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-snort.c 2026-04-29 20:10:51.000000000 +0000 @@ -27,7 +27,9 @@ */ +#define WS_LOG_DOMAIN "packet-snort" #include "config.h" +#include #include #include @@ -778,7 +780,7 @@ } } - snort_debug_printf("Showing alert (sid=%u) in frame %u\n", alert->sid, pinfo->num); + ws_debug("Showing alert (sid=%u) in frame %u", alert->sid, pinfo->num); /* Show in expert info if configured to. */ if (snort_show_alert_expert_info) { @@ -1298,20 +1300,20 @@ ws_statb64 binary_stat, config_stat; if (ws_stat64(pref_snort_binary_filename, &binary_stat) != 0) { - snort_debug_printf("Can't run snort - executable '%s' not found\n", pref_snort_binary_filename); + ws_debug("Can't run snort - executable '%s' not found", pref_snort_binary_filename); report_failure("Snort dissector: Can't run snort - executable '%s' not found\n", pref_snort_binary_filename); return; } if (ws_stat64(pref_snort_config_filename, &config_stat) != 0) { - snort_debug_printf("Can't run snort - config file '%s' not found\n", pref_snort_config_filename); + ws_debug("Can't run snort - config file '%s' not found", pref_snort_config_filename); report_failure("Snort dissector: Can't run snort - config file '%s' not found\n", pref_snort_config_filename); return; } #ifdef S_IXUSR if (!(binary_stat.st_mode & S_IXUSR)) { - snort_debug_printf("Snort binary '%s' is not executable\n", pref_snort_binary_filename); + ws_debug("Snort binary '%s' is not executable", pref_snort_binary_filename); report_failure("Snort dissector: Snort binary '%s' is not executable\n", pref_snort_binary_filename); return; } @@ -1324,7 +1326,7 @@ #endif /* Create snort process and set up pipes */ - snort_debug_printf("\nRunning %s with config file %s\n", pref_snort_binary_filename, pref_snort_config_filename); + ws_debug("Running %s with config file %s", pref_snort_binary_filename, pref_snort_config_filename); if (!g_spawn_async_with_pipes(NULL, /* working_directory */ (char **)argv, NULL, /* envp */ diff -Nru wireshark-4.4.14/epan/dissectors/packet-ssh.c wireshark-4.4.15/epan/dissectors/packet-ssh.c --- wireshark-4.4.14/epan/dissectors/packet-ssh.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-ssh.c 2026-04-29 20:10:51.000000000 +0000 @@ -3415,8 +3415,7 @@ } if (mac_len && data_len) { - mac = (char *)tvb_get_ptr(tvb, offset + data_len, mac_len); - if (!memcmp(mac, calc_mac, mac_len)){ + if (mac_len <= DIGEST_MAX_SIZE && !memcmp(tvb_get_ptr(tvb, offset + data_len, mac_len), calc_mac, mac_len)){ ws_noisy("MAC OK"); }else{ ws_debug("MAC ERR"); diff -Nru wireshark-4.4.14/epan/dissectors/packet-uds.c wireshark-4.4.15/epan/dissectors/packet-uds.c --- wireshark-4.4.14/epan/dissectors/packet-uds.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-uds.c 2026-04-29 20:10:51.000000000 +0000 @@ -11,6 +11,7 @@ #include "config.h" #include +#include #include #include @@ -1056,6 +1057,9 @@ static int hf_uds_unparsed_bytes; +/* Expert fields */ +static expert_field ei_uds_length_invalid; + /* * Trees */ @@ -2169,6 +2173,7 @@ static int dissect_uds_memory_addr_size(tvbuff_t *tvb, packet_info *pinfo, proto_tree *uds_tree, uint32_t offset, bool withDataFormatIdentifier) { + proto_item *ti; uint32_t compression, encrypting; if (withDataFormatIdentifier) { @@ -2178,8 +2183,14 @@ } uint32_t memory_size_length, memory_address_length; - proto_tree_add_item_ret_uint(uds_tree, hf_uds_memory_size_length, tvb, offset, 1, ENC_NA, &memory_size_length); - proto_tree_add_item_ret_uint(uds_tree, hf_uds_memory_address_length, tvb, offset, 1, ENC_NA, &memory_address_length); + ti = proto_tree_add_item_ret_uint(uds_tree, hf_uds_memory_size_length, tvb, offset, 1, ENC_NA, &memory_size_length); + if (memory_size_length == 0) { + expert_add_info(pinfo, ti, &ei_uds_length_invalid); + } + ti = proto_tree_add_item_ret_uint(uds_tree, hf_uds_memory_address_length, tvb, offset, 1, ENC_NA, &memory_address_length); + if (memory_address_length == 0) { + expert_add_info(pinfo, ti, &ei_uds_length_invalid); + } offset += 1; uint64_t memory_address; @@ -2845,9 +2856,19 @@ offset += 2; uint32_t memory_size_length, memory_address_length; - proto_tree_add_item_ret_uint(uds_tree, hf_uds_memory_size_length, tvb, offset, 1, ENC_NA, &memory_size_length); - proto_tree_add_item_ret_uint(uds_tree, hf_uds_memory_address_length, tvb, offset, 1, ENC_NA, &memory_address_length); + ti = proto_tree_add_item_ret_uint(uds_tree, hf_uds_memory_size_length, tvb, offset, 1, ENC_NA, &memory_size_length); + if (memory_size_length == 0) { + expert_add_info(pinfo, ti, &ei_uds_length_invalid); + } + ti = proto_tree_add_item_ret_uint(uds_tree, hf_uds_memory_address_length, tvb, offset, 1, ENC_NA, &memory_address_length); + if (memory_address_length == 0) { + expert_add_info(pinfo, ti, &ei_uds_length_invalid); + } offset += 1; + if ((memory_size_length + memory_address_length) == 0) { + /* Avoid an infinite loop if both are invalid. */ + break; + } do { uint64_t memory_address; @@ -3268,7 +3289,9 @@ void proto_register_uds(void) { - module_t* uds_module; + module_t *uds_module; + expert_module_t *uds_expert_module; + static hf_register_info hf[] = { { &hf_uds_diag_addr, { "Diagnostic Address", "uds.diag_addr", FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL } }, @@ -3677,6 +3700,12 @@ uat_t* uds_dtc_ids_uat; uat_t* uds_address_uat; + static ei_register_info ei[] = { + { &ei_uds_length_invalid, + { "uds.length.invalid", PI_MALFORMED, PI_ERROR, + "Invalid addressAndLengthFormatIdentifier", EXPFILL }} + }; + /* Setup protocol subtree array */ static int *ett[] = { &ett_uds, @@ -3705,6 +3734,9 @@ proto_register_field_array(proto_uds, hf, array_length(hf)); proto_register_subtree_array(ett, array_length(ett)); + uds_expert_module = expert_register_protocol(proto_uds); + expert_register_field_array(uds_expert_module, ei, array_length(ei)); + uds_handle = register_dissector("uds", dissect_uds_no_data, proto_uds); uds_handle_doip = register_dissector("uds_over_doip", dissect_uds_doip, proto_uds); uds_handle_hsfz = register_dissector("uds_over_hsfz", dissect_uds_hsfz, proto_uds); diff -Nru wireshark-4.4.14/epan/dissectors/packet-usb-hid.c wireshark-4.4.15/epan/dissectors/packet-usb-hid.c --- wireshark-4.4.14/epan/dissectors/packet-usb-hid.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-usb-hid.c 2026-04-29 20:10:51.000000000 +0000 @@ -5382,6 +5382,12 @@ if (rdesc->uses_report_id && field->report_id != report_id) continue; + /* skip items with a report size of 0 (no data and won't + * advance offset) */ + if (field->report_size == 0) { + continue; + } + /* if the item has no usages, it is padding - HID spec 6.2.2.9 */ if (wmem_array_get_count(field->usages) == 0) { proto_tree_add_bits_item(hid_tree, hf_usbhid_padding, tvb, hid_bit_offset, data_size, ENC_LITTLE_ENDIAN); diff -Nru wireshark-4.4.14/epan/dissectors/packet-websocket.c wireshark-4.4.15/epan/dissectors/packet-websocket.c --- wireshark-4.4.14/epan/dissectors/packet-websocket.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-websocket.c 2026-04-29 20:10:51.000000000 +0000 @@ -292,6 +292,16 @@ * (possibly empty) buffer is stored as "proto data" and true is returned. * Otherwise false is returned. */ + +/* Because the stream, or at least the sliding window, has to be reused + * between messages, this doesn't call the functions in tvbuff_zlib. + * XXX - Would it make sense to provide a tvbuff_zlib API call that + * takes either a zlib stream pointer or a sliding window/dictionary, + * in order to consolidate some code? */ +/* Same constants as tvbuff_zlib.c */ +#define TVB_Z_MIN_BUFSIZ 32768 +#define TVB_Z_MAX_BUFSIZ 1048576 * 10 + static bool #ifdef HAVE_ZLIBNG websocket_uncompress(tvbuff_t* tvb, packet_info* pinfo, zng_streamp z_strm, tvbuff_t** uncompressed_tvb, uint32_t key) @@ -300,7 +310,7 @@ #endif { /* - * Decompression a message: append "0x00 0x00 0xff 0xff" to the end of + * Decompressing a message: append "0x00 0x00 0xff 0xff" to the end of * message, then apply DEFLATE to the result. * https://tools.ietf.org/html/rfc7692#section-7.2.2 */ @@ -315,7 +325,13 @@ tvb_memcpy(tvb, compr_payload, 0, compr_len-4); compr_payload[compr_len-4] = compr_payload[compr_len-3] = 0x00; compr_payload[compr_len-2] = compr_payload[compr_len-1] = 0xff; - decompr_buf_len = 2*compr_len; + + if (ckd_mul(&decompr_buf_len, compr_len, 2)) { + decompr_buf_len = TVB_Z_MAX_BUFSIZ; + } else { + decompr_buf_len = CLAMP(decompr_buf_len, TVB_Z_MIN_BUFSIZ, TVB_Z_MAX_BUFSIZ); + } + decompr_buf = (uint8_t *)wmem_alloc(pinfo->pool, decompr_buf_len); z_strm->next_in = compr_payload; @@ -329,6 +345,19 @@ if (err == Z_OK || err == Z_STREAM_END || err == Z_BUF_ERROR) { unsigned avail_bytes = decompr_buf_len - z_strm->avail_out; + /* Note z_strm, and thus z_strm->total_out, does not necessarily get reset + * between messages because the same sliding window may be used. */ + if (decompr_len + avail_bytes > INT_MAX) { + /* Out of room (various tvb and Qt API functions will fail on anything + * bigger than a signed int. We could lower this more. (Because the + * size of the decompression buffer is clamped, this can't overflow.) */ + err = ZLIB_PREFIX(inflateSync)(z_strm); + /* This should succeed and find the 00 00 FF FF at the end, but if the + * flush point is a sync flush point and not a full flush point, i.e. + * the siding window needs to be used for the next message, the stream + * probably gets left in a bad state. */ + continue; + } if (avail_bytes) { decompr_payload = (uint8_t *)wmem_realloc(wmem_file_scope(), decompr_payload, decompr_len + avail_bytes); diff -Nru wireshark-4.4.14/epan/dissectors/packet-x2ap.c wireshark-4.4.15/epan/dissectors/packet-x2ap.c --- wireshark-4.4.14/epan/dissectors/packet-x2ap.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-x2ap.c 2026-04-29 20:10:51.000000000 +0000 @@ -2829,6 +2829,27 @@ return x2ap_data; } +/*--- Cyclic dependencies ---*/ + +/* ProtocolIE-Field/value -> ProtocolIE-Field/value */ +static int dissect_x2ap_ProtocolIE_Field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* ProtocolExtensionField/extensionValue -> ProtocolExtensionField/extensionValue */ +static int dissect_x2ap_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* PrivateIE-Field/value -> PrivateIE-Field/value */ +static int dissect_x2ap_PrivateIE_Field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* InitiatingMessage/value -> InitiatingMessage/value */ +static int dissect_x2ap_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* SuccessfulOutcome/value -> SuccessfulOutcome/value */ +static int dissect_x2ap_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value */ +static int dissect_x2ap_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + + static const value_string x2ap_Criticality_vals[] = { { 0, "reject" }, @@ -3462,8 +3483,11 @@ static int dissect_x2ap_ProtocolIE_Field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // ProtocolIE-Field/value -> ProtocolIE-Field/value + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolIEFieldValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -3510,8 +3534,11 @@ static int dissect_x2ap_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // ProtocolExtensionField/extensionValue -> ProtocolExtensionField/extensionValue + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolExtensionFieldExtensionValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -3549,6 +3576,8 @@ static int dissect_x2ap_PrivateIE_Field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // PrivateIE-Field/value -> PrivateIE-Field/value + increment_dissection_depth_by_n(actx->pinfo, 1); if (actx->external.direct_ref_present){ offset=call_per_oid_callback(actx->external.direct_reference, tvb, actx->pinfo, tree, offset, actx, hf_index); }else{ @@ -3557,6 +3586,7 @@ } + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -19498,8 +19528,11 @@ static int dissect_x2ap_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // InitiatingMessage/value -> InitiatingMessage/value + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_InitiatingMessageValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -19523,8 +19556,11 @@ static int dissect_x2ap_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // SuccessfulOutcome/value -> SuccessfulOutcome/value + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_SuccessfulOutcomeValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -19548,8 +19584,11 @@ static int dissect_x2ap_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_UnsuccessfulOutcomeValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } diff -Nru wireshark-4.4.14/epan/dissectors/packet-x509ce.c wireshark-4.4.15/epan/dissectors/packet-x509ce.c --- wireshark-4.4.14/epan/dissectors/packet-x509ce.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-x509ce.c 2026-04-29 20:10:51.000000000 +0000 @@ -315,6 +315,12 @@ static int ett_x509ce_EntrustInfoFlags; static int ett_x509ce_NFTypes; static int ett_x509ce_ScramblerCapabilities; +/*--- Cyclic dependencies ---*/ + +/* PolicyQualifierInfo/qualifier -> PolicyQualifierInfo/qualifier */ +static int dissect_x509ce_T_qualifier(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + + int @@ -609,9 +615,12 @@ static int dissect_x509ce_T_qualifier(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // PolicyQualifierInfo/qualifier -> PolicyQualifierInfo/qualifier + increment_dissection_depth_by_n(actx->pinfo, 1); offset=call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, tree, NULL); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } diff -Nru wireshark-4.4.14/epan/dissectors/packet-x509if.c wireshark-4.4.15/epan/dissectors/packet-x509if.c --- wireshark-4.4.14/epan/dissectors/packet-x509if.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-x509if.c 2026-04-29 20:10:51.000000000 +0000 @@ -304,18 +304,57 @@ /*--- Cyclic dependencies ---*/ +/* Attribute/values/_item -> Attribute/values/_item */ +static int dissect_x509if_T_values_item(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* Attribute/valuesWithContext/_item/value -> Attribute/valuesWithContext/_item/value */ +static int dissect_x509if_T_value(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* Context/contextValues/_item -> Context/contextValues/_item */ +static int dissect_x509if_T_contextValues_item(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* AttributeValue -> AttributeValue */ +/*int dissect_x509if_AttributeValue(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);*/ + +/* AttributeValueAssertion/assertion -> AttributeValueAssertion/assertion */ +static int dissect_x509if_T_assertion(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* ContextAssertion/contextValues/_item -> ContextAssertion/contextValues/_item */ +static int dissect_x509if_T_ca_contextValues_item(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* AttributeTypeAndDistinguishedValue/value -> AttributeTypeAndDistinguishedValue/value */ +static int dissect_x509if_T_atadv_value(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* AttributeTypeAndDistinguishedValue/valuesWithContext/_item/distingAttrValue -> AttributeTypeAndDistinguishedValue/valuesWithContext/_item/distingAttrValue */ +static int dissect_x509if_T_distingAttrValue(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + /* Refinement -> Refinement/and -> Refinement */ /* Refinement -> Refinement */ /*int dissect_x509if_Refinement(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);*/ +/* RequestAttribute/selectedValues/_item -> RequestAttribute/selectedValues/_item */ +static int dissect_x509if_T_ra_selectedValues_item(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* RequestAttribute/defaultValues/_item/values/_item -> RequestAttribute/defaultValues/_item/values/_item */ +static int dissect_x509if_T_ra_values_item(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* ContextProfile/contextValue/_item -> ContextProfile/contextValue/_item */ +static int dissect_x509if_T_contextValue_item(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + /* ContextCombination -> ContextCombination/and -> ContextCombination */ /* ContextCombination -> ContextCombination */ /*int dissect_x509if_ContextCombination(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);*/ +/* MatchingUse/restrictionValue -> MatchingUse/restrictionValue */ +static int dissect_x509if_T_restrictionValue(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + /* AttributeCombination -> AttributeCombination/and -> AttributeCombination */ /* AttributeCombination -> AttributeCombination */ /*int dissect_x509if_AttributeCombination(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_);*/ +/* ResultAttribute/outputValues/selectedValues/_item -> ResultAttribute/outputValues/selectedValues/_item */ +static int dissect_x509if_T_selectedValues_item(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + @@ -330,9 +369,12 @@ static int dissect_x509if_T_values_item(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // Attribute/values/_item -> Attribute/values/_item + increment_dissection_depth_by_n(actx->pinfo, 1); offset=call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, tree, NULL); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -353,9 +395,12 @@ static int dissect_x509if_T_value(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // Attribute/valuesWithContext/_item/value -> Attribute/valuesWithContext/_item/value + increment_dissection_depth_by_n(actx->pinfo, 1); offset=call_ber_oid_callback("unknown", tvb, offset, actx->pinfo, tree, NULL); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -372,9 +417,12 @@ static int dissect_x509if_T_contextValues_item(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // Context/contextValues/_item -> Context/contextValues/_item + increment_dissection_depth_by_n(actx->pinfo, 1); offset=call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, tree, NULL); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -490,9 +538,12 @@ int dissect_x509if_AttributeValue(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // AttributeValue -> AttributeValue + increment_dissection_depth_by_n(actx->pinfo, 1); offset=call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, tree, NULL); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -509,9 +560,12 @@ static int dissect_x509if_T_assertion(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // AttributeValueAssertion/assertion -> AttributeValueAssertion/assertion + increment_dissection_depth_by_n(actx->pinfo, 1); offset=call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, tree, NULL); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -537,9 +591,12 @@ static int dissect_x509if_T_ca_contextValues_item(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // ContextAssertion/contextValues/_item -> ContextAssertion/contextValues/_item + increment_dissection_depth_by_n(actx->pinfo, 1); offset=call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, tree, NULL); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -714,6 +771,8 @@ static int dissect_x509if_T_atadv_value(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // AttributeTypeAndDistinguishedValue/value -> AttributeTypeAndDistinguishedValue/value + increment_dissection_depth_by_n(actx->pinfo, 1); int old_offset = offset; tvbuff_t *out_tvb; char *value = NULL; @@ -761,6 +820,7 @@ } + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -768,9 +828,12 @@ static int dissect_x509if_T_distingAttrValue(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // AttributeTypeAndDistinguishedValue/valuesWithContext/_item/distingAttrValue -> AttributeTypeAndDistinguishedValue/valuesWithContext/_item/distingAttrValue + increment_dissection_depth_by_n(actx->pinfo, 1); offset=call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, tree, NULL); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -1049,14 +1112,12 @@ int dissect_x509if_Refinement(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { // Refinement -> Refinement/and -> Refinement - actx->pinfo->dissection_depth += 2; - increment_dissection_depth(actx->pinfo); + increment_dissection_depth_by_n(actx->pinfo, 2); offset = dissect_ber_choice(actx, tree, tvb, offset, Refinement_choice, hf_index, ett_x509if_Refinement, NULL); - actx->pinfo->dissection_depth -= 2; - decrement_dissection_depth(actx->pinfo); + decrement_dissection_depth_by_n(actx->pinfo, 2); return offset; } @@ -1321,9 +1382,12 @@ static int dissect_x509if_T_ra_selectedValues_item(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // RequestAttribute/selectedValues/_item -> RequestAttribute/selectedValues/_item + increment_dissection_depth_by_n(actx->pinfo, 1); offset=call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, tree, NULL); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -1353,9 +1417,12 @@ static int dissect_x509if_T_ra_values_item(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // RequestAttribute/defaultValues/_item/values/_item -> RequestAttribute/defaultValues/_item/values/_item + increment_dissection_depth_by_n(actx->pinfo, 1); offset=call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, tree, NULL); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -1413,9 +1480,12 @@ static int dissect_x509if_T_contextValue_item(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // ContextProfile/contextValue/_item -> ContextProfile/contextValue/_item + increment_dissection_depth_by_n(actx->pinfo, 1); offset=call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, tree, NULL); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -1493,14 +1563,12 @@ int dissect_x509if_ContextCombination(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { // ContextCombination -> ContextCombination/and -> ContextCombination - actx->pinfo->dissection_depth += 2; - increment_dissection_depth(actx->pinfo); + increment_dissection_depth_by_n(actx->pinfo, 2); offset = dissect_ber_choice(actx, tree, tvb, offset, ContextCombination_choice, hf_index, ett_x509if_ContextCombination, NULL); - actx->pinfo->dissection_depth -= 2; - decrement_dissection_depth(actx->pinfo); + decrement_dissection_depth_by_n(actx->pinfo, 2); return offset; } @@ -1517,9 +1585,12 @@ static int dissect_x509if_T_restrictionValue(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // MatchingUse/restrictionValue -> MatchingUse/restrictionValue + increment_dissection_depth_by_n(actx->pinfo, 1); offset=call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, tree, NULL); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -1617,14 +1688,12 @@ int dissect_x509if_AttributeCombination(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { // AttributeCombination -> AttributeCombination/and -> AttributeCombination - actx->pinfo->dissection_depth += 2; - increment_dissection_depth(actx->pinfo); + increment_dissection_depth_by_n(actx->pinfo, 2); offset = dissect_ber_choice(actx, tree, tvb, offset, AttributeCombination_choice, hf_index, ett_x509if_AttributeCombination, NULL); - actx->pinfo->dissection_depth -= 2; - decrement_dissection_depth(actx->pinfo); + decrement_dissection_depth_by_n(actx->pinfo, 2); return offset; } @@ -1641,9 +1710,12 @@ static int dissect_x509if_T_selectedValues_item(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // ResultAttribute/outputValues/selectedValues/_item -> ResultAttribute/outputValues/selectedValues/_item + increment_dissection_depth_by_n(actx->pinfo, 1); offset=call_ber_oid_callback(actx->external.direct_reference, tvb, offset, actx->pinfo, tree, NULL); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } diff -Nru wireshark-4.4.14/epan/dissectors/packet-x509sat.c wireshark-4.4.15/epan/dissectors/packet-x509sat.c --- wireshark-4.4.14/epan/dissectors/packet-x509sat.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-x509sat.c 2026-04-29 20:10:51.000000000 +0000 @@ -434,14 +434,12 @@ int dissect_x509sat_Criteria(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { // Criteria -> Criteria/and -> Criteria - actx->pinfo->dissection_depth += 2; - increment_dissection_depth(actx->pinfo); + increment_dissection_depth_by_n(actx->pinfo, 2); offset = dissect_ber_choice(actx, tree, tvb, offset, Criteria_choice, hf_index, ett_x509sat_Criteria, NULL); - actx->pinfo->dissection_depth -= 2; - decrement_dissection_depth(actx->pinfo); + decrement_dissection_depth_by_n(actx->pinfo, 2); return offset; } diff -Nru wireshark-4.4.14/epan/dissectors/packet-xnap.c wireshark-4.4.15/epan/dissectors/packet-xnap.c --- wireshark-4.4.14/epan/dissectors/packet-xnap.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-xnap.c 2026-04-29 20:10:51.000000000 +0000 @@ -3942,6 +3942,27 @@ return ranmode_id; } +/*--- Cyclic dependencies ---*/ + +/* ProtocolIE-Field/value -> ProtocolIE-Field/value */ +static int dissect_xnap_ProtocolIE_Field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* ProtocolExtensionField/extensionValue -> ProtocolExtensionField/extensionValue */ +static int dissect_xnap_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* PrivateIE-Field/value -> PrivateIE-Field/value */ +static int dissect_xnap_PrivateIE_Field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* InitiatingMessage/value -> InitiatingMessage/value */ +static int dissect_xnap_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* SuccessfulOutcome/value -> SuccessfulOutcome/value */ +static int dissect_xnap_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + +/* UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value */ +static int dissect_xnap_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_); + + static const value_string xnap_Criticality_vals[] = { { 0, "reject" }, @@ -4585,8 +4606,11 @@ static int dissect_xnap_ProtocolIE_Field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // ProtocolIE-Field/value -> ProtocolIE-Field/value + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolIEFieldValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -4633,8 +4657,11 @@ static int dissect_xnap_T_extensionValue(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // ProtocolExtensionField/extensionValue -> ProtocolExtensionField/extensionValue + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_ProtocolExtensionFieldExtensionValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -4672,8 +4699,11 @@ static int dissect_xnap_PrivateIE_Field_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // PrivateIE-Field/value -> PrivateIE-Field/value + increment_dissection_depth_by_n(actx->pinfo, 1); offset = dissect_per_open_type(tvb, offset, actx, tree, hf_index, NULL); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -28978,11 +29008,14 @@ static int dissect_xnap_InitiatingMessage_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // InitiatingMessage/value -> InitiatingMessage/value + increment_dissection_depth_by_n(actx->pinfo, 1); struct xnap_private_data *xnap_data = xnap_get_private_data(actx->pinfo); xnap_data->message_type = INITIATING_MESSAGE; offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_InitiatingMessageValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -29006,11 +29039,14 @@ static int dissect_xnap_SuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // SuccessfulOutcome/value -> SuccessfulOutcome/value + increment_dissection_depth_by_n(actx->pinfo, 1); struct xnap_private_data *xnap_data = xnap_get_private_data(actx->pinfo); xnap_data->message_type = SUCCESSFUL_OUTCOME; offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_SuccessfulOutcomeValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } @@ -29034,11 +29070,14 @@ static int dissect_xnap_UnsuccessfulOutcome_value(tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + // UnsuccessfulOutcome/value -> UnsuccessfulOutcome/value + increment_dissection_depth_by_n(actx->pinfo, 1); struct xnap_private_data *xnap_data = xnap_get_private_data(actx->pinfo); xnap_data->message_type = UNSUCCESSFUL_OUTCOME; offset = dissect_per_open_type_pdu_new(tvb, offset, actx, tree, hf_index, dissect_UnsuccessfulOutcomeValue); + decrement_dissection_depth_by_n(actx->pinfo, 1); return offset; } diff -Nru wireshark-4.4.14/epan/dissectors/packet-z3950.c wireshark-4.4.15/epan/dissectors/packet-z3950.c --- wireshark-4.4.14/epan/dissectors/packet-z3950.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-z3950.c 2026-04-29 20:10:51.000000000 +0000 @@ -3033,14 +3033,12 @@ static int dissect_z3950_RPNStructure(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { // RPNStructure -> RPNStructure/rpnRpnOp -> RPNStructure - actx->pinfo->dissection_depth += 2; - increment_dissection_depth(actx->pinfo); + increment_dissection_depth_by_n(actx->pinfo, 2); offset = dissect_ber_choice(actx, tree, tvb, offset, RPNStructure_choice, hf_index, ett_z3950_RPNStructure, NULL); - actx->pinfo->dissection_depth -= 2; - decrement_dissection_depth(actx->pinfo); + decrement_dissection_depth_by_n(actx->pinfo, 2); return offset; } @@ -6543,13 +6541,11 @@ static int dissect_z3950_ElementInfo(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { // ElementInfo -> ElementDataType -> ElementDataType/structured -> ElementInfo - actx->pinfo->dissection_depth += 3; - increment_dissection_depth(actx->pinfo); + increment_dissection_depth_by_n(actx->pinfo, 3); offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, ElementInfo_sequence, hf_index, ett_z3950_ElementInfo); - actx->pinfo->dissection_depth -= 3; - decrement_dissection_depth(actx->pinfo); + decrement_dissection_depth_by_n(actx->pinfo, 3); return offset; } @@ -8023,13 +8019,11 @@ static int dissect_z3950_TaggedElement(bool implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { // TaggedElement -> ElementData -> ElementData/subtree -> TaggedElement - actx->pinfo->dissection_depth += 3; - increment_dissection_depth(actx->pinfo); + increment_dissection_depth_by_n(actx->pinfo, 3); offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, TaggedElement_sequence, hf_index, ett_z3950_TaggedElement); - actx->pinfo->dissection_depth -= 3; - decrement_dissection_depth(actx->pinfo); + decrement_dissection_depth_by_n(actx->pinfo, 3); return offset; } diff -Nru wireshark-4.4.14/epan/dissectors/packet-zbee-direct.c wireshark-4.4.15/epan/dissectors/packet-zbee-direct.c --- wireshark-4.4.14/epan/dissectors/packet-zbee-direct.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/dissectors/packet-zbee-direct.c 2026-04-29 20:10:51.000000000 +0000 @@ -2,6 +2,10 @@ * Dissector routines for the ZigBee Direct * Copyright 2021 DSR Corporation, http://dsr-wireless.com/ * + * Zigbee Direct Specification, 1.1 + * Connectivity Standards Alliance Document 20-27688-041 + * https://csa-iot.org/all-solutions/zigbee/zigbee-direct/ + * * Wireshark - Network traffic analyzer * By Gerald Combs * Copyright 1998 Gerald Combs @@ -119,7 +123,12 @@ 0xf4, 0x45, 0x00, 0x00, 0xfd, 0x78, 0xd1, 0x8b }; static const uint8_t char_tunnel_uuid[] = { 0x3f, 0x31, 0xd5, 0x8b, 0x37, 0xb2, 0x20, 0x81, 0xf4, 0x45, 0x01, 0x00, 0xfd, 0x78, 0xd1, 0x8b }; -#define ZIGBEE_DIRECT_MAX_ATT_SIZE 248 + +/* The Zigbee Direct Specification states 247 as the RecommendedAttMtuSize + * (with the Minimum being 185 octets), see 7.4 and 8.2, but the ATT_MTU + * can be negotiated larger (see Bluetooth Core Specification Vol 3, Part F, + * Section 3.2.8, 3.2.9, 3.4.2.) */ +#define ZIGBEE_DIRECT_MAX_ATT_SIZE 512 #define ZIGBEE_DIRECT_AUTH_STR_SIZE (16 + 1 + 16 + 1) #define ZIGBEE_DIRECT_SECUR_CONTROL 0x05 @@ -605,7 +614,7 @@ bool to_zdd, const uint8_t *in, uint8_t *out, - uint16_t *len, + uint16_t len, uint8_t zdd_ieee[8], uint8_t zvd_ieee[8], uint8_t key[KEY_LEN]); @@ -617,7 +626,7 @@ * @param char_uuid characteristic UUID * @param in pointer to encrypted payload * @param out pointer to buffer for the result - * @param len pointer to the length of payload, outputs length of out + * @param len length of encrypted payload (on success, decrypted length is len - 8) * @param zdd_ieee ZDD IEEE * @param zvd_ieee ZVD IEEE * @param key key for decryption @@ -627,7 +636,7 @@ const uint8_t *char_uuid, const uint8_t *in, uint8_t *out, - uint16_t *len, + uint16_t len, uint8_t zdd_ieee[8], uint8_t zvd_ieee[8], uint8_t key[KEY_LEN]) @@ -635,7 +644,6 @@ /* As there is no reliable way known to determine, * if the packet is from zdd or zvd, try both cases */ - uint16_t len_buf = *len; bool success = decrypt_data(serv_uuid, char_uuid, true, in, @@ -644,7 +652,6 @@ if (!success) { - *len = len_buf; success = decrypt_data(serv_uuid, char_uuid, false, in, @@ -723,11 +730,28 @@ { uint8_t ieee[8]; bool success = false; - uint16_t size = tvb_reported_length_remaining(*tvb, offset); - uint8_t *decrypted = (uint8_t *)wmem_alloc(pinfo->pool, 512); + uint32_t size = tvb_reported_length_remaining(*tvb, offset); + /* The maximum value of ATT_MTU is negotiated in 2 octet parameters + * (Bluetooth Core Specification Vol 3, Part F, 3.4.2); since "the + * maximum length of an attribute value shall be 512 octets" (ibid., + * 3.2.9) it doesn't make sense to set it to more than 515 or so, but + * it's not clear if libwiretap or the Bluetooth dissector enforces + * any maximum. */ + if (size > ZIGBEE_DIRECT_MAX_ATT_SIZE) { + /* Larger than supported; fail. */ + expert_add_info_format(pinfo, tree, &ei_zb_direct_crypt_error, "Packet size exceeds maximum supported MTU (%u > %u)", size, ZIGBEE_DIRECT_MAX_ATT_SIZE); + return tvb_reported_length(*tvb); + } + if (size < (sizeof(uint32_t) + ZB_CCM_M)) { + /* Not enough room for the 32-bit counter for the nonce and the + * MIC, so don't try to decrypt. */ + expert_add_info_format(pinfo, tree, &ei_zb_direct_crypt_error, "Packet is too short to decrypt (%u < %u)", size, 8); + return tvb_reported_length(*tvb); + } + unsigned decrypted_size = size - (sizeof(uint32_t) + ZB_CCM_M); + uint8_t *decrypted = (uint8_t *)wmem_alloc(pinfo->pool, decrypted_size); GSList **pan_keyring; GSList *i = zbee_pc_keyring; - uint16_t init_size = size; zb_direct_ieee_from_packet_data(pinfo, ieee); @@ -747,7 +771,7 @@ char_uuid, tvb_get_ptr(*tvb, offset, size), decrypted, - &size, + size, keyrec(i)->zdd_ieee, keyrec(i)->zvd_ieee, keyrec(i)->key); @@ -755,7 +779,6 @@ if (!success) { i = g_slist_next(i); - size = init_size; } } @@ -774,13 +797,8 @@ { success = decrypt_data(serv_uuid, char_uuid, false, tvb_get_ptr(*tvb, offset, size), - decrypted, &size, + decrypted, size, ieee, NULL, ((key_record_t*)i->data)->key); - - if (!success) - { - size = init_size; - } } } } @@ -789,7 +807,7 @@ if (success) { /* On decryption success: replace the tvb, make offset point to its beginning */ - *tvb = tvb_new_child_real_data(*tvb, decrypted, size, size); + *tvb = tvb_new_child_real_data(*tvb, decrypted, decrypted_size, decrypted_size); add_new_data_source(pinfo, *tvb, "CCM* decrypted payload"); offset = 0; } @@ -847,7 +865,7 @@ * @param to_zdd true if packet ws sent to zdd, false if to zvd (needed for nonce formation) * @param in pointer to encrypted payload * @param out pointer to buffer for the result - * @param len pointer to the length of payload, outputs length of out + * @param len length of encrypted payload (on success, decrypted length is len - 8) * @param zdd_ieee ZDD IEEE * @param zvd_ieee ZVD IEEE * @param key key for decryption @@ -858,19 +876,19 @@ bool to_zdd, const uint8_t *in, uint8_t *out, - uint16_t *len, + uint16_t len, uint8_t zdd_ieee[8], uint8_t zvd_ieee[8], uint8_t key[KEY_LEN]) { + DISSECTOR_ASSERT_CMPINT(len, >=, sizeof(uint32_t) + ZB_CCM_M); + bool success = true; uint8_t auth_str[ZIGBEE_DIRECT_AUTH_STR_SIZE]; - uint8_t decrypted_data[ZIGBEE_DIRECT_MAX_ATT_SIZE + 16]; - uint16_t decrypted_data_len = sizeof(decrypted_data); /* Remove 32-bit counter from the beginning */ const uint8_t *encrypted_data = in + sizeof(uint32_t); - uint16_t encrypted_data_len = *len - sizeof(uint32_t); + uint16_t encrypted_data_len = len - sizeof(uint32_t); /* Form the nonce */ zb_secur_ccm_nonce_t nonce = (zb_secur_ccm_nonce_t) @@ -882,7 +900,6 @@ memcpy(&nonce.frame_counter, in, sizeof(uint32_t)); memcpy(&nonce.source_address, to_zdd ? zvd_ieee : zdd_ieee, 8); - if (*len < 8) return false; create_auth_string(serv_uuid, char_uuid, auth_str); @@ -890,23 +907,11 @@ (uint8_t*)&nonce, auth_str, encrypted_data, - decrypted_data, + out, sizeof(auth_str), encrypted_data_len - ZB_CCM_M, ZB_CCM_M); - - if (success) - { - decrypted_data_len = encrypted_data_len - ZB_CCM_M; - memcpy(out, decrypted_data, decrypted_data_len); - *len = decrypted_data_len; - } - else - { - *len = 0; - } - return success; } @@ -1777,8 +1782,8 @@ static ei_register_info ei[] = { { &ei_zb_direct_crypt_error, - { "zbd.error.decryption", PI_UNDECODED, PI_WARN, - "Decryption fail", + { "zbd.error.decryption", PI_DECRYPTION, PI_WARN, + "Decryption failure", EXPFILL } } }; diff -Nru wireshark-4.4.14/epan/enterprises.c wireshark-4.4.15/epan/enterprises.c --- wireshark-4.4.14/epan/enterprises.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/enterprises.c 2026-04-29 20:10:51.000000000 +0000 @@ -8,7 +8,7 @@ * SPDX-License-Identifier: GPL-2.0-or-later */ -/* (last updated 2026-02-20) */ +/* (last updated 2026-04-24) */ #include "config.h" @@ -126,7 +126,7 @@ "Micro Technology", // 104 "Process Software Corporation", // 105 "EMC Data General Division", // 106 - "Bull Company", // 107 + "Bull S.A.S.", // 107 "Broadcom Emulex Connectivity Division", // 108 "Warwick University Computing Services", // 109 "NetScout Systems, Inc.", // 110 @@ -4017,7 +4017,7 @@ "VASCO Data Security International, Inc.", // 3995 "Open Systems AG", // 3996 "ImproWare AG", // 3997 - "Mediagroup Vtoroy", // 3998 + "VTOROY", // 3998 "dydx", // 3999 "Hi-net Research Group", // 4000 "KADAK Products Ltd.", // 4001 @@ -11098,7 +11098,7 @@ "Banesto S.A.", // 11076 "Andrej Ota", // 11077 "Centralworks LLC", // 11078 - "EIT Ltd", // 11079 + "Greg Malewski", // 11079 "Airwide Solutions", // 11080 "Hydrogen Line, Inc.", // 11081 "Illinois Central College", // 11082 @@ -15691,7 +15691,7 @@ "Lifecycle Software", // 15669 "The Internet Marketing Center", // 15670 "Wardega Consulting", // 15671 - "Javno preduzece Posta Srbije", // 15672 + "Posta Srbije d.o.o.", // 15672 "Codeangels Solutions", // 15673 "Valente CC", // 15674 "StoneDonut, LLC", // 15675 @@ -19567,7 +19567,7 @@ "Sony CISC", // 19545 "MELENTANE", // 19546 "Oplink Communications, Inc.", // 19547 - "FROX communication", // 19548 + "FROX AG", // 19548 "Uni-Q Systems", // 19549 "an Academic Network at Sao Paulo (ANSP)", // 19550 "Thales Naval France", // 19551 @@ -25554,7 +25554,7 @@ "BCA Services Ltd.", // 25532 "IdentityForge, LLC.", // 25533 "Lusan Systems", // 25534 - "Klas Ltd.", // 25535 + "Anduril Voyager", // 25535 "Probaris Technologies, Inc.", // 25536 "Thomas Friedl", // 25537 "GNU Telephony", // 25538 @@ -26555,7 +26555,7 @@ "Nurun inc.", // 26533 "think project! International", // 26534 "OMNEX Control Systems ULC", // 26535 - "Ringland Consulting LLC", // 26536 + "Jim Ringland", // 26536 "Riorey Inc.", // 26537 "Duaxes Corporation", // 26538 "Ionoscape Associates", // 26539 @@ -30034,7 +30034,7 @@ "ipoque GmbH", // 30012 "Den selvejende institution Paul Bargsøe Kollegiet", // 30013 "Pecsi Tudomanyegyetem Klinikai Kozpont", // 30014 - "KBC Bank", // 30015 + "KBC Global Services", // 30015 "Anel-Elektronik AG", // 30016 "TAG Aviation", // 30017 "FusionIO", // 30018 @@ -36833,7 +36833,7 @@ "Consendo Systems A/S", // 36811 "CSP, Inc.", // 36812 "SafeTek USA, LLC", // 36813 - "DEFFAYET", // 36814 + NULL, // 36814 "Savings Society Inc", // 36815 "Beijing Abloomy Technologies Co., Ltd", // 36816 "Bohemia Interactive Simulations", // 36817 @@ -41315,7 +41315,7 @@ "Taylor Innovations, LLC", // 41293 "Datafrog", // 41294 "Andalusia Group", // 41295 - "E-Gate Communications Inc.", // 41296 + "EGATE Networks Inc.", // 41296 "Nextech Co.,Ltd", // 41297 "BRGFrauengasse", // 41298 "Infodom d.o.o.", // 41299 @@ -42900,7 +42900,7 @@ "Credit-Moscow Bank", // 42878 "Sielaff GmbH & Co. KG", // 42879 "Uwe Disch", // 42880 - "No Limit Network", // 42881 + "B2 Network", // 42881 "Jiangsu Fablesoft Co.,Ltd", // 42882 "CARC (C-DOT Alcatel-Lucent Research Centre Pvt Ltd)", // 42883 "Anderson Morgan Kelowna Inc.", // 42884 @@ -50052,7 +50052,7 @@ "BENTELER Business Services GmbH", // 50030 "Ring Central, Inc", // 50031 "City of Edmond", // 50032 - "IT-Solutions Nuernberg", // 50033 + "AKITN Consulting", // 50033 "AR24 SAS", // 50034 "Identinetics IT-Services GmbH", // 50035 "Cancer South Institute", // 50036 @@ -52351,7 +52351,7 @@ "DSI DGAC", // 52329 "Chubb Systems Ltd", // 52330 "learntotechsolutions Limited", // 52331 - "INTEGRITY Security Services LLC", // 52332 + "OmniTrust Security LLC", // 52332 "Banco de Credito del Peru", // 52333 "Systematic Inc", // 52334 "Alignment Healthcare", // 52335 @@ -53210,7 +53210,7 @@ "Queen Margaret's School", // 53188 "Share IT Limited", // 53189 "LittleMouseCloud", // 53190 - "Telmex Colombia S.A.", // 53191 + "Comcel S.A.", // 53191 "Socially Determined, Inc.", // 53192 "UVEX WINTER HOLDING GmbH & Co. KG", // 53193 "Goodbaby International", // 53194 @@ -59796,7 +59796,7 @@ "Teyf Pardazan Spadana (TPS) Co.", // 59774 "AB Gyllsjö Träindustri", // 59775 "Webloom S.r.l.", // 59776 - "Martin Johansson", // 59777 + "Tidaholms kommun", // 59777 "Tiến Trần", // 59778 "INBOH DOOEL Skopje", // 59779 "PFALZKOM GmbH", // 59780 @@ -61852,7 +61852,7 @@ "Tinh Van Technologies JSC.", // 61830 "MFK Burny", // 61831 "Alfavit", // 61832 - "Xiaojun Ben", // 61833 + "StarCharge", // 61833 "Venturus Centro de Inovacao Tecnologica", // 61834 "Otheda Limited", // 61835 "AtFocus", // 61836 @@ -63188,7 +63188,7 @@ "Scanvaegt Systems AB", // 63166 "FUNDACIÓN CIVITANA", // 63167 "UnipartRail", // 63168 - "TEXAS DEPARTMENT OF DEVELOPMENT", // 63169 + "Dev Recon Inc", // 63169 "XYC INDUSTRY CO.,LIMITED", // 63170 "C4 Energi AB", // 63171 "Brueterei Weser-Ems GmbH & Co. KG", // 63172 @@ -65086,7 +65086,7 @@ "WestJet Airline Ltd.", // 65064 "Kelco Industries", // 65065 "yamanju LLC", // 65066 - "Alpha Software Dienstleistungs ASD GmbH", // 65067 + "Netcetera Software Services GmbH", // 65067 "Institut Dr. Foerster GmbH & Co. KG", // 65068 "Meestgroup", // 65069 "Tida Skogsvård", // 65070 @@ -65094,7 +65094,7 @@ "Keyfactor Federal", // 65072 "GCVE", // 65073 "Writerslogic Inc", // 65074 - "Beijing Loong Network Technology Co., Ltd.", // 65075 + "Peking Loong Network Technology Co., Ltd.", // 65075 "Tonghua Dongchang Superzhao Information Technology Consulting Studio", // 65076 "Polytec GmbH", // 65077 "SATELCOM TELEKOMÜNİKASYON, BİLGİ VE İLETİŞİM TEKNOLOJİLERİ İTHALAT İHRACAT SANAYİ ANONİM ŞİRKETİ",// 65078 @@ -65181,7 +65181,7 @@ "Roland Kistler", // 65159 "Aretiico, Inc.", // 65160 "Aveira Security Research", // 65161 - "Povodi Moravy, statni podnik (Vltava river basin, state enterprise)", // 65162 + "Povodi Moravy, statni podnik (Morava river basin, state enterprise)", // 65162 "ToolsOnAir Broadcast Engineering GmbH", // 65163 "Sorbus ursina", // 65164 "Family Farm and Home, Inc.", // 65165 @@ -65197,7 +65197,483 @@ "Scrive AB", // 65175 "DokiSpace", // 65176 "Secure Element Solutions, LLC", // 65177 - "TruPoint Technology Services Ltd." // 65178 + "TruPoint Technology Services Ltd.", // 65178 + "Juan Ros Florenza", // 65179 + "Куприяшин Михаил Андреевич (Kupriyashin Mikhail Andreevich)", // 65180 + "Kimble", // 65181 + "Nectek", // 65182 + "PRIVATECH Inc.", // 65183 + "Full Doors", // 65184 + "Vibeish Analytics", // 65185 + "Nissay Information Technology Cybersecurity Central Project", // 65186 + "HARBOR HUMANITY TRUST", // 65187 + "MAUSS BAU GmbH & Co. KG", // 65188 + "Avenkor", // 65189 + "MiWire Group ApS", // 65190 + "Vakka-Suomen Puhelin Oy", // 65191 + "Fredrik Wahlgren", // 65192 + "Куприяшин Михаил Андреевич (Kupriyashin Mikhail Andreevich)", // 65193 + "Nexphoton", // 65194 + "IT:U interdisciplinary transformation university austria", // 65195 + "Sage Networks", // 65196 + "Simsalasim Germany GmbH", // 65197 + "VADES, LLC", // 65198 + "Hanåsa Sågverk Aktiebolag", // 65199 + "coresdev, LLC", // 65200 + "LMI Technologies", // 65201 + "Dane", // 65202 + "楠泰科技(深圳)有限公司 (Nantech Technology (Shenzhen) Co., Ltd.)", // 65203 + "JoLo Software", // 65204 + "Telepeer AB", // 65205 + "SkifteCentralen ApS", // 65206 + "Seralto Bilgi Teknolojileri ve Guvenligi Ltd.", // 65207 + "Privatbrauerei Zwettl", // 65208 + "Kenneth Mørch", // 65209 + "Monadnock Community Hospital", // 65210 + "Saronic Technologies", // 65211 + "KENTECH SECURITY LLC", // 65212 + "TransItServiceLLC.com", // 65213 + "TAURON Obsługa Klienta sp. z o.o.", // 65214 + "MIS Security LLC", // 65215 + "Twisted Ceptors Corporation", // 65216 + "Pond IoT", // 65217 + "Savannah Informatics Limited", // 65218 + "Center for Ecological Research", // 65219 + "ProSafety d.o.o.", // 65220 + "Universidade da Beira Interior", // 65221 + "RT Medical Systems LTDA.", // 65222 + "HAZON TECHNOLOGIES LIMITED", // 65223 + "Metadata, SL", // 65224 + "K. N. Toosi University of Technology,", // 65225 + "Marquis Companies", // 65226 + "Uone Infotech Co.,LTD", // 65227 + "Municipio de Juárez, Nuevo León", // 65228 + "Univerzitná nemocnica Nemocnica svätého Michala, a.s.", // 65229 + "Privasys Ltd", // 65230 + "Institut für Wissenschaft und Weisheit (IWW)", // 65231 + "Vital Tech Industria e Comercio Ltda", // 65232 + "Rip City Refrigeration", // 65233 + "Seattle School District", // 65234 + "Hudson River Trading", // 65235 + "TSCP LLC", // 65236 + "Noser Engineering AG", // 65237 + "LMD HITECH INDIA PRIVATE LIMITED", // 65238 + "Hans-Joachim Knobloch", // 65239 + "iSYS Software GmbH", // 65240 + "Arberlandkliniken Kommunalunternehmen", // 65241 + "NEPKI", // 65242 + "QFJ Home Network", // 65243 + "SC Smart Office SRL", // 65244 + "Athena Networks", // 65245 + "Guardant Health", // 65246 + "Evorit", // 65247 + "William Harrison", // 65248 + "SZ Grid", // 65249 + "Christian Zietz", // 65250 + "SAXONIA Edelmetalle GmbH", // 65251 + "Henke-Sass, Wolf GmbH", // 65252 + "Advanced Fiber Resources Milan srl", // 65253 + "Paceline Services", // 65254 + "北京泰斯汀通信技术有限公司 (Beijing Testing Technology Co., Ltd.)", // 65255 + "Codibly S.A.", // 65256 + "Sheffield Children's NHS Foundation Trust", // 65257 + "11:11 Systems Inc.", // 65258 + "Bayer Radiology", // 65259 + "Base Power, Inc.", // 65260 + "Keeper Security, Inc", // 65261 + "B&G Digital Services GmbH", // 65262 + "Alfred Hochleithner e. U.", // 65263 + "Shenzhen Enjoy Technology Co.,Ltd.", // 65264 + "Jeremy Jay", // 65265 + "olstenwood logistic AB", // 65266 + "XPC Corporation", // 65267 + "SHENZHEN FOCUSCOM TECHNOLOGIES CO.,LTD", // 65268 + "Autobahn Tank u Rast", // 65269 + "extocode GmbH", // 65270 + "Convey Health Solutions", // 65271 + "Philippine Society for Digital Health", // 65272 + "IMSENZ", // 65273 + "Projekt IP, sodobne IP komunikacije d.o.o.", // 65274 + "Hiab", // 65275 + "B2B Solutions Zrt.", // 65276 + "CORPORACIÓN EMPRESARIAL ALTRA S.L.", // 65277 + "DANEXiS AG", // 65278 + "it@business GmbH & Co. KG", // 65279 + "Juha mielonen", // 65280 + "Supertrace", // 65281 + "CHRISTIE OWEN & DAVIES LIMITED", // 65282 + "Cantrell Cloud ES", // 65283 + "ram krishnan", // 65284 + "Altos Computing Inc.", // 65285 + "Phison Electronics Corp.", // 65286 + "Akarui Networks Private Limited", // 65287 + "Suzhou Langkong Post-Quantum Technology Co., Ltd.(LK Quantum)", // 65288 + "ZPPP-Blonie", // 65289 + "LaunchWindow Software Inc.", // 65290 + "Konduit KYA", // 65291 + "Aleph Cloud (Aleph.im SAS)", // 65292 + "SSC-Services GmbH", // 65293 + "Novatronic LLC", // 65294 + "Innovoris Labs IT srl", // 65295 + "Netvio", // 65296 + "CAITEK for Information Systems", // 65297 + "Exian Systems Limited", // 65298 + "Grumpy Bastards", // 65299 + "LikeDotAudio", // 65300 + "Null Grid Ltd", // 65301 + "Linneman Labs", // 65302 + "Simgenet", // 65303 + "Institut Mallorqui Afers Socials", // 65304 + "MIOS ELETTRONICA", // 65305 + "Tetranetics Private Limited", // 65306 + "nfiniity GmbH", // 65307 + "Insky Communications Private Limited", // 65308 + "IHX(Thailand) Co., Ltd.", // 65309 + "David Keller", // 65310 + "UANATACA ECUADOR S.A.", // 65311 + "Persona Identities", // 65312 + "Zhongrui Green Energy Technology (Shenzhen) Co., Ltd.", // 65313 + "IsoFind", // 65314 + "Transas Navigator Ltd.", // 65315 + "CTHINGS.CO Sp. z o.o.", // 65316 + "Foxway AB", // 65317 + "Chengdu Newglee Technology Co., LTD.", // 65318 + "Vardaan Electronics Industries Pvt. Ltd.", // 65319 + "Seminole County Public Schools", // 65320 + "Exavision", // 65321 + "ServerForge LLC", // 65322 + "GCH Technologies Inc.", // 65323 + "Kern County Sheriff's Office", // 65324 + "NetCuras", // 65325 + "Azerconnect Group", // 65326 + "ATSN Ltd", // 65327 + "Multrees Investor Services", // 65328 + "Hunt Electric", // 65329 + "Voltra", // 65330 + "XIPE Networks LLC", // 65331 + "Cohesive Database Synoptics", // 65332 + "Sisgarbe - Solucoes De Informatica Lda", // 65333 + "easier.digital", // 65334 + "MEK, Inc", // 65335 + "AVISIA", // 65336 + "Stephan Harrer", // 65337 + "HPELab", // 65338 + "LotusFlare Inc", // 65339 + "New Use Energy Solutions", // 65340 + "Claiborne County School District", // 65341 + "Haerang Energy", // 65342 + "FLDG Holding SASU", // 65343 + "Dustin Ward", // 65344 + "Communications Regulatory Authority of Namibia", // 65345 + "Yaskawa America Inc.", // 65346 + "Beijing Unihannto Technology Co., Ltd.", // 65347 + "Florian Sluiter", // 65348 + "Microgrid Energy Pty Ltd", // 65349 + "Ruchi Telecom Private Limited", // 65350 + "Sigalion", // 65351 + "Space-Tech LLC", // 65352 + "CEDIA", // 65353 + "TRAC Intermodal", // 65354 + "Apache Corporation", // 65355 + "Julian Pawlowski", // 65356 + "José Eliécer Loaiza Duque", // 65357 + "Mark Nolan", // 65358 + "Rainer W. Gerling", // 65359 + "Point And Click Solutions, Inc", // 65360 + "xSyLent", // 65361 + "Liujiacheng", // 65362 + "MerkleCerts", // 65363 + "Verific Design Automation, Inc.", // 65364 + "SOI Asia", // 65365 + "Fast Module", // 65366 + "Numeracle, Inc.", // 65367 + "Jacobs.Tech", // 65368 + "Affinda Group", // 65369 + "Nexiom", // 65370 + "VietCA Technology JSC", // 65371 + "Electron do Brasil Tecnologia Digital Ltda", // 65372 + "BK Tech Group AB", // 65373 + "Ampaura Australia", // 65374 + "PRZEDSIEBIORSTWO WIELOBRANZOWE CASTON SPOLKA Z OGRANICZONA ODPOWIEDZIALNOSCIA (Caston Multi-Branch Enterprise Limited Liability Company)",// 65375 + "Famoco", // 65376 + "Compass Group North America", // 65377 + "芯昇科技有限公司 Xinsheng Technology Co., Ltd", // 65378 + "LLC PF STIS", // 65379 + "Mark Mackenzie", // 65380 + "Michael Kirkpatrick", // 65381 + "Water & Wastewater Technic WWT GmbH", // 65382 + "Endrit’s Digital Solutions e.K.", // 65383 + "Association of Azerbaijani British Professionals", // 65384 + "FORITECH", // 65385 + "DAPsystems", // 65386 + "BEQ Manufacturier", // 65387 + "Viridi Parente, Inc.", // 65388 + "Romagnole Produtos Elétricos SA (Filial Juiz de Fora)", // 65389 + "Md Shahab Uddin", // 65390 + "Gouvernement du Togo", // 65391 + "HALE electronic GmbH.", // 65392 + "National Gas", // 65393 + "XIVAuth Project", // 65394 + "Indonesia Research and Education Network", // 65395 + "220NET", // 65396 + "Crosstech Solutions Group LLC", // 65397 + "Altalink", // 65398 + "Honeywell Aerospace", // 65399 + "Construction Company Facade Systems LLC", // 65400 + "Mosproject", // 65401 + "Yannick Schneider", // 65402 + "Starlink", // 65403 + "Horizon Credit Union", // 65404 + "Console Now Inc.", // 65405 + "OpConnect Inc.", // 65406 + "Niklights", // 65407 + "AEWIN Technologies Co., Ltd.", // 65408 + "Uniserv GmbH", // 65409 + "Defidev", // 65410 + "Salience Labs", // 65411 + "Chaos1", // 65412 + "DragonWave Technologies", // 65413 + "福州高新区蔚蓝网络有限公司 (Fuzhou High-tech Zone Weilan Network Co., Ltd.)", // 65414 + "Bergslagets Egendomar AB", // 65415 + "After Hours Audio", // 65416 + "Pippin Technical Service", // 65417 + "HIPOINT TECHNOLOGY CO., LTD", // 65418 + "Serhii Parshyn", // 65419 + "Haoren Hu", // 65420 + "Pfano Kate", // 65421 + "SigmaMD", // 65422 + "Transumption Pte Ltd", // 65423 + "Dermavision Solutions SL", // 65424 + "Municipal institution City Institute", // 65425 + "SXarc", // 65426 + "Yu Energy", // 65427 + "m3g yazilim danismanlik tic. ltd. sti.", // 65428 + "Duix Tecnologia Industria e Comercio LTDA", // 65429 + "Carnival Corporation & PLC", // 65430 + "Logipix", // 65431 + "LukuID Oy", // 65432 + "City of Orem, Utah", // 65433 + "Mark Purcell", // 65434 + "Paul Robinson", // 65435 + "MdProSoft", // 65436 + "Mikael Hansson Åkeri AB", // 65437 + "Ram Jee Aryal (Independent Developer)", // 65438 + "Sherpa-IRS", // 65439 + "Signal24 LLC", // 65440 + "Wendy Labs, Inc.", // 65441 + "CV BİLİŞİM TEKNOLOJİ TİCARET LİMİTED ŞİRKETİ", // 65442 + "Horry County Government", // 65443 + "ShenZhen Action Technologies Co., Ltd.", // 65444 + "Sirraya Labs", // 65445 + "OnLogic Inc", // 65446 + "Core Concept Collective", // 65447 + "Augeral Pty Ltd", // 65448 + "ISTREAMS SOLUTIONS FZE", // 65449 + "Devops-DB", // 65450 + "Stadtverwaltung Borken", // 65451 + "Sallan yhteismetsä", // 65452 + "Weinholt Consulting AB", // 65453 + "Swarco Futurit Verkehrssignalsysteme Ges.m.b.H.", // 65454 + "Denny Thomas", // 65455 + "SHI Lili", // 65456 + "SECORO INC", // 65457 + "Starnitzke Consulting GmbH", // 65458 + "Salt Group", // 65459 + "d-Matrix", // 65460 + "Universidad Autónoma de Nayarit", // 65461 + "Nymölla Skog AB", // 65462 + "PANTHEON.tech", // 65463 + "Granite Telecommunications LLC.", // 65464 + "bosloven", // 65465 + "TELENICK", // 65466 + "nekohaxx", // 65467 + "SRNE Solar Co.,Ltd", // 65468 + "ArtSanEnerji", // 65469 + "TriCore Engineering UG (haftungsbeschränkt)", // 65470 + "Mobi Acquisition LLC", // 65471 + "BYD Finland Oy", // 65472 + "DS Soft Olomouc, spol. s r.o.", // 65473 + "CedarDB GmbH", // 65474 + "DESKO GmbH", // 65475 + "Ducati Motor Holding S.p.A", // 65476 + "厦门汉印股份有限公司 (Xiamen Hanin Co., Ltd.)", // 65477 + "Rune Vikestad", // 65478 + "SmartSolo", // 65479 + "BitKiva", // 65480 + "FIRMA INTERSVYAZ LIMITED TRADE DEVELOPMENT", // 65481 + "Conekt.ai, Inc.", // 65482 + "天津外国语大学(Tianjin Foreign Studies University), TJFSU, TFSU", // 65483 + "Nimbis Services, Inc.", // 65484 + "LSW tech", // 65485 + "Sky Digital Co., Ltd.", // 65486 + "Maryland Benefits DHS CJAMS", // 65487 + "MIROSLAV VASILEV TZONKOV", // 65488 + "Jerome Freeman", // 65489 + "AUTONOMY OF ZALESK TRUST", // 65490 + "DABify Ltd", // 65491 + "ABPS Radio Network", // 65492 + "States of Jersey Police (SOJP)", // 65493 + "KOEN Inc", // 65494 + "Nimbus Hrvatska d.o.o.", // 65495 + "LAYER1", // 65496 + "GK FUTURE Inc.", // 65497 + "Vecto", // 65498 + "Gildas Le Drogoff", // 65499 + "Wolf Rosewood Media", // 65500 + "Mpirical", // 65501 + "Techielab.ch", // 65502 + "Artsan Enerji static voltage stabilizer", // 65503 + "VWFNDR CAMERA", // 65504 + "Tumee", // 65505 + "DOBE COMPUTING Co., Ltd.", // 65506 + "Midwest Fastener Corp", // 65507 + "Oregonians Credit Union", // 65508 + "Santa Casa de Marilia", // 65509 + "GIP RECIA", // 65510 + "James L Baker", // 65511 + "北京东方京海电子科技有限公司 (Beijing Dongfang Jinghai Electronic Technology Co., Ltd.)", // 65512 + "Alyiah Samara", // 65513 + "Charter Communications", // 65514 + "TeX Users Group", // 65515 + "Bribus B.V.", // 65516 + "Construmart S.A.", // 65517 + "Pumatronix Equipamentos Eletronicos Ltda", // 65518 + "Informationsverarbeitung Leverkusen GmbH", // 65519 + "李刚 (Li Gang)", // 65520 + "Biobot Surgical Pte. Ltd.", // 65521 + "CVC Co.,Ltd.", // 65522 + "惠州市博实结科技有限公司 (Huizhou Boshijie Technology Co., Ltd.)", // 65523 + "Information Accessibility Institute", // 65524 + "SONACA S.A.", // 65525 + "Delos Cloud GmbH", // 65526 + "Zodiac", // 65527 + "CleverEnable", // 65528 + "Kitsos", // 65529 + "Vectanor", // 65530 + "烟台云电电子科技有限公司 (Yantai Yundian Electronics Technology Co., Ltd.)", // 65531 + "Code 626, Inc.", // 65532 + "Scottish Power Energy Networks", // 65533 + "Intersys Teknoloji Sanayi Ticaret A.Ş.", // 65534 + "Kuusamon yhteismetsä", // 65535 + "Kemijärven yhteismetsä", // 65536 + "Bilerro Solutions, S.L.U.", // 65537 + "SEnergy IoT Pvt Ltd", // 65538 + "Modern Urology, PLLC", // 65539 + "Indra Heera Network Private Limited", // 65540 + "BRADIN", // 65541 + "广东TCL深蓝技术有限公司 (TCL Digital Power Co. Ltd)", // 65542 + "G-Wayz Productions LLC,", // 65543 + "Digital Trust International", // 65544 + "Christophe Wolfhugel", // 65545 + "Testmar Muhendislik ve Dis Ticaret Ltd.", // 65546 + "HJ-Systems", // 65547 + "Energywave Technology Inc.", // 65548 + "Energonix", // 65549 + "HePoJ BV", // 65550 + "Tindango", // 65551 + "Nay San", // 65552 + "Signaliks", // 65553 + "Maschinenfabrik Gustav Eirich GmbH & Co KG", // 65554 + "Hensoldt AG", // 65555 + "Replit", // 65556 + "Sarvis Health", // 65557 + "Indra Heera Technology LLP", // 65558 + "University Hospital Southampton NHS Foundation Trust", // 65559 + "Szpital Miejski w Rudzie Śląskiej Sp. z o.o.", // 65560 + "Luminary Health Data Inc", // 65561 + "QNT Systemy Informatyczne Sp. z o.o.", // 65562 + "Wizmo, Inc.", // 65563 + "SkyFoundry", // 65564 + "Information Technology Orbit (Ito) B.V.", // 65565 + "JSC Smartcom", // 65566 + "Deutsche Rentenversicherung Oldenburg-Bremen", // 65567 + "Mosas Akilli Ulasim Teknolojileri A.S.", // 65568 + "河北高达智能装备股份有限公司", // 65569 + "LLC Sibneftekart", // 65570 + "Alliance For Empowerment Inc", // 65571 + "Ylem", // 65572 + "Magma Studio Ltd", // 65573 + "ID10T Academy", // 65574 + "TatumSecurity", // 65575 + "National Institute of Public Health", // 65576 + "beSIGN", // 65577 + "Nordsnipe", // 65578 + "TV2 AS", // 65579 + "CME Technologies LLC", // 65580 + "QuizBin", // 65581 + "Bjoern Meiér", // 65582 + "Helco Systems, LLC", // 65583 + "Yuanjia Liu", // 65584 + "Certus Limited", // 65585 + "Lanas ANZ", // 65586 + "OTA-NET", // 65587 + "9P2000.N Project", // 65588 + "Viking Electronics", // 65589 + "Stranto Business Solutions GmbH", // 65590 + "Maritime Silk Road Time Center Co., Ltd.", // 65591 + "Jiangsu Xingwang Time-frequency Technology Co., Ltd.", // 65592 + "ARNOLD Group", // 65593 + "SECLOUS GmbH", // 65594 + "TD Bank", // 65595 + "Chipus Microeletronica SA", // 65596 + "Cascade Federal Credit Union", // 65597 + "Alan Cui", // 65598 + "Breccia Infrastructure", // 65599 + "Hangzhou Lititi Technology Co., Ltd", // 65600 + "HMN Tech Co., Ltd.", // 65601 + "ATMOCE Australia PTY LTD", // 65602 + "Trexcel Corporation", // 65603 + "Ericsson - IT Managed Services", // 65604 + "OneWiseTech", // 65605 + "Gavin John", // 65606 + "Seaal", // 65607 + "NodeX", // 65608 + "NodeAI Diagnostics Corp.", // 65609 + "Rootist, LLC", // 65610 + "Turaco Labs Ltd", // 65611 + "ZK-PKI", // 65612 + "SYSBRAN", // 65613 + "Eric Carrozzo", // 65614 + "Guangdong CASSTK Co., Ltd.", // 65615 + "XDISC SA", // 65616 + "XIPE", // 65617 + "Carmentis SAS", // 65618 + "Opsens Solutions Inc", // 65619 + "Spectronic Denmark A/S", // 65620 + "Clever Cloud", // 65621 + "Axians HR", // 65622 + "PC-Wolf EDV-Service & -Notdienst", // 65623 + "Ordr, Inc", // 65624 + "Valkyrie Bioscience", // 65625 + "Vaunix Technology Corporation", // 65626 + "Anthropic, PBC.", // 65627 + "Decentralized Quantum Key Management Infrastructure", // 65628 + "xHSM", // 65629 + "Shenzhen Tocloud-iot technology Co.,Ltd", // 65630 + "Shenzhen Qin'an Technology Co., Ltd.", // 65631 + "Grupo Computación Modular Avanzada S.A.", // 65632 + "HBA International", // 65633 + "Swen Scholz", // 65634 + "Aplus Power Technology (Hangzhou) Co., Ltd.", // 65635 + "IOTRONICS", // 65636 + "Polska Agencja Rozwoju Przedsiębiorczości", // 65637 + "Port of Antwerp-Bruges", // 65638 + "KatBox GmbH", // 65639 + "Sicoob Credicaf", // 65640 + "DENQEN engineering SRL", // 65641 + "Stellar Quanta Labs", // 65642 + "Tours-événements", // 65643 + "LeSecure", // 65644 + "American ID Group", // 65645 + "Desistec ingeniería y servicios Ltda.", // 65646 + "Hagbergs Skogstransport AB", // 65647 + "City of Highland Village", // 65648 + "CMCC OTT-CDN", // 65649 + "WORKBASE JOINT STOCK COMPANY", // 65650 + "ITALGRANITI GROUP S.P.A.", // 65651 + "SurrealDB Ltd", // 65652 + "ADK Hospital", // 65653 + "Georgia Farm Bureau Mutual Insurance Company" // 65654 }; const char* global_enterprises_lookup(uint32_t value) diff -Nru wireshark-4.4.14/epan/manuf-data.c wireshark-4.4.15/epan/manuf-data.c --- wireshark-4.4.14/epan/manuf-data.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/manuf-data.c 2026-04-29 20:10:51.000000000 +0000 @@ -77,6 +77,7 @@ { { 0x20, 0x0A, 0x0D }, MA_M }, { { 0x20, 0x2B, 0xDA }, MA_M }, { { 0x20, 0x85, 0x93 }, MA_M }, + { { 0x20, 0xB3, 0x7F }, MA_M }, { { 0x20, 0xCE, 0x2A }, MA_M }, { { 0x24, 0x15, 0x10 }, MA_M }, { { 0x24, 0x4E, 0x7B }, MA_M }, @@ -120,6 +121,7 @@ { { 0x38, 0x3A, 0x21 }, MA_M }, { { 0x38, 0x73, 0xEA }, MA_M }, { { 0x38, 0xA8, 0xCD }, MA_M }, + { { 0x38, 0xB1, 0x4E }, MA_M }, { { 0x38, 0xB1, 0x9E }, MA_M }, { { 0x38, 0xB8, 0xEB }, MA_M }, { { 0x38, 0xF7, 0xCD }, MA_M }, @@ -150,6 +152,7 @@ { { 0x48, 0xE6, 0xC6 }, MA_M }, { { 0x4C, 0x4B, 0xF9 }, MA_M }, { { 0x4C, 0x65, 0xA8 }, MA_M }, + { { 0x4C, 0x6E, 0x44 }, MA_M }, { { 0x4C, 0x74, 0xA7 }, MA_M }, { { 0x4C, 0x91, 0x7A }, MA_M }, { { 0x4C, 0x93, 0xA6 }, MA_M }, @@ -237,6 +240,7 @@ { { 0x7C, 0xCB, 0xE2 }, MA_M }, { { 0x80, 0x02, 0xF4 }, MA_M }, { { 0x80, 0x0A, 0x80 }, MA_M }, + { { 0x80, 0x1D, 0x0D }, MA_M }, { { 0x80, 0x77, 0x86 }, MA_M }, { { 0x80, 0x7B, 0x85 }, MA_M }, { { 0x80, 0xA5, 0x79 }, MA_M }, @@ -302,6 +306,7 @@ { { 0xA4, 0x11, 0x63 }, MA_M }, { { 0xA4, 0x3B, 0xFA }, MA_M }, { { 0xA4, 0x4F, 0x29 }, MA_M }, + { { 0xA4, 0x4F, 0x3E }, MA_M }, { { 0xA4, 0x53, 0xEE }, MA_M }, { { 0xA4, 0x58, 0x0F }, MA_M }, { { 0xA4, 0x59, 0xD3 }, MA_M }, @@ -341,6 +346,7 @@ { { 0xC0, 0xEA, 0xC3 }, MA_M }, { { 0xC0, 0xFB, 0xF9 }, MA_M }, { { 0xC4, 0x7C, 0x8D }, MA_M }, + { { 0xC4, 0x82, 0x72 }, MA_M }, { { 0xC4, 0x83, 0x72 }, MA_M }, { { 0xC4, 0x95, 0x4D }, MA_M }, { { 0xC4, 0x98, 0x94 }, MA_M }, @@ -363,6 +369,7 @@ { { 0xCC, 0xC2, 0x61 }, MA_M }, { { 0xCC, 0xD3, 0x1E }, MA_M }, { { 0xCC, 0xD3, 0x9D }, MA_M }, + { { 0xCC, 0xE7, 0xDE }, MA_M }, { { 0xD0, 0x14, 0x11 }, MA_M }, { { 0xD0, 0x15, 0xBB }, MA_M }, { { 0xD0, 0x16, 0xF0 }, MA_M }, @@ -430,6 +437,7 @@ { { 0xF8, 0x7A, 0x39 }, MA_M }, { { 0xF8, 0x8A, 0x3C }, MA_M }, { { 0xF8, 0xB5, 0x68 }, MA_M }, + { { 0xF8, 0xC9, 0xD6 }, MA_M }, { { 0xFC, 0x61, 0x79 }, MA_M }, { { 0xFC, 0xA2, 0xDF }, MA_M }, { { 0xFC, 0xA4, 0x7A }, MA_M }, @@ -2398,7 +2406,7 @@ { { 0x00, 0x07, 0xA4 }, "GNNetcom", "GN Netcom Ltd." }, { { 0x00, 0x07, 0xA5 }, "YDK", "Y.D.K Co. Ltd." }, { { 0x00, 0x07, 0xA6 }, "LevitonManuf", "Leviton Manufacturing Co., Inc." }, - { { 0x00, 0x07, 0xA7 }, "AZ", "A-Z Inc." }, + { { 0x00, 0x07, 0xA7 }, "GloryTechnic", "Glory Technical Solutions Co., Ltd." }, { { 0x00, 0x07, 0xA8 }, "HaierGroupTe", "Haier Group Technologies Ltd" }, { { 0x00, 0x07, 0xA9 }, "Novasonics", "Novasonics" }, { { 0x00, 0x07, 0xAA }, "QuantumData", "Quantum Data Inc." }, @@ -3705,7 +3713,7 @@ { { 0x00, 0x0C, 0xDB }, "BrocadeCommu", "Brocade Communications Systems LLC" }, { { 0x00, 0x0C, 0xDC }, "BECSTechnolo", "BECS Technology, Inc" }, { { 0x00, 0x0C, 0xDD }, "AOStechnolog", "AOS technologies AG" }, - { { 0x00, 0x0C, 0xDE }, "ABBSTOTZKONT", "ABB STOTZ-KONTAKT GmbH" }, + { { 0x00, 0x0C, 0xDE }, "Abb", "Abb Ag" }, { { 0x00, 0x0C, 0xDF }, "JAIManufactu", "JAI Manufacturing" }, { { 0x00, 0x0C, 0xE0 }, "TrekDiagnost", "Trek Diagnostics Inc." }, { { 0x00, 0x0C, 0xE1 }, "OpenGroup", "The Open Group" }, @@ -5210,7 +5218,7 @@ { { 0x00, 0x12, 0xBC }, "Echolab", "Echolab LLC" }, { { 0x00, 0x12, 0xBD }, "AvantecManuf", "Avantec Manufacturing Limited" }, { { 0x00, 0x12, 0xBE }, "Astek", "Astek Corporation" }, - { { 0x00, 0x12, 0xBF }, "ArcadyanTech", "Arcadyan Technology Corporation" }, + { { 0x00, 0x12, 0xBF }, "Arcadyan", "Arcadyan Corporation" }, { { 0x00, 0x12, 0xC0 }, "HotLava", "HotLava Systems, Inc." }, { { 0x00, 0x12, 0xC1 }, "CheckPointSo", "Check Point Software Technologies Ltd." }, { { 0x00, 0x12, 0xC2 }, "ApexElectron", "Apex Electronics Factory" }, @@ -6329,7 +6337,7 @@ { { 0x00, 0x17, 0x1B }, "InnovationLa", "Innovation Lab Corp." }, { { 0x00, 0x17, 0x1C }, "NTMicroSyste", "NT MicroSystems, Inc." }, { { 0x00, 0x17, 0x1D }, "Digit", "Digit" }, - { { 0x00, 0x17, 0x1E }, "TheoBenning", "Theo Benning GmbH & Co. KG" }, + { { 0x00, 0x17, 0x1E }, "BenningElekt", "Benning Elektrotechnik und Elektronik GmbH & Co. KG" }, { { 0x00, 0x17, 0x1F }, "IMV", "IMV Corporation" }, { { 0x00, 0x17, 0x20 }, "ImageSensing", "Image Sensing Systems, Inc." }, { { 0x00, 0x17, 0x21 }, "FITRE", "FITRE S.p.A." }, @@ -7109,7 +7117,7 @@ { { 0x00, 0x1A, 0x27 }, "Ubistar", "Ubistar" }, { { 0x00, 0x1A, 0x28 }, "ASWTTaiwanBr", "ASWT Co., LTD. Taiwan Branch H.K." }, { { 0x00, 0x1A, 0x29 }, "JohnsonOutdo", "Johnson Outdoors Marine Electronics d/b/a Minnkota" }, - { { 0x00, 0x1A, 0x2A }, "ArcadyanTech", "Arcadyan Technology Corporation" }, + { { 0x00, 0x1A, 0x2A }, "Arcadyan", "Arcadyan Corporation" }, { { 0x00, 0x1A, 0x2B }, "AyecomTechno", "Ayecom Technology Co., Ltd." }, { { 0x00, 0x1A, 0x2C }, "SATEC", "SATEC Co.,LTD" }, { { 0x00, 0x1A, 0x2D }, "NavvoGroup", "The Navvo Group" }, @@ -7859,7 +7867,7 @@ { { 0x00, 0x1D, 0x16 }, "Sfr", "Sfr" }, { { 0x00, 0x1D, 0x17 }, "DigitalSky", "Digital Sky Corporation" }, { { 0x00, 0x1D, 0x18 }, "PowerInnovat", "Power Innovation GmbH" }, - { { 0x00, 0x1D, 0x19 }, "ArcadyanTech", "Arcadyan Technology Corporation" }, + { { 0x00, 0x1D, 0x19 }, "Arcadyan", "Arcadyan Corporation" }, { { 0x00, 0x1D, 0x1A }, "OvisLink", "OvisLink S.A." }, { { 0x00, 0x1D, 0x1B }, "SangeanElect", "Sangean Electronics Inc." }, { { 0x00, 0x1D, 0x1C }, "Gennet", "Gennet s.a." }, @@ -9378,7 +9386,7 @@ { { 0x00, 0x23, 0x05 }, "Cisco", "Cisco Systems, Inc" }, { { 0x00, 0x23, 0x06 }, "Alpsalpine", "Alpsalpine Co,.Ltd" }, { { 0x00, 0x23, 0x07 }, "FutureInnova", "Future Innovation Tech Co.,Ltd" }, - { { 0x00, 0x23, 0x08 }, "ArcadyanTech", "Arcadyan Technology Corporation" }, + { { 0x00, 0x23, 0x08 }, "Arcadyan", "Arcadyan Corporation" }, { { 0x00, 0x23, 0x09 }, "JanamTechnol", "Janam Technologies LLC" }, { { 0x00, 0x23, 0x0A }, "ARBURG", "ARBURG GmbH & Co KG" }, { { 0x00, 0x23, 0x0B }, "Commscope", "Commscope" }, @@ -9797,7 +9805,7 @@ { { 0x00, 0x24, 0xAB }, "A7Engineerin", "A7 Engineering, Inc." }, { { 0x00, 0x24, 0xAC }, "DPtechTechno", "Hangzhou DPtech Technologies Co., Ltd." }, { { 0x00, 0x24, 0xAD }, "AdolfThies", "Adolf Thies Gmbh & Co. KG" }, - { { 0x00, 0x24, 0xAE }, "IdemiaFrance", "Idemia France Sas" }, + { { 0x00, 0x24, 0xAE }, "IdemiaPublic", "Idemia Public Security France" }, { { 0x00, 0x24, 0xAF }, "DishTechnolo", "Dish Technologies Corp" }, { { 0x00, 0x24, 0xB0 }, "Esab", "Esab Ab" }, { { 0x00, 0x24, 0xB1 }, "CoulombTechn", "Coulomb Technologies" }, @@ -10207,7 +10215,7 @@ { { 0x00, 0x26, 0x48 }, "Emitech", "Emitech Corp." }, { { 0x00, 0x26, 0x4A }, "Apple", "Apple, Inc." }, { { 0x00, 0x26, 0x4C }, "DigiVisionTe", "Shanghai DigiVision Technology Co., Ltd." }, - { { 0x00, 0x26, 0x4D }, "ArcadyanTech", "Arcadyan Technology Corporation" }, + { { 0x00, 0x26, 0x4D }, "Arcadyan", "Arcadyan Corporation" }, { { 0x00, 0x26, 0x4E }, "r2p", "r2p GmbH" }, { { 0x00, 0x26, 0x4F }, "Krüger&Gothe", "Krüger &Gothe GmbH" }, { { 0x00, 0x26, 0x50 }, "2Wire", "2Wire Inc" }, @@ -10732,6 +10740,7 @@ { { 0x00, 0x3A, 0xAF }, "BlueBit", "BlueBit Ltd." }, { { 0x00, 0x3C, 0x10 }, "Cisco", "Cisco Systems, Inc" }, { { 0x00, 0x3C, 0x84 }, "SiliconLabor", "Silicon Laboratories" }, + { { 0x00, 0x3C, 0xB7 }, "AzureWaveTec", "AzureWave Technology Inc." }, { { 0x00, 0x3C, 0xC5 }, "WONWOOEngine", "WONWOO Engineering Co., Ltd" }, { { 0x00, 0x3D, 0x41 }, "HattelandCom", "Hatteland Computer AS" }, { { 0x00, 0x3D, 0xE1 }, "HuaweiDevice", "Huawei Device Co., Ltd." }, @@ -11594,6 +11603,7 @@ { { 0x00, 0x76, 0x3D }, "Veea", "Veea" }, { { 0x00, 0x76, 0x86 }, "Cisco", "Cisco Systems, Inc" }, { { 0x00, 0x76, 0xB1 }, "SomfyProtect", "Somfy-Protect By Myfox SAS" }, + { { 0x00, 0x76, 0xB6 }, "FordMotor", "Ford Motor Company" }, { { 0x00, 0x77, 0x8D }, "Cisco", "Cisco Systems, Inc" }, { { 0x00, 0x77, 0xE4 }, "NokiaSolutio", "Nokia Solutions and Networks GmbH & Co. KG" }, { { 0x00, 0x78, 0x39 }, "Nokia", "Nokia" }, @@ -11608,6 +11618,7 @@ { { 0x00, 0x7D, 0xFA }, "VolkswagenGr", "Volkswagen Group of America" }, { { 0x00, 0x7E, 0x56 }, "ChinaDragonT", "China Dragon Technology Limited" }, { { 0x00, 0x7E, 0x95 }, "Cisco", "Cisco Systems, Inc" }, + { { 0x00, 0x7F, 0x1D }, "FantasiaTrad", "Fantasia Trading LLC" }, { { 0x00, 0x7F, 0x28 }, "ActiontecEle", "Actiontec Electronics, Inc" }, { { 0x00, 0x80, 0x00 }, "Multitech", "Multitech Systems, Inc." }, { { 0x00, 0x80, 0x01 }, "Periphonics", "Periphonics Corporation" }, @@ -12836,6 +12847,7 @@ { { 0x00, 0xCB, 0x7A }, "VantivaUSA", "Vantiva USA LLC" }, { { 0x00, 0xCB, 0xB4 }, "AtekoPhotoel", "Shenzhen Ateko Photoelectricity Co.,Ltd" }, { { 0x00, 0xCB, 0xBD }, "CambridgeBro", "Cambridge Broadband Networks Group" }, + { { 0x00, 0xCC, 0x05 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x00, 0xCC, 0x34 }, "JuniperNetwo", "Juniper Networks" }, { { 0x00, 0xCC, 0x3F }, "UniversalEle", "Universal Electronics, Inc." }, { { 0x00, 0xCC, 0xFC }, "Cisco", "Cisco Systems, Inc" }, @@ -13514,6 +13526,7 @@ { { 0x04, 0x1B, 0x6D }, "LGElectronic", "LG Electronics (Mobile Communications)" }, { { 0x04, 0x1B, 0x94 }, "HostMobility", "Host Mobility AB" }, { { 0x04, 0x1B, 0xBA }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, + { { 0x04, 0x1C, 0x6C }, "Intel", "Intel Corporate" }, { { 0x04, 0x1C, 0xDB }, "SibaService", "Siba Service" }, { { 0x04, 0x1D, 0x10 }, "DreamWare", "Dream Ware Inc." }, { { 0x04, 0x1D, 0xC7 }, "zte", "zte corporation" }, @@ -13676,6 +13689,7 @@ { { 0x04, 0x7E, 0x23 }, "ChinaMobileI", "China Mobile IOT Company Limited" }, { { 0x04, 0x7E, 0x4A }, "moobox", "moobox CO., Ltd." }, { { 0x04, 0x7F, 0x0E }, "BarrotTechno", "Barrot Technology Co.,LTD" }, + { { 0x04, 0x80, 0x1A }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0x04, 0x80, 0xA7 }, "TianGangMicr", "ShenZhen TianGang Micro Technology CO.LTD" }, { { 0x04, 0x81, 0x9B }, "SkyUk", "Sky Uk Limited" }, { { 0x04, 0x81, 0xAE }, "Clack", "Clack Corporation" }, @@ -14191,6 +14205,7 @@ { { 0x08, 0x62, 0x02 }, "Apple", "Apple, Inc." }, { { 0x08, 0x62, 0x66 }, "ASUSTekCOMPU", "ASUSTek COMPUTER INC." }, { { 0x08, 0x63, 0x61 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, + { { 0x08, 0x64, 0x80 }, "BlackSesameT", "Black Sesame Technologies Co., Ltd" }, { { 0x08, 0x65, 0x18 }, "Apple", "Apple, Inc." }, { { 0x08, 0x65, 0xF0 }, "JMZengge", "JM Zengge Co., Ltd" }, { { 0x08, 0x66, 0x1F }, "PaloAltoNetw", "Palo Alto Networks" }, @@ -14234,6 +14249,7 @@ { { 0x08, 0x7C, 0x43 }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0x08, 0x7C, 0xBE }, "Quintic", "Quintic Corp." }, { { 0x08, 0x7D, 0x21 }, "Altasectechn", "Altasec technology corporation" }, + { { 0x08, 0x7D, 0x60 }, "SAMJIN", "SAMJIN Co.ltd" }, { { 0x08, 0x7E, 0x64 }, "VantivaUSA", "Vantiva USA LLC" }, { { 0x08, 0x7F, 0x98 }, "vivoMobileCo", "vivo Mobile Communication Co., Ltd." }, { { 0x08, 0x80, 0x39 }, "CiscoSPVTG", "Cisco SPVTG" }, @@ -14302,6 +14318,7 @@ { { 0x08, 0xAA, 0x89 }, "zte", "zte corporation" }, { { 0x08, 0xAC, 0xA5 }, "BenuVideo", "Benu Video, Inc." }, { { 0x08, 0xAC, 0xC4 }, "FMTech", "FMTech" }, + { { 0x08, 0xAD, 0x0A }, "Espressif", "Espressif Inc." }, { { 0x08, 0xAE, 0xD6 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x08, 0xAF, 0x78 }, "TotusSolutio", "Totus Solutions, Inc." }, { { 0x08, 0xB0, 0x55 }, "AskeyCompute", "Askey Computer Corp" }, @@ -14352,6 +14369,7 @@ { { 0x08, 0xCC, 0xA7 }, "Cisco", "Cisco Systems, Inc" }, { { 0x08, 0xCD, 0x9B }, "samtecautomo", "samtec automotive electronics & software GmbH" }, { { 0x08, 0xCE, 0x94 }, "EMMicroelect", "EM Microelectronic" }, + { { 0x08, 0xD0, 0x1E }, "JuniperNetwo", "Juniper Networks" }, { { 0x08, 0xD0, 0x9F }, "Cisco", "Cisco Systems, Inc" }, { { 0x08, 0xD0, 0xB7 }, "QingdaoHisen", "Qingdao Hisense Communications Co.,Ltd." }, { { 0x08, 0xD1, 0xF9 }, "Espressif", "Espressif Inc." }, @@ -14367,6 +14385,7 @@ { { 0x08, 0xD8, 0x33 }, "RFTechnology", "Shenzhen RF Technology Co., Ltd" }, { { 0x08, 0xD9, 0x45 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x08, 0xDD, 0x03 }, "OppoMobileTe", "Guangdong Oppo Mobile Telecommunications Corp.,Ltd" }, + { { 0x08, 0xDD, 0x82 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x08, 0xDD, 0xEB }, "SiliconLabor", "Silicon Laboratories" }, { { 0x08, 0xDF, 0x1F }, "Bose", "Bose Corporation" }, { { 0x08, 0xDF, 0xCB }, "SystromeNetw", "Systrome Networks" }, @@ -14445,6 +14464,7 @@ { { 0x0C, 0x01, 0xC8 }, "DENSO", "DENSO Co.,Ltd" }, { { 0x0C, 0x01, 0xDB }, "Infinixmobil", "Infinix mobility limited" }, { { 0x0C, 0x02, 0x27 }, "VantivaUSA", "Vantiva USA LLC" }, + { { 0x0C, 0x02, 0x5B }, "MicrochipTec", "Microchip Technology Inc." }, { { 0x0C, 0x02, 0xBD }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x0C, 0x04, 0x00 }, "Jantardoo", "Jantar d.o.o." }, { { 0x0C, 0x05, 0x35 }, "Juniper", "Juniper Systems" }, @@ -14831,6 +14851,7 @@ { { 0x0C, 0xFD, 0x37 }, "SUSELinux", "SUSE Linux GmbH" }, { { 0x0C, 0xFE, 0x45 }, "SonyInteract", "Sony Interactive Entertainment Inc." }, { { 0x0C, 0xFE, 0x7B }, "VantivaUSA", "Vantiva USA LLC" }, + { { 0x0C, 0xFE, 0xE5 }, "TexasInstrum", "Texas Instruments" }, { { 0x10, 0x00, 0x00 }, "Private", "Private" }, { { 0x10, 0x00, 0x20 }, "Apple", "Apple, Inc." }, { { 0x10, 0x00, 0x3B }, "Espressif", "Espressif Inc." }, @@ -14939,6 +14960,7 @@ { { 0x10, 0x39, 0x17 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x10, 0x39, 0x4E }, "Hisensebroad", "Hisense broadband multimedia technology Co.,Ltd" }, { { 0x10, 0x39, 0xE9 }, "JuniperNetwo", "Juniper Networks" }, + { { 0x10, 0x3A, 0x5D }, "Emerson", "Emerson" }, { { 0x10, 0x3B, 0x59 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x10, 0x3C, 0x59 }, "zte", "zte corporation" }, { { 0x10, 0x3D, 0x0A }, "HuiZhouGaosh", "Hui Zhou Gaoshengda Technology Co.,LTD" }, @@ -14961,6 +14983,7 @@ { { 0x10, 0x47, 0x80 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x10, 0x47, 0xE7 }, "YOUHUATechno", "Shenzhen YOUHUA Technology Co., Ltd" }, { { 0x10, 0x48, 0xB1 }, "DuokanTechno", "Beijing Duokan Technology Limited" }, + { { 0x10, 0x49, 0x0E }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x10, 0x49, 0x63 }, "Harting", "Harting K.K." }, { { 0x10, 0x4A, 0x7D }, "Intel", "Intel Corporate" }, { { 0x10, 0x4B, 0x46 }, "MitsubishiEl", "Mitsubishi Electric Corporation" }, @@ -15093,6 +15116,7 @@ { { 0x10, 0x98, 0x5F }, "InventusPowe", "Inventus Power Eletronica do Brasil LTDA" }, { { 0x10, 0x98, 0xC3 }, "MurataManufa", "Murata Manufacturing Co., Ltd." }, { { 0x10, 0x9A, 0xB9 }, "Tosibox", "Tosibox Oy" }, + { { 0x10, 0x9A, 0xBA }, "Intel", "Intel Corporate" }, { { 0x10, 0x9A, 0xDD }, "Apple", "Apple, Inc." }, { { 0x10, 0x9C, 0x70 }, "PrusaResearc", "Prusa Research s.r.o." }, { { 0x10, 0x9D, 0x7A }, "HuaweiDevice", "Huawei Device Co., Ltd." }, @@ -15161,6 +15185,7 @@ { { 0x10, 0xC0, 0x7C }, "BlurayDiscAs", "Blu-ray Disc Association" }, { { 0x10, 0xC0, 0xD5 }, "HOLOEYEPhoto", "HOLOEYE Photonics AG" }, { { 0x10, 0xC1, 0x72 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, + { { 0x10, 0xC1, 0x97 }, "XiaomiCommun", "Xiaomi Communications Co Ltd" }, { { 0x10, 0xC2, 0x2F }, "ChinaEntropy", "China Entropy Co., Ltd." }, { { 0x10, 0xC2, 0x5A }, "VantivaUSA", "Vantiva USA LLC" }, { { 0x10, 0xC2, 0xBA }, "UTT", "UTT Co., Ltd." }, @@ -15223,6 +15248,7 @@ { { 0x10, 0xE4, 0xAF }, "Apr", "Apr, Llc" }, { { 0x10, 0xE4, 0xC2 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x10, 0xE6, 0x6B }, "KaonBroadban", "Kaon Broadband CO., LTD." }, + { { 0x10, 0xE6, 0x76 }, "Cisco", "Cisco Systems, Inc" }, { { 0x10, 0xE6, 0x8F }, "KwangsungEle", "Kwangsung Electronics Korea Co.,Ltd." }, { { 0x10, 0xE6, 0xAE }, "SourceTechno", "Source Technologies, LLC" }, { { 0x10, 0xE7, 0x7A }, "STMicrolectr", "STMicrolectronics International NV" }, @@ -15241,6 +15267,7 @@ { { 0x10, 0xF0, 0x05 }, "Intel", "Intel Corporate" }, { { 0x10, 0xF0, 0x68 }, "RuckusWirele", "Ruckus Wireless" }, { { 0x10, 0xF1, 0x63 }, "Tnk", "Tnk Co.,Ltd" }, + { { 0x10, 0xF1, 0xC7 }, "TachyonNetwo", "Tachyon Networks Inc" }, { { 0x10, 0xF1, 0xF2 }, "LGElectronic", "LG Electronics (Mobile Communications)" }, { { 0x10, 0xF3, 0x11 }, "Cisco", "Cisco Systems, Inc" }, { { 0x10, 0xF3, 0xDB }, "Gridco", "Gridco Systems, Inc." }, @@ -15277,6 +15304,7 @@ { { 0x14, 0x08, 0x08 }, "Espressif", "Espressif Inc." }, { { 0x14, 0x09, 0xB4 }, "zte", "zte corporation" }, { { 0x14, 0x09, 0xDC }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, + { { 0x14, 0x0A, 0x02 }, "BilianElectr", "Shenzhen Bilian Electronic Co.,Ltd" }, { { 0x14, 0x0A, 0x29 }, "Tiinlab", "Tiinlab Corporation" }, { { 0x14, 0x0A, 0xC5 }, "AmazonTechno", "Amazon Technologies Inc." }, { { 0x14, 0x0B, 0x9E }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, @@ -15363,6 +15391,7 @@ { { 0x14, 0x37, 0x19 }, "PTPrakarsaVi", "PT Prakarsa Visi Valutama" }, { { 0x14, 0x37, 0x3B }, "PROCOM", "PROCOM Systems" }, { { 0x14, 0x37, 0x5E }, "Symbotic", "Symbotic LLC" }, + { { 0x14, 0x38, 0xFA }, "MotorolaMobi", "Motorola Mobility LLC, a Lenovo Company" }, { { 0x14, 0x39, 0x2F }, "Lear", "Lear" }, { { 0x14, 0x3A, 0x9A }, "HonHaiPrecis", "Hon Hai Precision Industry Co.,LTD" }, { { 0x14, 0x3A, 0xEA }, "Dynapower", "Dynapower Company LLC" }, @@ -15372,6 +15401,7 @@ { { 0x14, 0x3D, 0xF2 }, "ShidaiHongyu", "Beijing Shidai Hongyuan Network Communication Co.,Ltd" }, { { 0x14, 0x3E, 0x60 }, "Nokia", "Nokia" }, { { 0x14, 0x3E, 0xBF }, "zte", "zte corporation" }, + { { 0x14, 0x3E, 0xC2 }, "Intel", "Intel Corporate" }, { { 0x14, 0x3F, 0x27 }, "Noccela", "Noccela Oy" }, { { 0x14, 0x3F, 0xA6 }, "SonyHomeEnte", "Sony Home Entertainment&Sound Products Inc" }, { { 0x14, 0x3F, 0xC3 }, "SnapAV", "SnapAV" }, @@ -15865,7 +15895,7 @@ { { 0x18, 0x82, 0x19 }, "AlibabaCloud", "Alibaba Cloud Computing Ltd." }, { { 0x18, 0x82, 0x8C }, "Arcadyan", "Arcadyan Corporation" }, { { 0x18, 0x83, 0x31 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, - { { 0x18, 0x83, 0xBF }, "ArcadyanTech", "Arcadyan Technology Corporation" }, + { { 0x18, 0x83, 0xBF }, "Arcadyan", "Arcadyan Corporation" }, { { 0x18, 0x84, 0x10 }, "CoreTrust", "CoreTrust Inc." }, { { 0x18, 0x84, 0xC1 }, "GuangzhouShi", "Guangzhou Shiyuan Electronic Technology Company Limited" }, { { 0x18, 0x86, 0x37 }, "IngramMicroS", "Ingram Micro Services" }, @@ -15880,6 +15910,7 @@ { { 0x18, 0x89, 0xCF }, "TecnoMobile", "Tecno Mobile Limited" }, { { 0x18, 0x89, 0xDF }, "Omnivision", "Omnivision" }, { { 0x18, 0x8A, 0x6A }, "AVProGlobalH", "AVPro Global Hldgs" }, + { { 0x18, 0x8A, 0xF1 }, "Ledvance", "Ledvance, Llc" }, { { 0x18, 0x8B, 0x0E }, "Espressif", "Espressif Inc." }, { { 0x18, 0x8B, 0x15 }, "ZhongRuiJing", "ShenZhen ZhongRuiJing Technology co.,LTD" }, { { 0x18, 0x8B, 0x45 }, "Cisco", "Cisco Systems, Inc" }, @@ -16001,6 +16032,7 @@ { { 0x18, 0xD9, 0x8F }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0x18, 0xD9, 0xEF }, "Shuttle", "Shuttle Inc." }, { { 0x18, 0xDB, 0xF2 }, "Dell", "Dell Inc." }, + { { 0x18, 0xDC, 0x12 }, "SiliconLabor", "Silicon Laboratories" }, { { 0x18, 0xDC, 0x56 }, "YulongComput", "Yulong Computer Telecommunication Scientific (Shenzhen) Co.,Ltd" }, { { 0x18, 0xDE, 0x50 }, "TuyaSmart", "Tuya Smart Inc." }, { { 0x18, 0xDE, 0xD7 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, @@ -16041,6 +16073,7 @@ { { 0x18, 0xF2, 0x92 }, "Shannon", "Shannon Systems" }, { { 0x18, 0xF4, 0x6A }, "HonHaiPrecis", "Hon Hai Precision Ind. Co.,Ltd." }, { { 0x18, 0xF4, 0x6B }, "TelenorConne", "Telenor Connexion AB" }, + { { 0x18, 0xF5, 0x8B }, "GlobalReachT", "GlobalReach Technology EMEA Ltd" }, { { 0x18, 0xF6, 0x43 }, "Apple", "Apple, Inc." }, { { 0x18, 0xF6, 0x50 }, "MultimediaPa", "Multimedia Pacific Limited" }, { { 0x18, 0xF6, 0x97 }, "AxiomMemoryS", "Axiom Memory Solutions, Inc." }, @@ -16113,6 +16146,7 @@ { { 0x1C, 0x22, 0x85 }, "SerratureMer", "Serrature Meroni SpA" }, { { 0x1C, 0x23, 0x2C }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x1C, 0x23, 0x4F }, "EDMIEurope", "EDMI Europe Ltd" }, + { { 0x1C, 0x23, 0xA2 }, "FRITZ!Techno", "FRITZ! Technology GmbH" }, { { 0x1C, 0x24, 0xCD }, "AskeyCompute", "Askey Computer Corp" }, { { 0x1C, 0x24, 0xEB }, "Burlywood", "Burlywood" }, { { 0x1C, 0x25, 0xE1 }, "ChinaMobileI", "China Mobile IOT Company Limited" }, @@ -16123,6 +16157,7 @@ { { 0x1C, 0x2A, 0xA3 }, "HongRuiOptic", "Shenzhen HongRui Optical Technology Co., Ltd." }, { { 0x1C, 0x2A, 0xB0 }, "XiaomiElectr", "Beijing Xiaomi Electronics Co.,Ltd" }, { { 0x1C, 0x2C, 0xE0 }, "MountainView", "Shanghai Mountain View Silicon" }, + { { 0x1C, 0x2D, 0x60 }, "ExtremeNetwo", "Extreme Networks Headquarters" }, { { 0x1C, 0x2E, 0x1B }, "SuzhouTremen", "Suzhou Tremenet Communication Technology Co., Ltd." }, { { 0x1C, 0x2F, 0xA2 }, "GuangzhouShi", "Guangzhou Shiyuan Electronic Technology Company Limited" }, { { 0x1C, 0x30, 0x03 }, "HewlettPacka", "Hewlett Packard Enterprise" }, @@ -16199,6 +16234,7 @@ { { 0x1C, 0x5A, 0x0B }, "Tegile", "Tegile Systems" }, { { 0x1C, 0x5A, 0x3E }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x1C, 0x5A, 0x6B }, "PhilipsElect", "Philips Electronics Nederland BV" }, + { { 0x1C, 0x5B, 0xA2 }, "HpGlobalesMe", "Hp Globales Mexico" }, { { 0x1C, 0x5C, 0x55 }, "PRIMACinema", "PRIMA Cinema, Inc" }, { { 0x1C, 0x5C, 0x60 }, "BelzonTechno", "Shenzhen Belzon Technology Co.,LTD." }, { { 0x1C, 0x5C, 0xF2 }, "Apple", "Apple, Inc." }, @@ -16353,6 +16389,7 @@ { { 0x1C, 0xB8, 0xBA }, "XiamenLeelen", "Xiamen Leelen Technology Co., Ltd" }, { { 0x1C, 0xB9, 0xC4 }, "RuckusWirele", "Ruckus Wireless" }, { { 0x1C, 0xBA, 0x8C }, "TexasInstrum", "Texas Instruments" }, + { { 0x1C, 0xBA, 0xB8 }, "vivoMobileCo", "vivo Mobile Communication Co., Ltd." }, { { 0x1C, 0xBB, 0xA8 }, "OJSCUfimskiy", "OJSC \"Ufimskiy Zavod \"Promsvyaz\"" }, { { 0x1C, 0xBC, 0xEC }, "silextechnol", "silex technology, Inc." }, { { 0x1C, 0xBD, 0x0E }, "AmplifiedEng", "Amplified Engineering Pty Ltd" }, @@ -16369,7 +16406,7 @@ { { 0x1C, 0xC3, 0xAB }, "Espressif", "Espressif Inc." }, { { 0x1C, 0xC3, 0xEB }, "OppoMobileTe", "Guangdong Oppo Mobile Telecommunications Corp.,Ltd" }, { { 0x1C, 0xC5, 0x86 }, "AbsoluteAcou", "Absolute Acoustics" }, - { { 0x1C, 0xC6, 0x3C }, "ArcadyanTech", "Arcadyan Technology Corporation" }, + { { 0x1C, 0xC6, 0x3C }, "Arcadyan", "Arcadyan Corporation" }, { { 0x1C, 0xC7, 0x2D }, "HuapuDigital", "Shenzhen Huapu Digital CO.,Ltd" }, { { 0x1C, 0xC8, 0xC1 }, "HongKongYiTo", "HongKong YiTong Technology Ltd." }, { { 0x1C, 0xC9, 0x92 }, "HonorDevice", "Honor Device Co., Ltd." }, @@ -16400,6 +16437,7 @@ { { 0x1C, 0xE1, 0x92 }, "Qisda", "Qisda Corporation" }, { { 0x1C, 0xE2, 0x09 }, "Apple", "Apple, Inc." }, { { 0x1C, 0xE2, 0xCC }, "TexasInstrum", "Texas Instruments" }, + { { 0x1C, 0xE4, 0xDD }, "TechnicolorT", "Technicolor (China) Technology Co., Ltd." }, { { 0x1C, 0xE5, 0x04 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x1C, 0xE5, 0x7F }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x1C, 0xE6, 0x1D }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, @@ -16554,6 +16592,7 @@ { { 0x20, 0x40, 0x6A }, "AMPAKTechnol", "AMPAK Technology,Inc." }, { { 0x20, 0x41, 0x5A }, "Smartehdoo", "Smarteh d.o.o." }, { { 0x20, 0x41, 0x81 }, "ESYSEEmbedde", "ESYSE GmbH Embedded Systems Engineering" }, + { { 0x20, 0x41, 0xBC }, "ANYElectroni", "ANY Electronics Co., Ltd" }, { { 0x20, 0x43, 0xA8 }, "Espressif", "Espressif Inc." }, { { 0x20, 0x44, 0x3A }, "SchneiderEle", "Schneider Electric Asia Pacific Ltd" }, { { 0x20, 0x44, 0x41 }, "RemoteSoluti", "Remote Solution" }, @@ -16576,6 +16615,7 @@ { { 0x20, 0x4E, 0x71 }, "JuniperNetwo", "Juniper Networks" }, { { 0x20, 0x4E, 0x7F }, "Netgear", "Netgear" }, { { 0x20, 0x4E, 0xF6 }, "AzureWaveTec", "AzureWave Technology Inc." }, + { { 0x20, 0x50, 0x0D }, "Espressif", "Espressif Inc." }, { { 0x20, 0x50, 0x0F }, "FiberGroep", "Fiber Groep B.V." }, { { 0x20, 0x50, 0xE7 }, "AMPAKTechnol", "AMPAK Technology,Inc." }, { { 0x20, 0x51, 0xF5 }, "EardaTechnol", "Earda Technologies co Ltd" }, @@ -16693,6 +16733,7 @@ { { 0x20, 0xA2, 0x00 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x20, 0xA2, 0xE4 }, "Apple", "Apple, Inc." }, { { 0x20, 0xA2, 0xE7 }, "LeeDickens", "Lee-Dickens Ltd" }, + { { 0x20, 0xA3, 0x66 }, "vivoMobileCo", "vivo Mobile Communication Co., Ltd." }, { { 0x20, 0xA5, 0xCB }, "Apple", "Apple, Inc." }, { { 0x20, 0xA6, 0x0C }, "XiaomiCommun", "Xiaomi Communications Co Ltd" }, { { 0x20, 0xA6, 0x80 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, @@ -16781,6 +16822,7 @@ { { 0x20, 0xE2, 0xA8 }, "Apple", "Apple, Inc." }, { { 0x20, 0xE4, 0x07 }, "Spark", "Spark srl" }, { { 0x20, 0xE4, 0x6F }, "vivoMobileCo", "vivo Mobile Communication Co., Ltd." }, + { { 0x20, 0xE5, 0x25 }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0x20, 0xE5, 0x2A }, "Netgear", "Netgear" }, { { 0x20, 0xE5, 0x64 }, "Commscope", "Commscope" }, { { 0x20, 0xE5, 0x9B }, "PanasonicAut", "Panasonic Automotive Systems" }, @@ -16916,6 +16958,7 @@ { { 0x24, 0x33, 0x6C }, "Private", "Private" }, { { 0x24, 0x34, 0x08 }, "EdgecoreAmer", "Edgecore Americas Networking Corporation" }, { { 0x24, 0x35, 0xCC }, "ZhongshanSci", "Zhongshan Scinan Internet of Things Co.,Ltd." }, + { { 0x24, 0x36, 0x72 }, "AMPAKTechnol", "AMPAK Technology Inc." }, { { 0x24, 0x36, 0xDA }, "Cisco", "Cisco Systems, Inc" }, { { 0x24, 0x37, 0x4C }, "CiscoSPVTG", "Cisco SPVTG" }, { { 0x24, 0x37, 0xEF }, "EMCElectroni", "EMC Electronic Media Communication SA" }, @@ -16947,6 +16990,7 @@ { { 0x24, 0x4C, 0x07 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x24, 0x4C, 0xAB }, "Espressif", "Espressif Inc." }, { { 0x24, 0x4C, 0xE3 }, "AmazonTechno", "Amazon Technologies Inc." }, + { { 0x24, 0x4E, 0xCD }, "SagemcomBroa", "Sagemcom Broadband SAS" }, { { 0x24, 0x4F, 0x1D }, "iRule", "iRule LLC" }, { { 0x24, 0x50, 0x6F }, "ThinkcarTech", "Thinkcar Tech Co.,Ltd." }, { { 0x24, 0x52, 0x6A }, "ZhejiangDahu", "Zhejiang Dahua Technology Co., Ltd." }, @@ -16986,6 +17030,7 @@ { { 0x24, 0x64, 0xEF }, "CygSunri", "Cyg Sunri Co.,Ltd." }, { { 0x24, 0x65, 0x11 }, "AVM", "AVM GmbH" }, { { 0x24, 0x65, 0xE1 }, "Ciena", "Ciena Corporation" }, + { { 0x24, 0x68, 0x00 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x24, 0x68, 0x30 }, "Shokzhear", "Shenzhen Shokzhear Co., Ltd" }, { { 0x24, 0x68, 0x80 }, "Braveridge", "Braveridge.co.,ltd." }, { { 0x24, 0x68, 0xB0 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, @@ -17029,6 +17074,7 @@ { { 0x24, 0x7D, 0x4D }, "TexasInstrum", "Texas Instruments" }, { { 0x24, 0x7E, 0x12 }, "Cisco", "Cisco Systems, Inc" }, { { 0x24, 0x7E, 0x51 }, "zte", "zte corporation" }, + { { 0x24, 0x7E, 0x7F }, "DFendSolutio", "D-Fend Solutions A.D Ltd" }, { { 0x24, 0x7F, 0x20 }, "SagemcomBroa", "Sagemcom Broadband SAS" }, { { 0x24, 0x7F, 0x3C }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x24, 0x80, 0x00 }, "WestcontrolA", "Westcontrol AS" }, @@ -17108,6 +17154,7 @@ { { 0x24, 0xB8, 0xD2 }, "OpzoonTechno", "Opzoon Technology Co.,Ltd." }, { { 0x24, 0xBA, 0x13 }, "RisoKagaku", "Riso Kagaku Corporation" }, { { 0x24, 0xBA, 0x30 }, "TechnicalCon", "Technical Consumer Products, Inc." }, + { { 0x24, 0xBA, 0x79 }, "NewH3CTechno", "New H3C Technologies Co., Ltd" }, { { 0x24, 0xBB, 0xC1 }, "AbsoluteAnal", "Absolute Analysis" }, { { 0x24, 0xBB, 0xC9 }, "SuperElectro", "Shenzhen SuperElectron Technology Co.,Ltd." }, { { 0x24, 0xBC, 0x82 }, "DaliWireless", "Dali Wireless, Inc." }, @@ -17237,6 +17284,7 @@ { { 0x28, 0x02, 0x44 }, "Apple", "Apple, Inc." }, { { 0x28, 0x02, 0x45 }, "KonzeSystemT", "Konze System Technology Co.,Ltd." }, { { 0x28, 0x02, 0xD8 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, + { { 0x28, 0x04, 0x7A }, "WNC", "WNC Corporation" }, { { 0x28, 0x04, 0xC6 }, "WananHongshe", "Wanan Hongsheng Electronic Co.Ltd" }, { { 0x28, 0x04, 0xE0 }, "FermaxElectr", "Fermax Electronica S.A.U." }, { { 0x28, 0x05, 0x2E }, "Dematic", "Dematic Corp" }, @@ -17386,6 +17434,7 @@ { { 0x28, 0x66, 0xE3 }, "AzureWaveTec", "AzureWave Technology Inc." }, { { 0x28, 0x68, 0x47 }, "SiliconLabor", "Silicon Laboratories" }, { { 0x28, 0x68, 0xD2 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, + { { 0x28, 0x69, 0x26 }, "OPTOKON", "OPTOKON, a.s." }, { { 0x28, 0x6A, 0xB8 }, "Apple", "Apple, Inc." }, { { 0x28, 0x6A, 0xBA }, "Apple", "Apple, Inc." }, { { 0x28, 0x6B, 0x35 }, "Intel", "Intel Corporate" }, @@ -17433,7 +17482,9 @@ { { 0x28, 0x84, 0xFA }, "SHARP", "SHARP Corporation" }, { { 0x28, 0x85, 0x2D }, "TouchNetwork", "Touch Networks" }, { { 0x28, 0x85, 0xBB }, "ZenExim", "Zen Exim Pvt. Ltd." }, + { { 0x28, 0x87, 0x5F }, "Annapurnalab", "Annapurna labs" }, { { 0x28, 0x87, 0x61 }, "LGInnotek", "LG Innotek" }, + { { 0x28, 0x87, 0xAF }, "AdvantechTec", "Advantech Technology (CHINA) Co., Ltd." }, { { 0x28, 0x87, 0xBA }, "TPLink", "TP-Link Systems Inc" }, { { 0x28, 0x89, 0x15 }, "CashGuardSve", "CashGuard Sverige AB" }, { { 0x28, 0x8A, 0x1C }, "JuniperNetwo", "Juniper Networks" }, @@ -17930,6 +17981,7 @@ { { 0x2C, 0xAB, 0x46 }, "RuckusWirele", "Ruckus Wireless" }, { { 0x2C, 0xAB, 0xA4 }, "CiscoSPVTG", "Cisco SPVTG" }, { { 0x2C, 0xAB, 0xEB }, "Cisco", "Cisco Systems, Inc" }, + { { 0x2C, 0xAB, 0xEE }, "EMMicroelect", "EM Microelectronic" }, { { 0x2C, 0xAC, 0x44 }, "Conextop", "Conextop" }, { { 0x2C, 0xAD, 0x13 }, "ZhiluTechnol", "Shenzhen Zhilu Technology Co.,Ltd" }, { { 0x2C, 0xAE, 0x2B }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, @@ -17943,6 +17995,7 @@ { { 0x2C, 0xB2, 0x1A }, "Phicomm", "Phicomm (Shanghai) Co., Ltd." }, { { 0x2C, 0xB3, 0x01 }, "HonorDevice", "Honor Device Co., Ltd." }, { { 0x2C, 0xB4, 0x3A }, "Apple", "Apple, Inc." }, + { { 0x2C, 0xB4, 0x71 }, "TuyaSmart", "Tuya Smart Inc." }, { { 0x2C, 0xB6, 0x8F }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x2C, 0xB6, 0x93 }, "Radware", "Radware" }, { { 0x2C, 0xB6, 0x9D }, "REDDigitalCi", "RED Digital Cinema" }, @@ -18070,6 +18123,8 @@ { { 0x30, 0x05, 0x5C }, "Brotherindus", "Brother industries, LTD." }, { { 0x30, 0x07, 0x4D }, "SamsungElect", "Samsung Electro-Mechanics(Thailand)" }, { { 0x30, 0x07, 0x5C }, "43403", "43403" }, + { { 0x30, 0x07, 0xA3 }, "SkyworthDigi", "Shenzhen Skyworth Digital Technology CO., Ltd" }, + { { 0x30, 0x08, 0x4D }, "TrumpfHüttin", "Trumpf Hüttinger" }, { { 0x30, 0x09, 0xC0 }, "MotorolaMobi", "Motorola Mobility LLC, a Lenovo Company" }, { { 0x30, 0x0A, 0x9D }, "AxinoSolutio", "Axino Solutions AG" }, { { 0x30, 0x0A, 0xC5 }, "Ruiotelecomm", "Ruio telecommunication technologies Co., Limited" }, @@ -18089,6 +18144,7 @@ { { 0x30, 0x14, 0x2D }, "Piciorgros", "Piciorgros GmbH" }, { { 0x30, 0x14, 0x4A }, "WNC", "WNC Corporation" }, { { 0x30, 0x15, 0x18 }, "UbiquitousCo", "Ubiquitous Communication Co. ltd." }, + { { 0x30, 0x15, 0x77 }, "ZyxelCommuni", "Zyxel Communications Corporation" }, { { 0x30, 0x16, 0x8D }, "ProLon", "ProLon" }, { { 0x30, 0x16, 0x9D }, "MercusysTech", "Mercusys Technologies Co., Ltd." }, { { 0x30, 0x17, 0xC8 }, "Sony", "Sony Corporation" }, @@ -18099,6 +18155,7 @@ { { 0x30, 0x1A, 0x30 }, "MakoNetworks", "Mako Networks Ltd" }, { { 0x30, 0x1A, 0xBA }, "OppoMobileTe", "Guangdong Oppo Mobile Telecommunications Corp.,Ltd" }, { { 0x30, 0x1B, 0x97 }, "LierdaScienc", "Lierda Science & Technology Group Co.,Ltd" }, + { { 0x30, 0x1C, 0x22 }, "HewlettPacka", "Hewlett Packard Enterprise" }, { { 0x30, 0x1D, 0x49 }, "FirmusTechno", "Firmus Technologies Pty Ltd" }, { { 0x30, 0x1F, 0x48 }, "zte", "zte corporation" }, { { 0x30, 0x21, 0x5B }, "OstarDisplay", "Shenzhen Ostar Display Electronic Co.,Ltd" }, @@ -18185,6 +18242,7 @@ { { 0x30, 0x52, 0x53 }, "BuildJet", "BuildJet, Inc." }, { { 0x30, 0x52, 0x5A }, "NST", "NST Co., LTD" }, { { 0x30, 0x52, 0xCB }, "LiteonTechno", "Liteon Technology Corporation" }, + { { 0x30, 0x53, 0x5B }, "ComnectTechn", "Shenzhen Comnect Technology Co.,LTD" }, { { 0x30, 0x53, 0xC1 }, "Cresyn", "Cresyn" }, { { 0x30, 0x55, 0xED }, "TrexNetwork", "Trex Network LLC" }, { { 0x30, 0x56, 0x0F }, "GIGABYTETECH", "GIGA-BYTE TECHNOLOGY CO. , Ltd." }, @@ -18219,6 +18277,7 @@ { { 0x30, 0x69, 0x4B }, "Rim", "Rim" }, { { 0x30, 0x6A, 0x85 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x30, 0x6C, 0xBE }, "SkymotionTec", "Skymotion Technology (HK) Limited" }, + { { 0x30, 0x6D, 0x34 }, "WuQiTechnolo", "Wu Qi Technologies,Inc." }, { { 0x30, 0x6D, 0xF9 }, "OppoMobileTe", "Guangdong Oppo Mobile Telecommunications Corp.,Ltd" }, { { 0x30, 0x6E, 0x5C }, "ValidusTechn", "Validus Technologies" }, { { 0x30, 0x6F, 0x07 }, "NationsTechn", "Nations Technologies Inc." }, @@ -18302,6 +18361,7 @@ { { 0x30, 0xA3, 0xB5 }, "JiangsuBestT", "Jiangsu Best Tone Information Service Co., Ltd" }, { { 0x30, 0xA4, 0x52 }, "ArrivalEleme", "Arrival Elements BV" }, { { 0x30, 0xA6, 0x12 }, "HugsunTechno", "ShenZhen Hugsun Technology Co.,Ltd." }, + { { 0x30, 0xA7, 0x71 }, "JiangSuFulia", "Jiang Su Fulian Communication Technology Co.,Ltd" }, { { 0x30, 0xA8, 0x89 }, "DecimatorDes", "Decimator Design" }, { { 0x30, 0xA8, 0xDB }, "Sony", "Sony Corporation" }, { { 0x30, 0xA9, 0x98 }, "HuaweiDevice", "Huawei Device Co., Ltd." }, @@ -18353,6 +18413,7 @@ { { 0x30, 0xC7, 0x50 }, "MICTechnolog", "MIC Technology Group" }, { { 0x30, 0xC7, 0xAE }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x30, 0xC8, 0x2A }, "WIBIZ", "WI-BIZ srl" }, + { { 0x30, 0xC8, 0xA2 }, "TranschanTec", "Shenzhen Transchan Technology Limited" }, { { 0x30, 0xC9, 0x1B }, "ZhenShiInfor", "Zhen Shi Information Technology(Shanghai)Co.,Ltd." }, { { 0x30, 0xC9, 0x22 }, "Espressif", "Espressif Inc." }, { { 0x30, 0xC9, 0xAB }, "CloudNetwork", "Cloud Network Technology Singapore Pte. Ltd." }, @@ -18476,6 +18537,7 @@ { { 0x34, 0x0F, 0x66 }, "WebSensing", "Web Sensing LLC" }, { { 0x34, 0x10, 0x5D }, "TexasInstrum", "Texas Instruments" }, { { 0x34, 0x10, 0xBE }, "Apple", "Apple, Inc." }, + { { 0x34, 0x10, 0xD0 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x34, 0x10, 0xF4 }, "SiliconLabor", "Silicon Laboratories" }, { { 0x34, 0x12, 0x90 }, "Treeview", "Treeview Co.,Ltd." }, { { 0x34, 0x12, 0x98 }, "Apple", "Apple, Inc." }, @@ -18506,12 +18568,14 @@ { { 0x34, 0x20, 0xD3 }, "IpComNetwork", "Shenzhen Ip-Com Networks Co.,Ltd." }, { { 0x34, 0x20, 0xE3 }, "RuckusWirele", "Ruckus Wireless" }, { { 0x34, 0x21, 0x09 }, "JensenScandi", "Jensen Scandinavia AS" }, + { { 0x34, 0x22, 0xCF }, "AUMOVIO", "AUMOVIO Systems, Inc." }, { { 0x34, 0x23, 0x87 }, "HonHaiPrecis", "Hon Hai Precision Ind. Co.,Ltd." }, { { 0x34, 0x23, 0xBA }, "SamsungElect", "Samsung Electro-Mechanics(Thailand)" }, { { 0x34, 0x24, 0x3E }, "zte", "zte corporation" }, { { 0x34, 0x25, 0x5D }, "LoadcomTechn", "Shenzhen Loadcom Technology Co.,Ltd" }, { { 0x34, 0x25, 0xB4 }, "SiliconLabor", "Silicon Laboratories" }, { { 0x34, 0x25, 0xBE }, "AmazonTechno", "Amazon Technologies Inc." }, + { { 0x34, 0x26, 0x01 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x34, 0x26, 0x06 }, "CarePredict", "CarePredict, Inc." }, { { 0x34, 0x26, 0xE6 }, "CigShanghai", "Cig Shanghai Co Ltd" }, { { 0x34, 0x27, 0x92 }, "FreeboxSas", "Freebox Sas" }, @@ -18681,6 +18745,7 @@ { { 0x34, 0x88, 0x18 }, "Cisco", "Cisco Systems, Inc" }, { { 0x34, 0x88, 0x5D }, "LogitechFarE", "Logitech Far East" }, { { 0x34, 0x8A, 0x12 }, "HewlettPacka", "Hewlett Packard Enterprise" }, + { { 0x34, 0x8A, 0x3B }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0x34, 0x8A, 0x7B }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x34, 0x8A, 0xAE }, "SagemcomBroa", "Sagemcom Broadband SAS" }, { { 0x34, 0x8B, 0x75 }, "LavaInternat", "Lava International(H.K) Limited" }, @@ -18771,6 +18836,7 @@ { { 0x34, 0xC0, 0xF9 }, "RockwellAuto", "Rockwell Automation" }, { { 0x34, 0xC1, 0x03 }, "HuamuTechnol", "Hangzhou Huamu Technology Co.,Ltd." }, { { 0x34, 0xC1, 0xE9 }, "UlakCommunic", "Ulak Communications Inc." }, + { { 0x34, 0xC2, 0x32 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x34, 0xC3, 0xAC }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x34, 0xC3, 0xD2 }, "FnLinkTechno", "Fn-Link Technology Limited" }, { { 0x34, 0xC3, 0xFD }, "Cisco", "Cisco Systems, Inc" }, @@ -18820,6 +18886,7 @@ { { 0x34, 0xDC, 0x99 }, "NewH3CTechno", "New H3C Technologies Co., Ltd" }, { { 0x34, 0xDD, 0x04 }, "Minut", "Minut AB" }, { { 0x34, 0xDD, 0x7E }, "UmeoxInnovat", "Umeox Innovations Co.,Ltd" }, + { { 0x34, 0xDD, 0xCC }, "Google", "Google, Inc." }, { { 0x34, 0xDE, 0x1A }, "Intel", "Intel Corporate" }, { { 0x34, 0xDE, 0x34 }, "zte", "zte corporation" }, { { 0x34, 0xDF, 0x20 }, "ComstarTechn", "Shenzhen Comstar.Technology Co.,Ltd" }, @@ -18967,6 +19034,7 @@ { { 0x38, 0x2A, 0x8C }, "ALLWinner", "ALL Winner (Hong Kong) Limited" }, { { 0x38, 0x2B, 0x78 }, "EcoPlugsEnte", "Eco Plugs Enterprise Co., Ltd" }, { { 0x38, 0x2C, 0x4A }, "ASUSTekCOMPU", "ASUSTek COMPUTER INC." }, + { { 0x38, 0x2C, 0xDB }, "AristaNetwor", "Arista Networks" }, { { 0x38, 0x2C, 0xE5 }, "TuyaSmart", "Tuya Smart Inc." }, { { 0x38, 0x2D, 0xD1 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x38, 0x2D, 0xE8 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, @@ -19012,6 +19080,7 @@ { { 0x38, 0x4C, 0x4F }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x38, 0x4C, 0x90 }, "Commscope", "Commscope" }, { { 0x38, 0x4D, 0xD2 }, "HuaweiDevice", "Huawei Device Co., Ltd." }, + { { 0x38, 0x4E, 0x56 }, "TexasInstrum", "Texas Instruments" }, { { 0x38, 0x4F, 0x49 }, "JuniperNetwo", "Juniper Networks" }, { { 0x38, 0x4F, 0xF0 }, "AzureWaveTec", "AzureWave Technology Inc." }, { { 0x38, 0x52, 0x1A }, "Nokia", "Nokia" }, @@ -19053,6 +19122,7 @@ { { 0x38, 0x6B, 0x1C }, "MercuryCommu", "Shenzhen Mercury Communication Technologies Co.,Ltd." }, { { 0x38, 0x6B, 0xBB }, "Commscope", "Commscope" }, { { 0x38, 0x6C, 0x9B }, "IvyBiomedica", "Ivy Biomedical" }, + { { 0x38, 0x6D, 0xED }, "JuniperNetwo", "Juniper Networks" }, { { 0x38, 0x6E, 0x21 }, "WasionGroup", "Wasion Group Ltd." }, { { 0x38, 0x6E, 0x88 }, "zte", "zte corporation" }, { { 0x38, 0x6E, 0xA2 }, "vivoMobileCo", "vivo Mobile Communication Co., Ltd." }, @@ -19082,6 +19152,7 @@ { { 0x38, 0x84, 0x79 }, "CiscoMeraki", "Cisco Meraki" }, { { 0x38, 0x86, 0x02 }, "Flexoptix", "Flexoptix GmbH" }, { { 0x38, 0x86, 0xF7 }, "Google", "Google, Inc." }, + { { 0x38, 0x87, 0x9C }, "EiElectronic", "Ei Electronics" }, { { 0x38, 0x87, 0xD5 }, "Intel", "Intel Corporate" }, { { 0x38, 0x88, 0x1E }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x38, 0x88, 0x71 }, "AskeyCompute", "Askey Computer Corp" }, @@ -19128,6 +19199,7 @@ { { 0x38, 0x9F, 0x83 }, "OTN", "OTN Systems N.V." }, { { 0x38, 0xA0, 0x67 }, "NokiaSolutio", "Nokia Solutions and Networks GmbH & Co. KG" }, { { 0x38, 0xA2, 0x8C }, "RfLinkTechno", "Shenzhen Rf-Link Technology Co.,Ltd." }, + { { 0x38, 0xA3, 0xE0 }, "1Finity", "1Finity Inc" }, { { 0x38, 0xA4, 0x4B }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0x38, 0xA4, 0xED }, "XiaomiCommun", "Xiaomi Communications Co Ltd" }, { { 0x38, 0xA5, 0x3C }, "COMECERNethe", "COMECER Netherlands" }, @@ -19216,6 +19288,7 @@ { { 0x38, 0xE0, 0x54 }, "SecurityDesi", "Security Design, Inc." }, { { 0x38, 0xE0, 0x8E }, "MitsubishiEl", "Mitsubishi Electric Corporation" }, { { 0x38, 0xE1, 0x3D }, "Apple", "Apple, Inc." }, + { { 0x38, 0xE1, 0x58 }, "FlaircommMic", "Flaircomm Microelectronics,Inc." }, { { 0x38, 0xE1, 0xAA }, "zte", "zte corporation" }, { { 0x38, 0xE1, 0xF4 }, "SagemcomBroa", "Sagemcom Broadband SAS" }, { { 0x38, 0xE2, 0x6E }, "SweetRainEle", "ShenZhen Sweet Rain Electronics Co.,Ltd." }, @@ -19281,6 +19354,7 @@ { { 0x38, 0xFE, 0xC5 }, "Ellips", "Ellips B.V." }, { { 0x38, 0xFF, 0x13 }, "JointStockRe", "Joint Stock Company \"Research Instinite \"Masshtab\"" }, { { 0x38, 0xFF, 0x36 }, "RuckusWirele", "Ruckus Wireless" }, + { { 0x38, 0xFF, 0x59 }, "Dell", "Dell Inc." }, { { 0x3A, 0x02, 0x92 }, "VideoElectro", "Video Electronics Standards Association" }, { { 0x3A, 0x0E, 0x75 }, "Kevcom", "Kevcom Llc" }, { { 0x3A, 0x1E, 0xC0 }, "Genesis", "Genesis" }, @@ -19335,6 +19409,7 @@ { { 0x3C, 0x13, 0xBB }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x3C, 0x13, 0xCC }, "Cisco", "Cisco Systems, Inc" }, { { 0x3C, 0x15, 0x12 }, "HuanhuTechno", "Shenzhen Huanhu Technology Co.,Ltd" }, + { { 0x3C, 0x15, 0x5A }, "Nokia", "Nokia" }, { { 0x3C, 0x15, 0xC2 }, "Apple", "Apple, Inc." }, { { 0x3C, 0x15, 0xEA }, "Tescom", "Tescom Co., Ltd." }, { { 0x3C, 0x15, 0xFB }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, @@ -19483,6 +19558,7 @@ { { 0x3C, 0x6F, 0xEA }, "PanasonicInd", "Panasonic India Pvt. Ltd." }, { { 0x3C, 0x6F, 0xF7 }, "EnTek", "EnTek Systems, Inc." }, { { 0x3C, 0x70, 0x59 }, "MakerBotIndu", "MakerBot Industries" }, + { { 0x3C, 0x71, 0x4B }, "HumaxNetwork", "Humax Networks" }, { { 0x3C, 0x71, 0xBF }, "Espressif", "Espressif Inc." }, { { 0x3C, 0x74, 0x37 }, "Rim", "Rim" }, { { 0x3C, 0x75, 0x4A }, "Commscope", "Commscope" }, @@ -19500,6 +19576,7 @@ { { 0x3C, 0x7C, 0x3F }, "ASUSTekCOMPU", "ASUSTek COMPUTER INC." }, { { 0x3C, 0x7D, 0x0A }, "Apple", "Apple, Inc." }, { { 0x3C, 0x7D, 0xB1 }, "TexasInstrum", "Texas Instruments" }, + { { 0x3C, 0x7F, 0x6E }, "XiaomiCommun", "Xiaomi Communications Co Ltd" }, { { 0x3C, 0x7F, 0x6F }, "Telechips", "Telechips, Inc." }, { { 0x3C, 0x80, 0x6B }, "HunanVocAcou", "Hunan Voc Acoustics Technology Co., Ltd." }, { { 0x3C, 0x80, 0xAA }, "RansnetSinga", "Ransnet Singapore Pte Ltd" }, @@ -19521,6 +19598,7 @@ { { 0x3C, 0x8A, 0x1F }, "Espressif", "Espressif Inc." }, { { 0x3C, 0x8A, 0xB0 }, "JuniperNetwo", "Juniper Networks" }, { { 0x3C, 0x8A, 0xE5 }, "TensunInform", "Tensun Information Technology(Hangzhou) Co.,LTD" }, + { { 0x3C, 0x8B, 0x6E }, "MellanoxTech", "Mellanox Technologies, Inc." }, { { 0x3C, 0x8B, 0x7F }, "Cisco", "Cisco Systems, Inc" }, { { 0x3C, 0x8B, 0xCD }, "AlcatelLucen", "Alcatel-Lucent Shanghai Bell Co., Ltd" }, { { 0x3C, 0x8B, 0xFE }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, @@ -19557,10 +19635,12 @@ { { 0x3C, 0x9F, 0x81 }, "CATICBitComm", "Shenzhen CATIC Bit Communications Technology Co.,Ltd" }, { { 0x3C, 0x9F, 0xC3 }, "SineadTechno", "Beijing Sinead Technology Co., Ltd." }, { { 0x3C, 0x9F, 0xCD }, "NeowayTechno", "Shenzhen Neoway Technology Co.,Ltd." }, + { { 0x3C, 0xA0, 0x0E }, "SkyworthDigi", "Shenzhen Skyworth Digital Technology CO., Ltd" }, { { 0x3C, 0xA0, 0x67 }, "LiteonTechno", "Liteon Technology Corporation" }, { { 0x3C, 0xA0, 0x70 }, "BlinkbyAmazo", "Blink by Amazon" }, { { 0x3C, 0xA1, 0x0D }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x3C, 0xA1, 0x61 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, + { { 0x3C, 0xA2, 0x39 }, "DGSQ", "DGSQ Co.,Ltd" }, { { 0x3C, 0xA2, 0xC3 }, "vivoMobileCo", "vivo Mobile Communication Co., Ltd." }, { { 0x3C, 0xA3, 0x08 }, "TexasInstrum", "Texas Instruments" }, { { 0x3C, 0xA3, 0x15 }, "BlessInforma", "Bless Information & Communications Co., Ltd" }, @@ -19598,6 +19678,7 @@ { { 0x3C, 0xB7, 0x92 }, "HitachiMaxel", "Hitachi Maxell, Ltd., Optronics Division" }, { { 0x3C, 0xB8, 0x7A }, "Private", "Private" }, { { 0x3C, 0xB8, 0xD6 }, "BluebankComm", "Bluebank Communication Technology Co.,Ltd." }, + { { 0x3C, 0xB9, 0x22 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x3C, 0xB9, 0xA6 }, "BeldenDeutsc", "Belden Deutschland GmbH" }, { { 0x3C, 0xBB, 0x73 }, "XinguoduTech", "Shenzhen Xinguodu Technology Co., Ltd." }, { { 0x3C, 0xBB, 0xFD }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, @@ -19622,6 +19703,7 @@ { { 0x3C, 0xC5, 0xDD }, "HuiZhouGaosh", "Hui Zhou Gaoshengda Technology Co.,LTD" }, { { 0x3C, 0xC6, 0x83 }, "SichuanAILin", "Sichuan AI-Link Technology Co., Ltd." }, { { 0x3C, 0xC7, 0x86 }, "DongguanHuar", "Dongguan Huarong Communication Technologies Co.,Ltd." }, + { { 0x3C, 0xC8, 0x01 }, "SundrayTechn", "Shenzhen Sundray Technologies company Limited" }, { { 0x3C, 0xC9, 0x9E }, "HuiyangTechn", "Huiyang Technology Co., Ltd" }, { { 0x3C, 0xCA, 0x61 }, "TecnoMobile", "Tecno Mobile Limited" }, { { 0x3C, 0xCA, 0x87 }, "Iders", "Iders Incorporated" }, @@ -19725,11 +19807,13 @@ { { 0x40, 0x0D, 0x10 }, "Commscope", "Commscope" }, { { 0x40, 0x0E, 0x67 }, "Tremol", "Tremol Ltd." }, { { 0x40, 0x0E, 0x85 }, "SamsungElect", "Samsung Electro-Mechanics(Thailand)" }, + { { 0x40, 0x0E, 0xB9 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x40, 0x0E, 0xF3 }, "zte", "zte corporation" }, { { 0x40, 0x0F, 0xC1 }, "VantivaUSA", "Vantiva USA LLC" }, { { 0x40, 0x10, 0xED }, "GTechTechnol", "G.Tech Technology Ltd." }, { { 0x40, 0x11, 0xC3 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x40, 0x11, 0xDC }, "Sonance", "Sonance" }, + { { 0x40, 0x12, 0x77 }, "Microsoft", "Microsoft Corporation" }, { { 0x40, 0x12, 0xE4 }, "CompassEOS", "Compass-EOS" }, { { 0x40, 0x13, 0xD9 }, "GlobalES", "Global ES" }, { { 0x40, 0x14, 0x82 }, "Cisco", "Cisco Systems, Inc" }, @@ -19888,6 +19972,7 @@ { { 0x40, 0x78, 0x75 }, "IMBELIndustr", "IMBEL - Industria de Material Belico do Brasil" }, { { 0x40, 0x79, 0x11 }, "Apple", "Apple, Inc." }, { { 0x40, 0x79, 0x12 }, "TexasInstrum", "Texas Instruments" }, + { { 0x40, 0x79, 0x55 }, "Datacolor", "Datacolor" }, { { 0x40, 0x7A, 0x80 }, "Nokia", "Nokia Corporation" }, { { 0x40, 0x7A, 0xA4 }, "ZhejiangDahu", "Zhejiang Dahua Technologyco.,Ltd" }, { { 0x40, 0x7B, 0x1B }, "MettleNetwor", "Mettle Networks Inc." }, @@ -19955,6 +20040,7 @@ { { 0x40, 0xA5, 0x3B }, "Nokia", "Nokia" }, { { 0x40, 0xA5, 0xEF }, "FourSeasGlob", "Shenzhen Four Seas Global Link Network Technology Co., Ltd." }, { { 0x40, 0xA6, 0x3D }, "SignalFireTe", "SignalFire Telemetry" }, + { { 0x40, 0xA6, 0x54 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x40, 0xA6, 0x77 }, "JuniperNetwo", "Juniper Networks" }, { { 0x40, 0xA6, 0xA4 }, "PassivSystem", "PassivSystems Ltd" }, { { 0x40, 0xA6, 0xB7 }, "Intel", "Intel Corporate" }, @@ -19997,6 +20083,7 @@ { { 0x40, 0xB8, 0x9A }, "HonHaiPrecis", "Hon Hai Precision Ind. Co.,Ltd." }, { { 0x40, 0xB8, 0xC2 }, "Osmozis", "Osmozis" }, { { 0x40, 0xB9, 0x3C }, "HewlettPacka", "Hewlett Packard Enterprise" }, + { { 0x40, 0xBA, 0x09 }, "Dell", "Dell Inc." }, { { 0x40, 0xBA, 0x61 }, "ARIMACommuni", "ARIMA Communications Corp." }, { { 0x40, 0xBB, 0x56 }, "TeraNXTGloba", "TeraNXT Global India Pvt Ltd." }, { { 0x40, 0xBC, 0x60 }, "Apple", "Apple, Inc." }, @@ -20069,6 +20156,7 @@ { { 0x40, 0xEC, 0xBD }, "Intel", "Intel Corporate" }, { { 0x40, 0xEC, 0xF8 }, "Siemens", "Siemens AG" }, { { 0x40, 0xED, 0x00 }, "TPLink", "TP-Link Systems Inc" }, + { { 0x40, 0xED, 0x7B }, "Zscaler", "Zscaler" }, { { 0x40, 0xED, 0xCF }, "Apple", "Apple, Inc." }, { { 0x40, 0xEE, 0x15 }, "ZioncomElect", "Zioncom Electronics (Shenzhen) Ltd." }, { { 0x40, 0xEE, 0xBE }, "NXPSemicondu", "NXP Semiconductor (Tianjin) LTD." }, @@ -20175,6 +20263,7 @@ { { 0x44, 0x2C, 0x05 }, "AMPAKTechnol", "AMPAK Technology, Inc." }, { { 0x44, 0x30, 0x3F }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x44, 0x31, 0x92 }, "HewlettPacka", "Hewlett Packard" }, + { { 0x44, 0x32, 0x1D }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x44, 0x32, 0x2A }, "Avaya", "Avaya Inc" }, { { 0x44, 0x32, 0x62 }, "zte", "zte corporation" }, { { 0x44, 0x32, 0xC2 }, "GOAL", "GOAL Co., Ltd." }, @@ -20212,6 +20301,7 @@ { { 0x44, 0x42, 0x01 }, "AmazonTechno", "Amazon Technologies Inc." }, { { 0x44, 0x42, 0x2F }, "Testop", "Testop Co.,Ltd." }, { { 0x44, 0x44, 0x50 }, "OttoQ", "OttoQ" }, + { { 0x44, 0x45, 0x20 }, "EMMicroelect", "EM Microelectronic" }, { { 0x44, 0x45, 0x6F }, "OnegaTechnol", "Shenzhen Onega Technology Co.,Ltd" }, { { 0x44, 0x45, 0xBA }, "EdgecoreAmer", "Edgecore Americas Networking Corporation" }, { { 0x44, 0x46, 0x48 }, "HonHaiPrecis", "Hon Hai Precision Industry Co.,LTD" }, @@ -20224,6 +20314,7 @@ { { 0x44, 0x49, 0x63 }, "WovenByToyot", "Woven By Toyota U.S., Inc." }, { { 0x44, 0x49, 0x88 }, "Intel", "Intel Corporate" }, { { 0x44, 0x4A, 0x37 }, "XiaomiCommun", "Xiaomi Communications Co Ltd" }, + { { 0x44, 0x4A, 0x4C }, "vivoMobileCo", "vivo Mobile Communication Co., Ltd." }, { { 0x44, 0x4A, 0x65 }, "Silverflare", "Silverflare Ltd." }, { { 0x44, 0x4A, 0xB0 }, "ZhejiangMoor", "Zhejiang Moorgen Intelligence Technology Co., Ltd" }, { { 0x44, 0x4A, 0xD6 }, "RinocloudTec", "Shenzhen Rinocloud Technology Co.,Ltd." }, @@ -20296,7 +20387,9 @@ { { 0x44, 0x76, 0x09 }, "NewH3CTechno", "New H3C Technologies Co., Ltd" }, { { 0x44, 0x76, 0x54 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x44, 0x76, 0xE7 }, "TecnoMobile", "Tecno Mobile Limited" }, + { { 0x44, 0x78, 0x31 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x44, 0x78, 0x3E }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, + { { 0x44, 0x7B, 0x45 }, "AmazonTechno", "Amazon Technologies Inc." }, { { 0x44, 0x7B, 0xBB }, "YOUHUATechno", "Shenzhen YOUHUA Technology Co., Ltd" }, { { 0x44, 0x7B, 0xC4 }, "DualShineTec", "DualShine Technology(SZ)Co.,Ltd" }, { { 0x44, 0x7C, 0x7F }, "InnolightTec", "Innolight Technology Corporation" }, @@ -20332,6 +20425,7 @@ { { 0x44, 0x8E, 0xEC }, "ChinaMobileG", "China Mobile Group Device Co.,Ltd." }, { { 0x44, 0x8F, 0x17 }, "SamsungElect", "Samsung Electronics Co., Ltd. ARTIK" }, { { 0x44, 0x90, 0x46 }, "HonorDevice", "Honor Device Co., Ltd." }, + { { 0x44, 0x90, 0xBA }, "ChinaDragonT", "China Dragon Technology Limited" }, { { 0x44, 0x90, 0xBB }, "Apple", "Apple, Inc." }, { { 0x44, 0x91, 0x60 }, "MurataManufa", "Murata Manufacturing Co., Ltd." }, { { 0x44, 0x91, 0x7C }, "HMDGlobal", "HMD Global Oy" }, @@ -20342,6 +20436,7 @@ { { 0x44, 0x95, 0xFA }, "QingdaoSanto", "Qingdao Santong Digital Technology Co.Ltd" }, { { 0x44, 0x96, 0x2B }, "Aidon", "Aidon Oy" }, { { 0x44, 0x97, 0x5A }, "FastTechnolo", "Shenzhen Fast Technologies Co.,Ltd" }, + { { 0x44, 0x9A, 0x52 }, "zte", "zte corporation" }, { { 0x44, 0x9B, 0x78 }, "NowFactory", "The Now Factory" }, { { 0x44, 0x9B, 0xC1 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x44, 0x9B, 0xC6 }, "EOSS", "EOSS s.r.l." }, @@ -20382,6 +20477,7 @@ { { 0x44, 0xAE, 0x44 }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0x44, 0xAE, 0xAB }, "OppoMobileTe", "Guangdong Oppo Mobile Telecommunications Corp.,Ltd" }, { { 0x44, 0xAF, 0x28 }, "Intel", "Intel Corporate" }, + { { 0x44, 0xB1, 0x76 }, "Espressif", "Espressif Inc." }, { { 0x44, 0xB2, 0x95 }, "SichuanAILin", "Sichuan AI-Link Technology Co., Ltd." }, { { 0x44, 0xB3, 0x2D }, "TpLinkTechno", "Tp-Link Technologies Co.,Ltd." }, { { 0x44, 0xB3, 0x82 }, "KuangchiInst", "Kuang-chi Institute of Advanced Technology" }, @@ -20397,6 +20493,7 @@ { { 0x44, 0xB9, 0x94 }, "DouglasLight", "Douglas Lighting Controls" }, { { 0x44, 0xBA, 0x46 }, "SichuanTiany", "Sichuan Tianyi Comheart Telecom Co.,LTD" }, { { 0x44, 0xBB, 0x3B }, "Google", "Google, Inc." }, + { { 0x44, 0xBD, 0x8D }, "Espressif", "Espressif Inc." }, { { 0x44, 0xBD, 0xC8 }, "XiaomiCommun", "Xiaomi Communications Co Ltd" }, { { 0x44, 0xBD, 0xDE }, "BHTC", "BHTC GmbH" }, { { 0x44, 0xBE, 0x0B }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, @@ -20420,6 +20517,7 @@ { { 0x44, 0xCB, 0x8B }, "LGInnotek", "LG Innotek" }, { { 0x44, 0xCB, 0xAD }, "XiaomiCommun", "Xiaomi Communications Co Ltd" }, { { 0x44, 0xCD, 0x0E }, "FlextronicsM", "Flextronics Manufacturing(Zhuhai)Co.,Ltd." }, + { { 0x44, 0xCE, 0x1D }, "Nokia", "Nokia" }, { { 0x44, 0xCE, 0x3A }, "JiangsuHuacu", "Jiangsu Huacun Electronic Technology Co., Ltd." }, { { 0x44, 0xCE, 0x7D }, "Sfr", "Sfr" }, { { 0x44, 0xD1, 0x5E }, "KingtoInform", "Shanghai Kingto Information Technology Ltd" }, @@ -20481,6 +20579,7 @@ { { 0x44, 0xEE, 0x02 }, "MTI", "MTI Ltd." }, { { 0x44, 0xEE, 0x14 }, "TexasInstrum", "Texas Instruments" }, { { 0x44, 0xEE, 0x30 }, "BudelmannEle", "Budelmann Elektronik GmbH" }, + { { 0x44, 0xEF, 0x26 }, "QingdaoIntel", "Qingdao Intelligent&Precise Electronics Co.,Ltd." }, { { 0x44, 0xEF, 0xBF }, "ChinaDragonT", "China Dragon Technology Limited" }, { { 0x44, 0xEF, 0xCF }, "UGENESOLUTIO", "UGENE SOLUTION inc." }, { { 0x44, 0xF0, 0x34 }, "KaonGroup", "Kaon Group Co., Ltd." }, @@ -20519,6 +20618,7 @@ { { 0x48, 0x05, 0xE2 }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0x48, 0x06, 0x2B }, "Private", "Private" }, { { 0x48, 0x06, 0x6A }, "TemperedNetw", "Tempered Networks, Inc." }, + { { 0x48, 0x09, 0x51 }, "GuangzhouTru", "Guangzhou Trustmo Information System Co.,LTD" }, { { 0x48, 0x0C, 0x49 }, "NAKAYO", "NAKAYO Inc" }, { { 0x48, 0x0E, 0x13 }, "ittim", "ittim" }, { { 0x48, 0x0E, 0xEC }, "TpLinkTechno", "Tp-Link Technologies Co.,Ltd." }, @@ -20528,6 +20628,7 @@ { { 0x48, 0x12, 0x58 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x48, 0x12, 0x8F }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x48, 0x13, 0x7E }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, + { { 0x48, 0x13, 0x89 }, "MellanoxTech", "Mellanox Technologies, Inc." }, { { 0x48, 0x13, 0xF3 }, "BbkEducation", "Bbk Educational Electronics Corp.,Ltd." }, { { 0x48, 0x16, 0x93 }, "Lear", "Lear Corporation GmbH" }, { { 0x48, 0x17, 0x4C }, "MicroPowerte", "MicroPower technologies" }, @@ -20731,6 +20832,7 @@ { { 0x48, 0x93, 0xDC }, "UniwayInfoco", "Uniway Infocom Pvt Ltd" }, { { 0x48, 0x95, 0x07 }, "OppoMobileTe", "Guangdong Oppo Mobile Telecommunications Corp.,Ltd" }, { { 0x48, 0x96, 0xD9 }, "zte", "zte corporation" }, + { { 0x48, 0x98, 0xAB }, "WistronInfoC", "Wistron InfoComm(Chongqing)Co.,Ltd." }, { { 0x48, 0x98, 0xCA }, "SichuanAILin", "Sichuan AI-Link Technology Co., Ltd." }, { { 0x48, 0x9A, 0x42 }, "Technomate", "Technomate Ltd" }, { { 0x48, 0x9A, 0x5B }, "iCommSemicon", "Shenzhen iComm Semiconductor CO.,LTD" }, @@ -20768,6 +20870,7 @@ { { 0x48, 0xA9, 0x8A }, "Routerboardc", "Routerboard.com" }, { { 0x48, 0xA9, 0xD2 }, "WNC", "WNC Corporation" }, { { 0x48, 0xAA, 0x5D }, "StoreElectro", "Store Electronic Systems" }, + { { 0x48, 0xAA, 0xBB }, "SagemcomBroa", "Sagemcom Broadband SAS" }, { { 0x48, 0xAD, 0x08 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x48, 0xAD, 0x9A }, "Intel", "Intel Corporate" }, { { 0x48, 0xB0, 0x2D }, "NVIDIA", "NVIDIA Corporation" }, @@ -20861,6 +20964,7 @@ { { 0x48, 0xE9, 0xF1 }, "Apple", "Apple, Inc." }, { { 0x48, 0xEA, 0x62 }, "HP", "HP Inc." }, { { 0x48, 0xEA, 0x63 }, "ZhejiangUniv", "Zhejiang Uniview Technologies Co., Ltd." }, + { { 0x48, 0xEA, 0xA9 }, "C&DElectroni", "ShenZhen C&D Electronics CO.Ltd." }, { { 0x48, 0xEB, 0x30 }, "EternaTechno", "Eterna Technology, Inc." }, { { 0x48, 0xEB, 0x62 }, "MurataManufa", "Murata Manufacturing Co., Ltd." }, { { 0x48, 0xEB, 0x65 }, "HenanKunLunT", "Henan KunLun Technologies CO.,Ltd." }, @@ -20930,7 +21034,7 @@ { { 0x4C, 0x07, 0xC9 }, "COMPUTEROFFI", "COMPUTER OFFICE Co.,Ltd." }, { { 0x4C, 0x09, 0x97 }, "AristaNetwor", "Arista Networks" }, { { 0x4C, 0x09, 0xB4 }, "zte", "zte corporation" }, - { { 0x4C, 0x09, 0xD4 }, "ArcadyanTech", "Arcadyan Technology Corporation" }, + { { 0x4C, 0x09, 0xD4 }, "Arcadyan", "Arcadyan Corporation" }, { { 0x4C, 0x09, 0xFA }, "FrontierSmar", "Frontier Smart Technologies Ltd" }, { { 0x4C, 0x0A, 0x3D }, "Adnacom", "Adnacom Inc." }, { { 0x4C, 0x0A, 0x4E }, "ExtremeNetwo", "Extreme Networks Headquarters" }, @@ -21038,6 +21142,7 @@ { { 0x4C, 0x53, 0x69 }, "YanFengViste", "YanFeng Visteon(ChongQing) Automotive Electronic Co.,Ltd" }, { { 0x4C, 0x53, 0xFD }, "AmazonTechno", "Amazon Technologies Inc." }, { { 0x4C, 0x54, 0x27 }, "LineproSp", "Linepro Sp. z o.o." }, + { { 0x4C, 0x54, 0x8B }, "CerebrasSyst", "Cerebras System Inc." }, { { 0x4C, 0x54, 0x99 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x4C, 0x55, 0x85 }, "Hamilton", "Hamilton Systems" }, { { 0x4C, 0x55, 0xB2 }, "XiaomiCommun", "Xiaomi Communications Co Ltd" }, @@ -21076,6 +21181,7 @@ { { 0x4C, 0x6B, 0xB8 }, "HuiZhouGaosh", "Hui Zhou Gaoshengda Technology Co.,LTD" }, { { 0x4C, 0x6B, 0xE8 }, "Apple", "Apple, Inc." }, { { 0x4C, 0x6C, 0x13 }, "IoTSolucoesT", "IoT Company Solucoes Tecnologicas Ltda" }, + { { 0x4C, 0x6C, 0xA1 }, "ChipseaTechn", "Chipsea Technologies (Shenzhen) Crop." }, { { 0x4C, 0x6D, 0x58 }, "JuniperNetwo", "Juniper Networks" }, { { 0x4C, 0x6E, 0x6E }, "ComnectTechn", "Comnect Technology CO.,LTD" }, { { 0x4C, 0x6F, 0x9C }, "OppoMobileTe", "Guangdong Oppo Mobile Telecommunications Corp.,Ltd" }, @@ -21149,6 +21255,7 @@ { { 0x4C, 0x9E, 0xFF }, "ZyxelCommuni", "Zyxel Communications Corporation" }, { { 0x4C, 0x9F, 0xF1 }, "Apple", "Apple, Inc." }, { { 0x4C, 0xA0, 0x03 }, "Vitec", "Vitec" }, + { { 0x4C, 0xA0, 0x3D }, "BouffaloLab", "Bouffalo Lab (Nanjing) Co., Ltd." }, { { 0x4C, 0xA0, 0xD4 }, "TelinkSemico", "Telink Semiconductor (Shanghai) Co., Ltd." }, { { 0x4C, 0xA1, 0x61 }, "RainBird", "Rain Bird Corporation" }, { { 0x4C, 0xA3, 0x8F }, "trolinkTechn", "shenzhen trolink Technology Co.,Ltd" }, @@ -21246,6 +21353,7 @@ { { 0x4C, 0xD6, 0x29 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x4C, 0xD6, 0x37 }, "QsonoElectro", "Qsono Electronics Co., Ltd" }, { { 0x4C, 0xD7, 0x17 }, "Dell", "Dell Inc." }, + { { 0x4C, 0xD7, 0x3A }, "XinZhongXinT", "ShenZhen XinZhongXin Technology Co., Ltd" }, { { 0x4C, 0xD7, 0x4A }, "VantivaUSA", "Vantiva USA LLC" }, { { 0x4C, 0xD7, 0xB6 }, "HelmerScient", "Helmer Scientific" }, { { 0x4C, 0xD7, 0xC8 }, "GuangzhouVSo", "Guangzhou V-Solution Telecommunication Technology Co.,Ltd." }, @@ -21403,6 +21511,7 @@ { { 0x50, 0x32, 0x75 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x50, 0x33, 0x8B }, "TexasInstrum", "Texas Instruments" }, { { 0x50, 0x33, 0xF0 }, "YichenTechno", "Yichen (Shenzhen) Technology Co.Ltd" }, + { { 0x50, 0x37, 0xCD }, "QuectelWirel", "Quectel Wireless Solutions Co., Ltd." }, { { 0x50, 0x38, 0x2F }, "ASEGroupChun", "ASE Group Chung-Li" }, { { 0x50, 0x38, 0xAB }, "Prove", "Prove" }, { { 0x50, 0x39, 0x2F }, "IngramMicroS", "Ingram Micro Services" }, @@ -21479,17 +21588,20 @@ { { 0x50, 0x5D, 0x7A }, "zte", "zte corporation" }, { { 0x50, 0x5D, 0xAC }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x50, 0x5E, 0x24 }, "zte", "zte corporation" }, + { { 0x50, 0x5E, 0x3A }, "GDMideaAirCo", "GD Midea Air-Conditioning Equipment Co.,Ltd." }, { { 0x50, 0x5E, 0x5C }, "SunitecTechn", "Sunitec Technology Co.,Limited" }, { { 0x50, 0x5F, 0xB5 }, "AskeyCompute", "Askey Computer Corp" }, { { 0x50, 0x60, 0x28 }, "Xirrus", "Xirrus Inc." }, { { 0x50, 0x61, 0x3F }, "eero", "eero inc." }, { { 0x50, 0x61, 0x7E }, "MiaoMingInte", "Shenzhen MiaoMing Intelligent Technology Co.,Ltd" }, { { 0x50, 0x61, 0x84 }, "Avaya", "Avaya Inc" }, + { { 0x50, 0x61, 0x88 }, "PLANETTechno", "PLANET Technology Corporation" }, { { 0x50, 0x61, 0xBF }, "Cisco", "Cisco Systems, Inc" }, { { 0x50, 0x61, 0xD6 }, "InduSol", "Indu-Sol GmbH" }, { { 0x50, 0x61, 0xF6 }, "UniversalEle", "Universal Electronics, Inc." }, { { 0x50, 0x62, 0x45 }, "Annapurnalab", "Annapurna labs" }, { { 0x50, 0x63, 0x13 }, "HonHaiPrecis", "Hon Hai Precision Ind. Co.,Ltd." }, + { { 0x50, 0x63, 0x82 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x50, 0x63, 0x91 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x50, 0x64, 0x2B }, "XIAOMIElectr", "XIAOMI Electronics,CO.,LTD" }, { { 0x50, 0x64, 0x41 }, "Greenlee", "Greenlee" }, @@ -21534,7 +21646,7 @@ { { 0x50, 0x7B, 0x9D }, "LCFCElectron", "LCFC(Hefei) Electronics Technology co., ltd" }, { { 0x50, 0x7C, 0x6F }, "Intel", "Intel Corporate" }, { { 0x50, 0x7D, 0x02 }, "Biodit", "Biodit" }, - { { 0x50, 0x7E, 0x5D }, "ArcadyanTech", "Arcadyan Technology Corporation" }, + { { 0x50, 0x7E, 0x5D }, "Arcadyan", "Arcadyan Corporation" }, { { 0x50, 0x80, 0x4A }, "QuectelWirel", "Quectel Wireless Solutions Co.,Ltd." }, { { 0x50, 0x81, 0x40 }, "HP", "HP Inc." }, { { 0x50, 0x82, 0xD5 }, "Apple", "Apple, Inc." }, @@ -21665,6 +21777,7 @@ { { 0x50, 0xD6, 0xD7 }, "TakahataPrec", "Takahata Precision" }, { { 0x50, 0xD7, 0x53 }, "CONELCOM", "CONELCOM GmbH" }, { { 0x50, 0xDA, 0x00 }, "H3CTechnolog", "Hangzhou H3C Technologies Co., Limited" }, + { { 0x50, 0xDA, 0x9E }, "ShenZhenTend", "Shen Zhen Tenda Technology Co.,Ltd" }, { { 0x50, 0xDA, 0xD6 }, "XiaomiCommun", "Xiaomi Communications Co Ltd" }, { { 0x50, 0xDB, 0x3F }, "GongjinElect", "Shenzhen Gongjin Electronics Co.,Lt" }, { { 0x50, 0xDC, 0xD0 }, "ObservintTec", "Observint Technologies, Inc." }, @@ -21682,6 +21795,7 @@ { { 0x50, 0xE1, 0x4A }, "Private", "Private" }, { { 0x50, 0xE2, 0x4E }, "zte", "zte corporation" }, { { 0x50, 0xE4, 0x52 }, "ChipseaTechn", "Chipsea Technologies (Shenzhen) Corp." }, + { { 0x50, 0xE4, 0x67 }, "Ring", "Ring LLC" }, { { 0x50, 0xE4, 0x78 }, "SichuanAILin", "Sichuan AI-Link Technology Co., Ltd." }, { { 0x50, 0xE4, 0xE0 }, "HewlettPacka", "Hewlett Packard Enterprise" }, { { 0x50, 0xE5, 0x38 }, "HikvisionDig", "Hangzhou Hikvision Digital Technology Co.,Ltd." }, @@ -21772,9 +21886,11 @@ { { 0x54, 0x12, 0xCB }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x54, 0x13, 0x10 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x54, 0x13, 0x79 }, "HonHaiPrecis", "Hon Hai Precision Ind. Co.,Ltd." }, + { { 0x54, 0x13, 0x8F }, "GEOIDECrypto", "GEOIDE Crypto&Com" }, { { 0x54, 0x13, 0xCA }, "ItelMobile", "Itel Mobile Limited" }, { { 0x54, 0x14, 0x73 }, "WingtechGrou", "Wingtech Group (HongKong)Limited" }, { { 0x54, 0x14, 0xA7 }, "NanjingQinhe", "Nanjing Qinheng Microelectronics Co., Ltd." }, + { { 0x54, 0x14, 0xE9 }, "AltoBeam", "AltoBeam Inc." }, { { 0x54, 0x14, 0xF3 }, "Intel", "Intel Corporate" }, { { 0x54, 0x14, 0xFD }, "Orbbec3DTech", "Orbbec 3D Technology International" }, { { 0x54, 0x15, 0x89 }, "MCSLogic", "MCS Logic Inc." }, @@ -21916,6 +22032,7 @@ { { 0x54, 0x72, 0x4F }, "Apple", "Apple, Inc." }, { { 0x54, 0x72, 0x5E }, "UnionManTech", "Union Man Technology Co.,Ltd" }, { { 0x54, 0x72, 0x6E }, "DaimlerTruck", "Daimler Truck AG" }, + { { 0x54, 0x73, 0x5A }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0x54, 0x73, 0x98 }, "ToyoElectron", "Toyo Electronics Corporation" }, { { 0x54, 0x74, 0xE6 }, "WebtechWirel", "Webtech Wireless" }, { { 0x54, 0x75, 0x95 }, "TpLinkTechno", "Tp-Link Technologies Co.,Ltd." }, @@ -22021,6 +22138,7 @@ { { 0x54, 0xB8, 0xDB }, "Apple", "Apple, Inc." }, { { 0x54, 0xBA, 0xD6 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x54, 0xBA, 0xD9 }, "Intelbras", "Intelbras" }, + { { 0x54, 0xBB, 0x8F }, "AcctonTechno", "Accton Technology Corporation" }, { { 0x54, 0xBD, 0x79 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x54, 0xBE, 0x53 }, "zte", "zte corporation" }, { { 0x54, 0xBE, 0xF7 }, "Pegatron", "Pegatron Corporation" }, @@ -22086,6 +22204,7 @@ { { 0x54, 0xE6, 0x1B }, "Apple", "Apple, Inc." }, { { 0x54, 0xE6, 0x3F }, "LingKeWeiErT", "ShenZhen LingKeWeiEr Technology Co., Ltd." }, { { 0x54, 0xE6, 0xFC }, "TpLinkTechno", "Tp-Link Technologies Co.,Ltd." }, + { { 0x54, 0xE6, 0xFD }, "SonyInteract", "Sony Interactive Entertainment Inc." }, { { 0x54, 0xE7, 0xD5 }, "SunCupidTech", "Sun Cupid Technology (HK) LTD" }, { { 0x54, 0xEA, 0xA8 }, "Apple", "Apple, Inc." }, { { 0x54, 0xEA, 0xE1 }, "HonorDevice", "Honor Device Co., Ltd." }, @@ -22168,6 +22287,7 @@ { { 0x58, 0x20, 0x71 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x58, 0x20, 0xB1 }, "HewlettPacka", "Hewlett Packard" }, { { 0x58, 0x21, 0x36 }, "KMBsro", "KMB systems, s.r.o." }, + { { 0x58, 0x21, 0x9D }, "TimarIntegra", "Shanghai Timar Integrated Circuit Co., LTD" }, { { 0x58, 0x21, 0xE9 }, "Twpi", "Twpi" }, { { 0x58, 0x23, 0x8C }, "VantivaUSA", "Vantiva USA LLC" }, { { 0x58, 0x23, 0x9B }, "FiberhomeTel", "Fiberhome Telecommunication Technologies Co.,LTD" }, @@ -22178,6 +22298,7 @@ { { 0x58, 0x27, 0x45 }, "AngelbirdTec", "Angelbird Technologies GmbH" }, { { 0x58, 0x27, 0x8C }, "Buffalo", "Buffalo.Inc" }, { { 0x58, 0x2A, 0x93 }, "Apple", "Apple, Inc." }, + { { 0x58, 0x2A, 0xBD }, "Espressif", "Espressif Inc." }, { { 0x58, 0x2A, 0xF7 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x58, 0x2B, 0x0A }, "TexasInstrum", "Texas Instruments" }, { { 0x58, 0x2B, 0xDB }, "Pax", "Pax AB" }, @@ -22314,6 +22435,7 @@ { { 0x58, 0x90, 0x43 }, "SagemcomBroa", "Sagemcom Broadband SAS" }, { { 0x58, 0x91, 0x53 }, "ChinaMobileI", "China Mobile IOT Company Limited" }, { { 0x58, 0x91, 0xCF }, "Intel", "Intel Corporate" }, + { { 0x58, 0x92, 0x04 }, "zte", "zte corporation" }, { { 0x58, 0x92, 0x0D }, "KineticAvion", "Kinetic Avionics Limited" }, { { 0x58, 0x93, 0x51 }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0x58, 0x93, 0x96 }, "RuckusWirele", "Ruckus Wireless" }, @@ -22518,6 +22640,7 @@ { { 0x5C, 0x16, 0x48 }, "OppoMobileTe", "Guangdong Oppo Mobile Telecommunications Corp.,Ltd" }, { { 0x5C, 0x16, 0x7D }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x5C, 0x16, 0xC7 }, "AristaNetwor", "Arista Networks" }, + { { 0x5C, 0x17, 0x15 }, "ODriveRoboti", "ODrive Robotics" }, { { 0x5C, 0x17, 0x20 }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0x5C, 0x17, 0x37 }, "IViewNow", "I-View Now, LLC." }, { { 0x5C, 0x17, 0x83 }, "EdgecoreAmer", "Edgecore Americas Networking Corporation" }, @@ -22604,6 +22727,7 @@ { { 0x5C, 0x51, 0x4F }, "Intel", "Intel Corporate" }, { { 0x5C, 0x51, 0x81 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x5C, 0x51, 0x88 }, "MotorolaMobi", "Motorola Mobility LLC, a Lenovo Company" }, + { { 0x5C, 0x51, 0xDF }, "eero", "eero inc." }, { { 0x5C, 0x52, 0x1E }, "Nintendo", "Nintendo Co.,Ltd" }, { { 0x5C, 0x52, 0x30 }, "Apple", "Apple, Inc." }, { { 0x5C, 0x52, 0x84 }, "Apple", "Apple, Inc." }, @@ -22630,10 +22754,12 @@ { { 0x5C, 0x5E, 0xBB }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x5C, 0x5F, 0x67 }, "Intel", "Intel Corporate" }, { { 0x5C, 0x60, 0xBA }, "HP", "HP Inc." }, + { { 0x5C, 0x61, 0x17 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x5C, 0x61, 0x52 }, "NXPSemicondu", "NXP Semiconductor (Tianjin) LTD." }, { { 0x5C, 0x61, 0x99 }, "CloudNetwork", "Cloud Network Technology Singapore Pte. Ltd." }, { { 0x5C, 0x62, 0x5A }, "Canon", "Canon Inc." }, { { 0x5C, 0x62, 0x8B }, "TPLink", "TP-Link Systems Inc" }, + { { 0x5C, 0x63, 0xB0 }, "Fortinet", "Fortinet, Inc." }, { { 0x5C, 0x63, 0xBF }, "TpLinkTechno", "Tp-Link Technologies Co.,Ltd." }, { { 0x5C, 0x63, 0xC9 }, "Intellithing", "Intellithings Ltd." }, { { 0x5C, 0x64, 0x0F }, "SageTechnolo", "Sage Technologies Inc." }, @@ -22674,6 +22800,7 @@ { { 0x5C, 0x7D, 0xF3 }, "FiberhomeTel", "Fiberhome Telecommunication Technologies Co.,LTD" }, { { 0x5C, 0x80, 0xB6 }, "Intel", "Intel Corporate" }, { { 0x5C, 0x81, 0xA7 }, "NetworkDevic", "Network Devices Pty Ltd" }, + { { 0x5C, 0x82, 0x17 }, "DSE", "DSE srl" }, { { 0x5C, 0x83, 0x6C }, "RuckusWirele", "Ruckus Wireless" }, { { 0x5C, 0x83, 0x82 }, "Nokia", "Nokia" }, { { 0x5C, 0x83, 0x8F }, "Cisco", "Cisco Systems, Inc" }, @@ -22738,6 +22865,7 @@ { { 0x5C, 0xA6, 0xE6 }, "TPLink", "TP-Link Systems Inc" }, { { 0x5C, 0xA7, 0x21 }, "NewH3CTechno", "New H3C Technologies Co., Ltd" }, { { 0x5C, 0xA8, 0x6A }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, + { { 0x5C, 0xA9, 0x31 }, "UbeeInteract", "Ubee Interactive Co., Limited" }, { { 0x5C, 0xA9, 0x33 }, "LumaHome", "Luma Home" }, { { 0x5C, 0xAA, 0xFD }, "Sonos", "Sonos, Inc." }, { { 0x5C, 0xAC, 0x3D }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, @@ -22754,6 +22882,7 @@ { { 0x5C, 0xB2, 0x60 }, "EMMicroelect", "EM Microelectronic" }, { { 0x5C, 0xB2, 0x6D }, "Intel", "Intel Corporate" }, { { 0x5C, 0xB2, 0x9E }, "ASCOPowerTec", "ASCO Power Technologies" }, + { { 0x5C, 0xB2, 0xDF }, "PowerleaderS", "Shenzhen Powerleader Storage Technology Co., Ltd." }, { { 0x5C, 0xB3, 0x95 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x5C, 0xB3, 0xF6 }, "Human", "Human, Incorporated" }, { { 0x5C, 0xB4, 0x3E }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, @@ -22766,6 +22895,7 @@ { { 0x5C, 0xB9, 0x01 }, "HewlettPacka", "Hewlett Packard" }, { { 0x5C, 0xBA, 0x2C }, "HewlettPacka", "Hewlett Packard Enterprise" }, { { 0x5C, 0xBA, 0x37 }, "Microsoft", "Microsoft Corporation" }, + { { 0x5C, 0xBA, 0x75 }, "QuectelWirel", "Quectel Wireless Solutions Co., Ltd." }, { { 0x5C, 0xBA, 0xEF }, "ChongqingFug", "Chongqing Fugui Electronics Co.,Ltd." }, { { 0x5C, 0xBB, 0xEE }, "zte", "zte corporation" }, { { 0x5C, 0xBD, 0x9A }, "HuaweiDevice", "Huawei Device Co., Ltd." }, @@ -22817,7 +22947,7 @@ { { 0x5C, 0xDA, 0xD4 }, "MurataManufa", "Murata Manufacturing Co., Ltd." }, { { 0x5C, 0xDB, 0x36 }, "Calix", "Calix Inc." }, { { 0x5C, 0xDC, 0x49 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, - { { 0x5C, 0xDC, 0x96 }, "ArcadyanTech", "Arcadyan Technology Corporation" }, + { { 0x5C, 0xDC, 0x96 }, "Arcadyan", "Arcadyan Corporation" }, { { 0x5C, 0xDD, 0x70 }, "H3CTechnolog", "Hangzhou H3C Technologies Co., Limited" }, { { 0x5C, 0xDE, 0x34 }, "MercuryCommu", "Shenzhen Mercury Communication Technologies Co.,Ltd." }, { { 0x5C, 0xDF, 0x89 }, "RuckusWirele", "Ruckus Wireless" }, @@ -22867,6 +22997,7 @@ { { 0x5C, 0xF7, 0xE6 }, "Apple", "Apple, Inc." }, { { 0x5C, 0xF8, 0x21 }, "TexasInstrum", "Texas Instruments" }, { { 0x5C, 0xF8, 0xA1 }, "MurataManufa", "Murata Manufacturing Co., Ltd." }, + { { 0x5C, 0xF9, 0x2B }, "CloudNetwork", "Cloud Network Technology Singapore Pte. Ltd." }, { { 0x5C, 0xF9, 0x38 }, "Apple", "Apple, Inc." }, { { 0x5C, 0xF9, 0x6A }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x5C, 0xF9, 0xDD }, "Dell", "Dell Inc." }, @@ -23013,6 +23144,7 @@ { { 0x60, 0x51, 0x2C }, "TCTmobile", "TCT mobile ltd" }, { { 0x60, 0x52, 0xD0 }, "FACTSEnginee", "FACTS Engineering" }, { { 0x60, 0x53, 0x17 }, "SandstoneTec", "Sandstone Technologies" }, + { { 0x60, 0x53, 0x55 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x60, 0x53, 0x75 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x60, 0x54, 0x64 }, "EyedroGreenS", "Eyedro Green Solutions Inc." }, { { 0x60, 0x55, 0x56 }, "JiangxiRisou", "Jiangxi Risound Electronics Co.,LTD" }, @@ -23122,6 +23254,7 @@ { { 0x60, 0x92, 0xF5 }, "Commscope", "Commscope" }, { { 0x60, 0x93, 0x16 }, "Apple", "Apple, Inc." }, { { 0x60, 0x95, 0x32 }, "ZebraTechnol", "Zebra Technologies Inc." }, + { { 0x60, 0x95, 0x78 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x60, 0x95, 0xBD }, "Apple", "Apple, Inc." }, { { 0x60, 0x95, 0xF8 }, "Arcadyan", "Arcadyan Corporation" }, { { 0x60, 0x96, 0x20 }, "Private", "Private" }, @@ -23497,6 +23630,7 @@ { { 0x64, 0x77, 0x7D }, "HitronTechno", "Hitron Technologies. Inc" }, { { 0x64, 0x77, 0x91 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x64, 0x79, 0x24 }, "HuaweiDevice", "Huawei Device Co., Ltd." }, + { { 0x64, 0x79, 0x99 }, "SagemcomBroa", "Sagemcom Broadband SAS" }, { { 0x64, 0x79, 0xA7 }, "PhisonElectr", "Phison Electronics Corp." }, { { 0x64, 0x79, 0xF0 }, "Intel", "Intel Corporate" }, { { 0x64, 0x7B, 0x1E }, "SagemcomBroa", "Sagemcom Broadband SAS" }, @@ -23567,6 +23701,7 @@ { { 0x64, 0xA8, 0x37 }, "JuniKorea", "Juni Korea Co., Ltd" }, { { 0x64, 0xA9, 0x65 }, "Linkflow", "Linkflow Co., Ltd." }, { { 0x64, 0xAC, 0x2B }, "JuniperNetwo", "Juniper Networks" }, + { { 0x64, 0xAC, 0xE0 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x64, 0xAE, 0x0C }, "Cisco", "Cisco Systems, Inc" }, { { 0x64, 0xAE, 0x88 }, "Polytec", "Polytec GmbH" }, { { 0x64, 0xAE, 0xF1 }, "QingdaoHisen", "Qingdao Hisense Electronics Co.,Ltd." }, @@ -23614,6 +23749,7 @@ { { 0x64, 0xC9, 0x01 }, "INVENTEC", "INVENTEC Corporation" }, { { 0x64, 0xC9, 0x05 }, "Apple", "Apple, Inc." }, { { 0x64, 0xC9, 0x44 }, "LARKTechnolo", "LARK Technologies, Inc" }, + { { 0x64, 0xCA, 0x80 }, "RealmeChongq", "Realme Chongqing Mobile Telecommunications Corp.,Ltd." }, { { 0x64, 0xCB, 0x5D }, "SIATeleSet", "SIA \"TeleSet\"" }, { { 0x64, 0xCB, 0x9F }, "TecnoMobile", "Tecno Mobile Limited" }, { { 0x64, 0xCB, 0xA3 }, "Pointmobile", "Pointmobile" }, @@ -23633,6 +23769,7 @@ { { 0x64, 0xD2, 0x41 }, "KeithKoep", "Keith & Koep GmbH" }, { { 0x64, 0xD2, 0xC4 }, "Apple", "Apple, Inc." }, { { 0x64, 0xD3, 0x15 }, "HMDGlobal", "HMD Global Oy" }, + { { 0x64, 0xD3, 0x63 }, "Seyond", "Seyond" }, { { 0x64, 0xD4, 0xBD }, "Alpsalpine", "Alpsalpine Co,.Ltd" }, { { 0x64, 0xD4, 0xDA }, "Intel", "Intel Corporate" }, { { 0x64, 0xD4, 0xF0 }, "Netvue,Inc", "Netvue,Inc." }, @@ -23720,6 +23857,7 @@ { { 0x68, 0x05, 0xCA }, "Intel", "Intel Corporate" }, { { 0x68, 0x07, 0x0A }, "TPVisionEuro", "TPVision Europe B.V" }, { { 0x68, 0x07, 0x15 }, "Intel", "Intel Corporate" }, + { { 0x68, 0x08, 0x0D }, "YingshengTec", "Shenzhen Yingsheng Technology Co., LTD" }, { { 0x68, 0x09, 0x27 }, "Apple", "Apple, Inc." }, { { 0x68, 0x09, 0x47 }, "Espressif", "Espressif Inc." }, { { 0x68, 0x0A, 0xD7 }, "YanchengKech", "Yancheng Kecheng Optoelectronic Technology Co., Ltd" }, @@ -23733,11 +23871,12 @@ { { 0x68, 0x14, 0x01 }, "HonHaiPrecis", "Hon Hai Precision Ind. Co.,Ltd." }, { { 0x68, 0x15, 0x79 }, "BrosTrendTec", "BrosTrend Technology LLC" }, { { 0x68, 0x15, 0x90 }, "SagemcomBroa", "Sagemcom Broadband SAS" }, - { { 0x68, 0x15, 0xD3 }, "ZakladyElekt", "Zaklady Elektroniki i Mechaniki Precyzyjnej R&G S.A." }, + { { 0x68, 0x15, 0xD3 }, "R&GPLUSSp", "R&G PLUS Sp. z o.o." }, { { 0x68, 0x16, 0x05 }, "SystemsAndEl", "Systems And Electronic Development FZCO" }, { { 0x68, 0x17, 0x29 }, "Intel", "Intel Corporate" }, { { 0x68, 0x18, 0xD9 }, "HillAFBCAPRE", "Hill AFB - CAPRE Group" }, { { 0x68, 0x19, 0x3F }, "DigitalAirwa", "Digital Airways" }, + { { 0x68, 0x19, 0x77 }, "NewH3CTechno", "New H3C Technologies Co., Ltd" }, { { 0x68, 0x19, 0xAC }, "GuangzhouXia", "Guangzhou Xianyou Intelligent Technogoly CO., LTD" }, { { 0x68, 0x1A, 0x47 }, "Apple", "Apple, Inc." }, { { 0x68, 0x1A, 0x7C }, "SichuanTiany", "Sichuan Tianyi Comheart Telecom Co.,LTD" }, @@ -23754,6 +23893,7 @@ { { 0x68, 0x1F, 0xD8 }, "SiemensIndus", "Siemens Industry, Inc." }, { { 0x68, 0x21, 0x5F }, "EdgecoreNetw", "Edgecore Networks Corporation" }, { { 0x68, 0x22, 0x8E }, "JuniperNetwo", "Juniper Networks" }, + { { 0x68, 0x22, 0x9F }, "GuangzhouVSo", "Guangzhou V-Solution Telecommunication Technology Co.,Ltd." }, { { 0x68, 0x22, 0xE5 }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0x68, 0x23, 0x4B }, "NihonDengyoK", "Nihon Dengyo Kousaku" }, { { 0x68, 0x23, 0xB0 }, "TexasInstrum", "Texas Instruments" }, @@ -23813,6 +23953,7 @@ { { 0x68, 0x47, 0x24 }, "EMMicroelect", "EM Microelectronic" }, { { 0x68, 0x47, 0x49 }, "TexasInstrum", "Texas Instruments" }, { { 0x68, 0x48, 0x98 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, + { { 0x68, 0x48, 0xB4 }, "AltoBeam", "AltoBeam Inc." }, { { 0x68, 0x49, 0x83 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x68, 0x49, 0x92 }, "CiscoMeraki", "Cisco Meraki" }, { { 0x68, 0x49, 0xB2 }, "CarloGavazzi", "Carlo Gavazzi Ltd" }, @@ -23874,6 +24015,7 @@ { { 0x68, 0x6D, 0xBC }, "HikvisionDig", "Hangzhou Hikvision Digital Technology Co.,Ltd." }, { { 0x68, 0x6E, 0x23 }, "Wi3", "Wi3 Inc." }, { { 0x68, 0x6E, 0x48 }, "ProphetElect", "Prophet Electronic Technology Corp.,Ltd" }, + { { 0x68, 0x70, 0x9E }, "SiliconLabor", "Silicon Laboratories" }, { { 0x68, 0x71, 0x61 }, "Cisco", "Cisco Systems, Inc" }, { { 0x68, 0x72, 0x51 }, "Ubiquiti", "Ubiquiti Inc" }, { { 0x68, 0x72, 0xC3 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, @@ -23925,6 +24067,7 @@ { { 0x68, 0x8F, 0x84 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x68, 0x8F, 0xC9 }, "ZhuolianComm", "Zhuolian (Shenzhen) Communication Co., Ltd" }, { { 0x68, 0x92, 0x34 }, "RuckusWirele", "Ruckus Wireless" }, + { { 0x68, 0x92, 0x68 }, "MotorolaMobi", "Motorola Mobility LLC, a Lenovo Company" }, { { 0x68, 0x93, 0x20 }, "NewH3CTechno", "New H3C Technologies Co., Ltd" }, { { 0x68, 0x93, 0x2E }, "HabanaLabs", "Habana Labs LTD." }, { { 0x68, 0x93, 0x61 }, "IntegratedDe", "Integrated Device Technology (Malaysia) Sdn. Bhd." }, @@ -23949,6 +24092,7 @@ { { 0x68, 0x9E, 0x0B }, "Cisco", "Cisco Systems, Inc" }, { { 0x68, 0x9E, 0x19 }, "TexasInstrum", "Texas Instruments" }, { { 0x68, 0x9E, 0x29 }, "zte", "zte corporation" }, + { { 0x68, 0x9E, 0x67 }, "FocuscomTech", "Shenzhen Focuscom Technologies Co., Ltd" }, { { 0x68, 0x9E, 0x6A }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0x68, 0x9F, 0xD4 }, "AmazonTechno", "Amazon Technologies Inc." }, { { 0x68, 0x9F, 0xF0 }, "zte", "zte corporation" }, @@ -24006,6 +24150,7 @@ { { 0x68, 0xC4, 0x4D }, "MotorolaMobi", "Motorola Mobility LLC, a Lenovo Company" }, { { 0x68, 0xC6, 0x3A }, "Espressif", "Espressif Inc." }, { { 0x68, 0xC6, 0xAC }, "Intel", "Intel Corporate" }, + { { 0x68, 0xC8, 0xC0 }, "GsdVietNamTe", "Gsd Viet Nam Technology Company Limited" }, { { 0x68, 0xC8, 0xEB }, "RockwellAuto", "Rockwell Automation" }, { { 0x68, 0xC9, 0x0B }, "TexasInstrum", "Texas Instruments" }, { { 0x68, 0xC9, 0x5D }, "SZKnowactRob", "SZ Knowact Robot Technology Co., Ltd" }, @@ -24066,6 +24211,7 @@ { { 0x68, 0xED, 0xA4 }, "SeavoTechnol", "Shenzhen Seavo Technology Co.,Ltd" }, { { 0x68, 0xEE, 0x4B }, "SharetronicD", "Sharetronic Data Technology Co.,Ltd" }, { { 0x68, 0xEE, 0x88 }, "TINNOMobileT", "Shenzhen TINNO Mobile Technology Corp." }, + { { 0x68, 0xEE, 0x8F }, "Espressif", "Espressif Inc." }, { { 0x68, 0xEE, 0x96 }, "CiscoSPVTG", "Cisco SPVTG" }, { { 0x68, 0xEF, 0x43 }, "Apple", "Apple, Inc." }, { { 0x68, 0xEF, 0xA8 }, "AutomationDi", "AutomationDirect.com" }, @@ -24093,6 +24239,7 @@ { { 0x68, 0xFC, 0xB3 }, "NextLevelSec", "Next Level Security Systems, Inc." }, { { 0x68, 0xFC, 0xB6 }, "OppoMobileTe", "Guangdong Oppo Mobile Telecommunications Corp.,Ltd" }, { { 0x68, 0xFC, 0xCA }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, + { { 0x68, 0xFD, 0xE8 }, "RuckusWirele", "Ruckus Wireless" }, { { 0x68, 0xFE, 0x71 }, "Espressif", "Espressif Inc." }, { { 0x68, 0xFE, 0xDA }, "FiberhomeTel", "Fiberhome Telecommunication Technologies Co.,LTD" }, { { 0x68, 0xFE, 0xF7 }, "Apple", "Apple, Inc." }, @@ -24344,6 +24491,7 @@ { { 0x6C, 0x91, 0x88 }, "Nokia", "Nokia" }, { { 0x6C, 0x92, 0xBF }, "IEIT", "IEIT SYSTEMS Co., Ltd." }, { { 0x6C, 0x92, 0xCF }, "Broadcom", "Broadcom Limited" }, + { { 0x6C, 0x93, 0x13 }, "MellanoxTech", "Mellanox Technologies, Inc." }, { { 0x6C, 0x93, 0x54 }, "YaojinTechno", "Yaojin Technology (Shenzhen) Co., LTD." }, { { 0x6C, 0x93, 0x92 }, "BEKOTechnolo", "BEKO Technologies GmbH" }, { { 0x6C, 0x94, 0x66 }, "Intel", "Intel Corporate" }, @@ -24419,6 +24567,7 @@ { { 0x6C, 0xB9, 0xC5 }, "DeltaNetwork", "Delta Networks, Inc." }, { { 0x6C, 0xBA, 0xB8 }, "SagemcomBroa", "Sagemcom Broadband SAS" }, { { 0x6C, 0xBE, 0xE9 }, "AlcatelLucen", "Alcatel-Lucent IPD" }, + { { 0x6C, 0xBF, 0x2F }, "eero", "eero inc." }, { { 0x6C, 0xBF, 0xB5 }, "NoonTechnolo", "Noon Technology Co., Ltd" }, { { 0x6C, 0xC1, 0x47 }, "XiamenHaninE", "Xiamen Hanin Electronic Technology Co., Ltd" }, { { 0x6C, 0xC1, 0xD2 }, "Commscope", "Commscope" }, @@ -24465,6 +24614,7 @@ { { 0x6C, 0xDE, 0xA9 }, "CiscoMeraki", "Cisco Meraki" }, { { 0x6C, 0xE0, 0x1E }, "Modcam", "Modcam AB" }, { { 0x6C, 0xE0, 0xB0 }, "Sound4", "Sound4" }, + { { 0x6C, 0xE2, 0x0C }, "SDICMicroele", "Hangzhou SDIC Microelectronics Inc." }, { { 0x6C, 0xE2, 0xD3 }, "NewH3CTechno", "New H3C Technologies Co., Ltd" }, { { 0x6C, 0xE3, 0xB6 }, "NeraTelecomm", "Nera Telecommunications Ltd." }, { { 0x6C, 0xE4, 0xA4 }, "SiliconLabor", "Silicon Laboratories" }, @@ -24575,6 +24725,7 @@ { { 0x70, 0x2B, 0x1D }, "EDomusIntern", "E-Domus International Limited" }, { { 0x70, 0x2C, 0x09 }, "Nintendo", "Nintendo Co.,Ltd" }, { { 0x70, 0x2C, 0x1F }, "Wisol", "Wisol" }, + { { 0x70, 0x2D, 0x81 }, "Infinixmobil", "Infinix mobility limited" }, { { 0x70, 0x2D, 0x84 }, "i4CInnovatio", "i4C Innovations" }, { { 0x70, 0x2D, 0xD1 }, "NewingsCommu", "Newings Communication CO., LTD." }, { { 0x70, 0x2E, 0x22 }, "zte", "zte corporation" }, @@ -24699,6 +24850,7 @@ { { 0x70, 0x70, 0x4C }, "PurpleCommun", "Purple Communications, Inc" }, { { 0x70, 0x70, 0x8B }, "Cisco", "Cisco Systems, Inc" }, { { 0x70, 0x70, 0xAA }, "AmazonTechno", "Amazon Technologies Inc." }, + { { 0x70, 0x70, 0xD5 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x70, 0x70, 0xFC }, "Gold&WaterIn", "Gold&Water Industrial Limited" }, { { 0x70, 0x71, 0xB3 }, "Brain", "Brain Corporation" }, { { 0x70, 0x71, 0xBC }, "Pegatron", "Pegatron Corporation" }, @@ -24837,6 +24989,7 @@ { { 0x70, 0xBD, 0xD2 }, "AdvaNetworkS", "Adva Network Security GmbH" }, { { 0x70, 0xBF, 0x3E }, "CharlesRiver", "Charles River Laboratories" }, { { 0x70, 0xBF, 0x92 }, "GNAudio", "GN Audio A/S" }, + { { 0x70, 0xC2, 0x88 }, "Intel", "Intel Corporate" }, { { 0x70, 0xC5, 0x9C }, "SiliconLabor", "Silicon Laboratories" }, { { 0x70, 0xC6, 0xAC }, "BoschAutomot", "Bosch Automotive Aftermarket" }, { { 0x70, 0xC6, 0xDD }, "NewH3CTechno", "New H3C Technologies Co., Ltd" }, @@ -24952,6 +25105,8 @@ { { 0x74, 0x12, 0x13 }, "LinksysUSA", "Linksys USA, Inc" }, { { 0x74, 0x12, 0xB3 }, "ChongqingFug", "Chongqing Fugui Electronics Co.,Ltd." }, { { 0x74, 0x12, 0xBB }, "FiberhomeTel", "Fiberhome Telecommunication Technologies Co.,LTD" }, + { { 0x74, 0x13, 0x48 }, "BlinkbyAmazo", "Blink by Amazon" }, + { { 0x74, 0x13, 0x6A }, "MotorolaMobi", "Motorola Mobility LLC, a Lenovo Company" }, { { 0x74, 0x13, 0xEA }, "Intel", "Intel Corporate" }, { { 0x74, 0x14, 0x89 }, "SRTWireless", "SRT Wireless" }, { { 0x74, 0x14, 0xD0 }, "Apple", "Apple, Inc." }, @@ -24975,6 +25130,7 @@ { { 0x74, 0x24, 0x35 }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0x74, 0x24, 0x9F }, "TIBRO", "TIBRO Corp." }, { { 0x74, 0x24, 0xCA }, "GuangzhouShi", "Guangzhou Shiyuan Electronic Technology Company Limited" }, + { { 0x74, 0x25, 0x54 }, "NVIDIA", "NVIDIA Corporation" }, { { 0x74, 0x25, 0x8A }, "H3CTechnolog", "Hangzhou H3C Technologies Co., Limited" }, { { 0x74, 0x26, 0xAC }, "Cisco", "Cisco Systems, Inc" }, { { 0x74, 0x26, 0xFF }, "zte", "zte corporation" }, @@ -25000,7 +25156,7 @@ { { 0x74, 0x2F, 0x68 }, "AzureWaveTec", "AzureWave Technology Inc." }, { { 0x74, 0x30, 0x9D }, "Infinixmobil", "Infinix mobility limited" }, { { 0x74, 0x30, 0xAF }, "FiberhomeTel", "Fiberhome Telecommunication Technologies Co.,LTD" }, - { { 0x74, 0x31, 0x70 }, "ArcadyanTech", "Arcadyan Technology Corporation" }, + { { 0x74, 0x31, 0x70 }, "Arcadyan", "Arcadyan Corporation" }, { { 0x74, 0x31, 0x74 }, "Apple", "Apple, Inc." }, { { 0x74, 0x31, 0x7E }, "RuckusWirele", "Ruckus Wireless" }, { { 0x74, 0x32, 0x56 }, "NTwareSystem", "NT-ware Systemprg GmbH" }, @@ -25026,6 +25182,7 @@ { { 0x74, 0x3A, 0xF4 }, "Intel", "Intel Corporate" }, { { 0x74, 0x3C, 0x18 }, "TaicangT&WEl", "Taicang T&W Electronics" }, { { 0x74, 0x3C, 0x24 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, + { { 0x74, 0x3C, 0xDE }, "HewlettPacka", "Hewlett Packard Enterprise" }, { { 0x74, 0x3E, 0x2B }, "RuckusWirele", "Ruckus Wireless" }, { { 0x74, 0x3E, 0x39 }, "YUSURTechnol", "YUSUR Technology Co., Ltd." }, { { 0x74, 0x3E, 0xCB }, "Gentricetech", "Gentrice tech" }, @@ -25166,6 +25323,7 @@ { { 0x74, 0x8F, 0x1B }, "MasterImage3", "MasterImage 3D" }, { { 0x74, 0x8F, 0x3C }, "Apple", "Apple, Inc." }, { { 0x74, 0x8F, 0x4D }, "duagonGerman", "duagon Germany GmbH" }, + { { 0x74, 0x8F, 0xBF }, "OppoMobileTe", "Guangdong Oppo Mobile Telecommunications Corp.,Ltd" }, { { 0x74, 0x8F, 0xC2 }, "Cisco", "Cisco Systems, Inc" }, { { 0x74, 0x90, 0x1F }, "RagileNetwor", "Ragile Networks Inc." }, { { 0x74, 0x90, 0x50 }, "RenesasElect", "Renesas Electronics Corporation" }, @@ -25212,6 +25370,7 @@ { { 0x74, 0xA7, 0x22 }, "LGElectronic", "LG Electronics (Mobile Communications)" }, { { 0x74, 0xA7, 0x8E }, "zte", "zte corporation" }, { { 0x74, 0xA7, 0xEA }, "AmazonTechno", "Amazon Technologies Inc." }, + { { 0x74, 0xA9, 0x81 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x74, 0xAB, 0x93 }, "BlinkbyAmazo", "Blink by Amazon" }, { { 0x74, 0xAC, 0x5F }, "QikuInternet", "Qiku Internet Network Scientific (Shenzhen) Co., Ltd." }, { { 0x74, 0xAC, 0xB9 }, "Ubiquiti", "Ubiquiti Inc" }, @@ -25289,6 +25448,7 @@ { { 0x74, 0xD8, 0x73 }, "GeniusTechno", "Guangdong Genius Technology Co., Ltd." }, { { 0x74, 0xD9, 0xEB }, "PetabitScale", "Petabit Scale, Inc." }, { { 0x74, 0xDA, 0x38 }, "EdimaxTechno", "Edimax Technology Co. Ltd." }, + { { 0x74, 0xDA, 0x78 }, "HP", "HP Inc." }, { { 0x74, 0xDA, 0x88 }, "TpLinkTechno", "Tp-Link Technologies Co.,Ltd." }, { { 0x74, 0xDA, 0xDA }, "DLinkInterna", "D-Link International" }, { { 0x74, 0xDA, 0xEA }, "TexasInstrum", "Texas Instruments" }, @@ -25314,6 +25474,7 @@ { { 0x74, 0xE5, 0x43 }, "LiteonTechno", "Liteon Technology Corporation" }, { { 0x74, 0xE5, 0xF9 }, "Intel", "Intel Corporate" }, { { 0x74, 0xE6, 0x0F }, "TecnoMobile", "Tecno Mobile Limited" }, + { { 0x74, 0xE6, 0x65 }, "DynabookTech", "Dynabook Technology (Hangzhou) Inc." }, { { 0x74, 0xE6, 0xB8 }, "LGElectronic", "LG Electronics" }, { { 0x74, 0xE6, 0xC7 }, "LUXSHAREICT", "LUXSHARE-ICT Co., Ltd." }, { { 0x74, 0xE6, 0xE2 }, "Dell", "Dell Inc." }, @@ -25343,6 +25504,7 @@ { { 0x74, 0xF6, 0x1C }, "HTC", "HTC Corporation" }, { { 0x74, 0xF6, 0x61 }, "SchneiderEle", "Schneider Electric Fire & Security Oy" }, { { 0x74, 0xF6, 0x7A }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, + { { 0x74, 0xF7, 0x14 }, "LusharePreci", "Lushare Precision Industry Co.,LTD" }, { { 0x74, 0xF7, 0x26 }, "NeuronRoboti", "Neuron Robotics" }, { { 0x74, 0xF7, 0x37 }, "Kce", "Kce" }, { { 0x74, 0xF7, 0xF6 }, "SunmiTechnol", "Shanghai Sunmi Technology Co.,Ltd." }, @@ -25379,8 +25541,10 @@ { { 0x78, 0x07, 0x38 }, "ZUKElzab", "Z.U.K. Elzab S.A." }, { { 0x78, 0x07, 0x8F }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x78, 0x08, 0x4D }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, + { { 0x78, 0x0A, 0x57 }, "Lightningsem", "Shanghai Lightningsemi Technology Co.,Ltd." }, { { 0x78, 0x0A, 0xC7 }, "BaofengTV", "Baofeng TV Co., Ltd." }, { { 0x78, 0x0B, 0x8C }, "Private", "Private" }, + { { 0x78, 0x0C, 0x48 }, "HongKongYiha", "Hong Kong Yihao Electronic Technology Co., Limited" }, { { 0x78, 0x0C, 0x71 }, "InseegoWirel", "Inseego Wireless, Inc" }, { { 0x78, 0x0C, 0xB8 }, "Intel", "Intel Corporate" }, { { 0x78, 0x0C, 0xF0 }, "Cisco", "Cisco Systems, Inc" }, @@ -25455,11 +25619,13 @@ { { 0x78, 0x30, 0xF5 }, "TBT", "TBT Inc." }, { { 0x78, 0x31, 0x2B }, "zte", "zte corporation" }, { { 0x78, 0x31, 0xC1 }, "Apple", "Apple, Inc." }, + { { 0x78, 0x31, 0xC4 }, "Panascaisehf", "Panascais ehf." }, { { 0x78, 0x32, 0x1B }, "DLinkInterna", "D-Link International" }, { { 0x78, 0x32, 0x4F }, "MillenniumGr", "Millennium Group, Inc." }, { { 0x78, 0x33, 0xC6 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x78, 0x34, 0x09 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x78, 0x34, 0x86 }, "Nokia", "Nokia" }, + { { 0x78, 0x34, 0xB4 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x78, 0x34, 0xFD }, "vivoMobileCo", "vivo Mobile Communication Co., Ltd." }, { { 0x78, 0x35, 0xA0 }, "ZurnIndustri", "Zurn Industries LLC" }, { { 0x78, 0x36, 0x07 }, "CermateTechn", "Cermate Technologies Inc." }, @@ -25485,6 +25651,7 @@ { { 0x78, 0x45, 0x61 }, "CyberTANTech", "CyberTAN Technology Inc." }, { { 0x78, 0x45, 0xB3 }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0x78, 0x45, 0xC4 }, "Dell", "Dell Inc." }, + { { 0x78, 0x45, 0xDC }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x78, 0x46, 0x5C }, "CloudNetwork", "Cloud Network Technology Singapore Pte. Ltd." }, { { 0x78, 0x46, 0x5F }, "FiberhomeTel", "Fiberhome Telecommunication Technologies Co.,LTD" }, { { 0x78, 0x46, 0x7D }, "SKAIChips", "SKAIChips" }, @@ -25506,6 +25673,7 @@ { { 0x78, 0x51, 0x0C }, "LiveU", "LiveU Ltd." }, { { 0x78, 0x52, 0x1A }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x78, 0x52, 0x37 }, "zte", "zte corporation" }, + { { 0x78, 0x52, 0x49 }, "LoxoneElectr", "Loxone Electronics GmbH" }, { { 0x78, 0x52, 0x4A }, "Optonic", "Optonic GmbH" }, { { 0x78, 0x52, 0x62 }, "HojySoftware", "Shenzhen Hojy Software Co., Ltd." }, { { 0x78, 0x53, 0x0D }, "SkyworthDigi", "Shenzhen Skyworth Digital Technology CO., Ltd" }, @@ -25545,6 +25713,7 @@ { { 0x78, 0x64, 0xA0 }, "Cisco", "Cisco Systems, Inc" }, { { 0x78, 0x64, 0xC0 }, "Apple", "Apple, Inc." }, { { 0x78, 0x64, 0xE6 }, "GreenMotiveT", "Green Motive Technology Limited" }, + { { 0x78, 0x64, 0xF0 }, "Soynetic", "Beijing Soynetic Co., Ltd" }, { { 0x78, 0x65, 0x3B }, "ShaoxingOurt", "Shaoxing Ourten Electronics Co., Ltd." }, { { 0x78, 0x65, 0x59 }, "SagemcomBroa", "Sagemcom Broadband SAS" }, { { 0x78, 0x66, 0x9D }, "HuiZhouGaosh", "Hui Zhou Gaoshengda Technology Co.,LTD" }, @@ -25571,6 +25740,7 @@ { { 0x78, 0x75, 0x3E }, "Apple", "Apple, Inc." }, { { 0x78, 0x76, 0x89 }, "eero", "eero inc." }, { { 0x78, 0x76, 0xD9 }, "EXARAGroup", "EXARA Group" }, + { { 0x78, 0x78, 0x26 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x78, 0x78, 0x71 }, "TexasInstrum", "Texas Instruments" }, { { 0x78, 0x79, 0x84 }, "Apple", "Apple, Inc." }, { { 0x78, 0x7A, 0x6F }, "JuiceTechnol", "Juice Technology AG" }, @@ -25599,6 +25769,7 @@ { { 0x78, 0x89, 0x73 }, "Cmc", "Cmc" }, { { 0x78, 0x8A, 0x20 }, "Ubiquiti", "Ubiquiti Inc" }, { { 0x78, 0x8A, 0x86 }, "ChinaDragonT", "China Dragon Technology Limited" }, + { { 0x78, 0x8A, 0xFB }, "HanshowTechn", "Hanshow Technology Co.,Ltd." }, { { 0x78, 0x8B, 0x2A }, "ZhenShiInfor", "Zhen Shi Information Technology (Shanghai) Co., Ltd." }, { { 0x78, 0x8B, 0x77 }, "StandarTelec", "Standar Telecom" }, { { 0x78, 0x8C, 0x4D }, "IndymeSoluti", "Indyme Solutions, LLC" }, @@ -25686,6 +25857,7 @@ { { 0x78, 0xB8, 0xD6 }, "ZebraTechnol", "Zebra Technologies Inc." }, { { 0x78, 0xBA, 0xD0 }, "ShinybowTech", "Shinybow Technology Co. Ltd." }, { { 0x78, 0xBA, 0xF9 }, "Cisco", "Cisco Systems, Inc" }, + { { 0x78, 0xBB, 0x5C }, "NokiaSolutio", "Nokia Solutions and Networks India Private Limited" }, { { 0x78, 0xBB, 0x88 }, "MaxioTechnol", "Maxio Technology (Hangzhou) Ltd." }, { { 0x78, 0xBB, 0xC1 }, "ServercomPri", "Servercom (India) Private Limited" }, { { 0x78, 0xBC, 0x1A }, "Cisco", "Cisco Systems, Inc" }, @@ -25757,6 +25929,7 @@ { { 0x78, 0xDD, 0xD9 }, "GuangzhouShi", "Guangzhou Shiyuan Electronics Co., Ltd." }, { { 0x78, 0xDE, 0xE4 }, "TexasInstrum", "Texas Instruments" }, { { 0x78, 0xDF, 0x72 }, "ImilabTechno", "Shanghai Imilab Technology Co.Ltd" }, + { { 0x78, 0xE0, 0xC5 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x78, 0xE1, 0x03 }, "AmazonTechno", "Amazon Technologies Inc." }, { { 0x78, 0xE1, 0x67 }, "LaunchTech", "Launch Tech Co., Ltd." }, { { 0x78, 0xE2, 0x2C }, "HuaweiDevice", "Huawei Device Co., Ltd." }, @@ -25775,6 +25948,7 @@ { { 0x78, 0xEB, 0x46 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x78, 0xEC, 0x22 }, "QihuiTelecom", "Shanghai Qihui Telecom Technology Co., LTD" }, { { 0x78, 0xEC, 0x74 }, "KylandUSA", "Kyland-USA" }, + { { 0x78, 0xEC, 0xB5 }, "RuijieNetwor", "Ruijie Networks Co.,LTD" }, { { 0x78, 0xED, 0x25 }, "NewH3CTechno", "New H3C Technologies Co., Ltd" }, { { 0x78, 0xED, 0xBC }, "OnePlusTechn", "OnePlus Technology (Shenzhen) Co., Ltd" }, { { 0x78, 0xEE, 0x4C }, "Espressif", "Espressif Inc." }, @@ -25837,6 +26011,7 @@ { { 0x7C, 0x0A, 0x3F }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x7C, 0x0A, 0x50 }, "JMEX", "J-MEX Inc." }, { { 0x7C, 0x0B, 0xC6 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, + { { 0x7C, 0x0C, 0x5F }, "Espressif", "Espressif Inc." }, { { 0x7C, 0x0C, 0x92 }, "SuzhouMobyda", "Suzhou Mobydata Smart System Co.,Ltd." }, { { 0x7C, 0x0C, 0xF6 }, "HuiweiHighte", "Guangdong Huiwei High-tech Co., Ltd." }, { { 0x7C, 0x0C, 0xFA }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, @@ -25932,7 +26107,8 @@ { { 0x7C, 0x4D, 0x8F }, "HP", "HP Inc." }, { { 0x7C, 0x4E, 0x09 }, "SkyworthWire", "Shenzhen Skyworth Wireless Technology Co.,Ltd" }, { { 0x7C, 0x4F, 0x7D }, "Sawwave", "Sawwave" }, - { { 0x7C, 0x4F, 0xB5 }, "ArcadyanTech", "Arcadyan Technology Corporation" }, + { { 0x7C, 0x4F, 0xAD }, "Espressif", "Espressif Inc." }, + { { 0x7C, 0x4F, 0xB5 }, "Arcadyan", "Arcadyan Corporation" }, { { 0x7C, 0x50, 0x49 }, "Apple", "Apple, Inc." }, { { 0x7C, 0x50, 0x79 }, "Intel", "Intel Corporate" }, { { 0x7C, 0x50, 0xDA }, "EJWard", "E.J Ward" }, @@ -25947,6 +26123,7 @@ { { 0x7C, 0x57, 0x58 }, "HP", "HP Inc." }, { { 0x7C, 0x5A, 0x1C }, "Sophos", "Sophos Ltd" }, { { 0x7C, 0x5A, 0x67 }, "JNC", "JNC Systems, Inc." }, + { { 0x7C, 0x5C, 0x8D }, "EMMicroelect", "EM Microelectronic" }, { { 0x7C, 0x5C, 0xF8 }, "Intel", "Intel Corporate" }, { { 0x7C, 0x5E, 0x98 }, "eero", "eero inc." }, { { 0x7C, 0x60, 0x4A }, "Avelon", "Avelon" }, @@ -26067,6 +26244,7 @@ { { 0x7C, 0xA6, 0x1D }, "Mhl", "Mhl, Llc" }, { { 0x7C, 0xA6, 0x2A }, "HewlettPacka", "Hewlett Packard Enterprise" }, { { 0x7C, 0xA7, 0xB0 }, "BilianElectr", "Shenzhen Bilian Electronic Co.,Ltd" }, + { { 0x7C, 0xA8, 0x5D }, "RongcheengGo", "Rongcheeng Goer Technology Co.,Ltd." }, { { 0x7C, 0xA8, 0xEC }, "HewlettPacka", "Hewlett Packard Enterprise" }, { { 0x7C, 0xA9, 0x09 }, "HuiZhouGaosh", "Hui Zhou Gaoshengda Technology Co.,LTD" }, { { 0x7C, 0xA9, 0x6B }, "SyrotechNetw", "Syrotech Networks. Ltd." }, @@ -26188,6 +26366,7 @@ { { 0x7C, 0xE5, 0x6B }, "ESENOptoelec", "ESEN Optoelectronics Technology Co.,Ltd." }, { { 0x7C, 0xE7, 0x12 }, "QuectelWirel", "Quectel Wireless Solutions Co.,Ltd." }, { { 0x7C, 0xE8, 0x7F }, "SagemcomBroa", "Sagemcom Broadband SAS" }, + { { 0x7C, 0xE8, 0xB1 }, "Espressif", "Espressif Inc." }, { { 0x7C, 0xE9, 0x13 }, "FantasiaTrad", "Fantasia Trading LLC" }, { { 0x7C, 0xE9, 0x7C }, "ItelMobile", "Itel Mobile Limited" }, { { 0x7C, 0xE9, 0xD3 }, "HonHaiPrecis", "Hon Hai Precision Ind. Co.,Ltd." }, @@ -26329,6 +26508,7 @@ { { 0x80, 0x3A, 0x59 }, "At&T", "At&T" }, { { 0x80, 0x3A, 0xF4 }, "FiberhomeTel", "Fiberhome Telecommunication Technologies Co.,LTD" }, { { 0x80, 0x3B, 0x2A }, "ABBXiamenLow", "ABB Xiamen Low Voltage Equipment Co.,Ltd." }, + { { 0x80, 0x3B, 0x70 }, "Private", "Private" }, { { 0x80, 0x3B, 0x9A }, "gheceselectr", "ghe-ces electronic ag" }, { { 0x80, 0x3B, 0xF6 }, "LookEasyInte", "Look Easy International Limited" }, { { 0x80, 0x3C, 0x04 }, "TPLink", "TP-Link Systems Inc." }, @@ -26343,6 +26523,7 @@ { { 0x80, 0x42, 0x7C }, "AdolfTedsen", "Adolf Tedsen GmbH & Co. KG" }, { { 0x80, 0x43, 0x3F }, "JuniperNetwo", "Juniper Networks" }, { { 0x80, 0x44, 0xFD }, "ChinaMobileI", "China Mobile (Hangzhou) Information Technology Co., Ltd." }, + { { 0x80, 0x45, 0x6B }, "Espressif", "Espressif Inc." }, { { 0x80, 0x45, 0xDD }, "Intel", "Intel Corporate" }, { { 0x80, 0x47, 0x15 }, "Apple", "Apple, Inc." }, { { 0x80, 0x47, 0x31 }, "PacketDesign", "Packet Design, Inc." }, @@ -26377,6 +26558,7 @@ { { 0x80, 0x58, 0xF8 }, "MotorolaMobi", "Motorola Mobility LLC, a Lenovo Company" }, { { 0x80, 0x59, 0xFD }, "Noviga", "Noviga" }, { { 0x80, 0x5A, 0x04 }, "LGElectronic", "LG Electronics (Mobile Communications)" }, + { { 0x80, 0x5A, 0x70 }, "Fortinet", "Fortinet, Inc." }, { { 0x80, 0x5B, 0x65 }, "LGInnotek", "LG Innotek" }, { { 0x80, 0x5E, 0x0C }, "YealinkNetwo", "Yealink(Xiamen) Network Technology Co.,Ltd." }, { { 0x80, 0x5E, 0x4F }, "FnLinkTechno", "Fn-Link Technology Limited" }, @@ -26412,6 +26594,7 @@ { { 0x80, 0x6C, 0xBC }, "NETNewElectr", "NET New Electronic Technology GmbH" }, { { 0x80, 0x6D, 0x71 }, "AmazonTechno", "Amazon Technologies Inc." }, { { 0x80, 0x6D, 0x97 }, "Private", "Private" }, + { { 0x80, 0x6D, 0xDE }, "Beken", "Beken Corporation" }, { { 0x80, 0x6F, 0x1C }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0x80, 0x6F, 0xB0 }, "TexasInstrum", "Texas Instruments" }, { { 0x80, 0x71, 0x1F }, "JuniperNetwo", "Juniper Networks" }, @@ -26484,6 +26667,7 @@ { { 0x80, 0x97, 0x1B }, "AltenergyPow", "Altenergy Power System,Inc." }, { { 0x80, 0x97, 0x33 }, "ElebaoTechno", "Shenzhen Elebao Technology Co., Ltd" }, { { 0x80, 0x99, 0x9B }, "MurataManufa", "Murata Manufacturing Co., Ltd." }, + { { 0x80, 0x99, 0xCF }, "TexasInstrum", "Texas Instruments" }, { { 0x80, 0x99, 0xE7 }, "Sony", "Sony Corporation" }, { { 0x80, 0x9B, 0x20 }, "Intel", "Intel Corporate" }, { { 0x80, 0x9D, 0x65 }, "FNLINKTECHNO", "FN-LINK TECHNOLOGY Ltd." }, @@ -26497,6 +26681,7 @@ { { 0x80, 0xA1, 0xD7 }, "DareGlobalTe", "Shanghai DareGlobal Technologies Co.,Ltd" }, { { 0x80, 0xA2, 0x35 }, "EdgecoreNetw", "Edgecore Networks Corporation" }, { { 0x80, 0xA5, 0x89 }, "AzureWaveTec", "AzureWave Technology Inc." }, + { { 0x80, 0xA6, 0x3C }, "AmazonTechno", "Amazon Technologies Inc." }, { { 0x80, 0xA7, 0x96 }, "Neuralink", "Neuralink Corp." }, { { 0x80, 0xA8, 0x5D }, "OsterhoutDes", "Osterhout Design Group" }, { { 0x80, 0xA9, 0x97 }, "Apple", "Apple, Inc." }, @@ -26869,10 +27054,11 @@ { { 0x84, 0x96, 0xD8 }, "Commscope", "Commscope" }, { { 0x84, 0x97, 0xB8 }, "Memjet", "Memjet Inc." }, { { 0x84, 0x98, 0x66 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, + { { 0x84, 0x98, 0xA7 }, "TexasInstrum", "Texas Instruments" }, { { 0x84, 0x9A, 0x40 }, "HikvisionDig", "Hangzhou Hikvision Digital Technology Co.,Ltd." }, { { 0x84, 0x9C, 0x02 }, "DruidSoftwar", "Druid Software" }, { { 0x84, 0x9C, 0xA4 }, "MimosaNetwor", "Mimosa Networks" }, - { { 0x84, 0x9C, 0xA6 }, "ArcadyanTech", "Arcadyan Technology Corporation" }, + { { 0x84, 0x9C, 0xA6 }, "Arcadyan", "Arcadyan Corporation" }, { { 0x84, 0x9D, 0x4B }, "BoomtechIndu", "Shenzhen Boomtech Industrial Corporation" }, { { 0x84, 0x9D, 0x64 }, "SMC", "SMC Corporation" }, { { 0x84, 0x9D, 0xC2 }, "MXCHIPInform", "Shanghai MXCHIP Information Technology Co., Ltd." }, @@ -26908,6 +27094,7 @@ { { 0x84, 0xAC, 0xFB }, "CrouzetAutom", "Crouzet Automatismes" }, { { 0x84, 0xAD, 0x58 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x84, 0xAD, 0x8D }, "Apple", "Apple, Inc." }, + { { 0x84, 0xAE, 0xDE }, "XiaomiCommun", "Xiaomi Communications Co Ltd" }, { { 0x84, 0xAF, 0x1F }, "GopherTec", "GopherTec Inc." }, { { 0x84, 0xAF, 0xEC }, "Buffalo", "Buffalo.Inc" }, { { 0x84, 0xB1, 0x53 }, "Apple", "Apple, Inc." }, @@ -27003,6 +27190,7 @@ { { 0x84, 0xEA, 0x99 }, "Vieworks", "Vieworks" }, { { 0x84, 0xEA, 0xD2 }, "Koganei", "Koganei Corporation" }, { { 0x84, 0xEA, 0xED }, "Roku", "Roku, Inc" }, + { { 0x84, 0xEB, 0x0C }, "MellanoxTech", "Mellanox Technologies, Inc." }, { { 0x84, 0xEB, 0x18 }, "TexasInstrum", "Texas Instruments" }, { { 0x84, 0xEB, 0x3E }, "VivintSmartH", "Vivint Smart Home" }, { { 0x84, 0xEB, 0x3F }, "Vivint", "Vivint Inc" }, @@ -27045,7 +27233,7 @@ { { 0x88, 0x01, 0xF9 }, "TexasInstrum", "Texas Instruments" }, { { 0x88, 0x02, 0x64 }, "PascalAudio", "Pascal Audio" }, { { 0x88, 0x03, 0x4C }, "WeifangGoert", "Weifang Goertek Electronics Co.,Ltd" }, - { { 0x88, 0x03, 0x55 }, "ArcadyanTech", "Arcadyan Technology Corporation" }, + { { 0x88, 0x03, 0x55 }, "Arcadyan", "Arcadyan Corporation" }, { { 0x88, 0x03, 0xE9 }, "OppoMobileTe", "Guangdong Oppo Mobile Telecommunications Corp.,Ltd" }, { { 0x88, 0x07, 0x4B }, "LGElectronic", "LG Electronics (Mobile Communications)" }, { { 0x88, 0x08, 0x94 }, "Skullcandy", "Skullcandy" }, @@ -27096,7 +27284,7 @@ { { 0x88, 0x23, 0xFE }, "TTTechComput", "TTTech Computertechnik AG" }, { { 0x88, 0x25, 0x08 }, "MetaPlatform", "Meta Platforms, Inc." }, { { 0x88, 0x25, 0x10 }, "HewlettPacka", "Hewlett Packard Enterprise" }, - { { 0x88, 0x25, 0x2C }, "ArcadyanTech", "Arcadyan Technology Corporation" }, + { { 0x88, 0x25, 0x2C }, "Arcadyan", "Arcadyan Corporation" }, { { 0x88, 0x25, 0x93 }, "TpLinkTechno", "Tp-Link Technologies Co.,Ltd." }, { { 0x88, 0x26, 0x3F }, "ZhejiangUniv", "Zhejiang Uniview Technologies Co.,Ltd." }, { { 0x88, 0x28, 0x7D }, "AltoBeam", "AltoBeam (China) Inc." }, @@ -27357,6 +27545,7 @@ { { 0x88, 0xC2, 0x27 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x88, 0xC2, 0x42 }, "Poynt", "Poynt Co." }, { { 0x88, 0xC2, 0x55 }, "TexasInstrum", "Texas Instruments" }, + { { 0x88, 0xC3, 0x44 }, "Google", "Google, Inc." }, { { 0x88, 0xC3, 0x6E }, "Erenebenlnfo", "Beijing Ereneben lnformation Technology Limited" }, { { 0x88, 0xC3, 0x97 }, "XiaomiMobile", "Beijing Xiaomi Mobile Software Co., Ltd" }, { { 0x88, 0xC3, 0xB3 }, "Sovico", "Sovico" }, @@ -27396,6 +27585,7 @@ { { 0x88, 0xDA, 0x1A }, "RedpineSigna", "Redpine Signals, Inc." }, { { 0x88, 0xDA, 0x33 }, "XiaoyuerNetw", "Beijing Xiaoyuer Network Technology Co., Ltd" }, { { 0x88, 0xDA, 0x36 }, "Calix", "Calix Inc." }, + { { 0x88, 0xDB, 0x08 }, "EMMicroelect", "EM Microelectronic" }, { { 0x88, 0xDC, 0x96 }, "EnGeniusTech", "EnGenius Technologies, Inc." }, { { 0x88, 0xDD, 0x79 }, "Voltaire", "Voltaire" }, { { 0x88, 0xDD, 0xB8 }, "HuaweiDevice", "Huawei Device Co., Ltd." }, @@ -27427,6 +27617,7 @@ { { 0x88, 0xF0, 0x77 }, "Cisco", "Cisco Systems, Inc" }, { { 0x88, 0xF1, 0x55 }, "Espressif", "Espressif Inc." }, { { 0x88, 0xF2, 0xBD }, "GDMideaAirCo", "GD Midea Air-Conditioning Equipment Co.,Ltd." }, + { { 0x88, 0xF3, 0xD5 }, "ZyxelCommuni", "Zyxel Communications Corporation" }, { { 0x88, 0xF4, 0x88 }, "celloncommun", "cellon communications technology(shenzhen)Co.,Ltd." }, { { 0x88, 0xF4, 0x90 }, "JetmobilePte", "Jetmobile Pte Ltd" }, { { 0x88, 0xF4, 0xDA }, "Intel", "Intel Corporate" }, @@ -27498,6 +27689,7 @@ { { 0x8C, 0x16, 0x45 }, "LCFCElectron", "LCFC(Hefei) Electronics Technology co., ltd" }, { { 0x8C, 0x17, 0x59 }, "Intel", "Intel Corporate" }, { { 0x8C, 0x17, 0xB6 }, "HuaweiDevice", "Huawei Device Co., Ltd." }, + { { 0x8C, 0x18, 0x01 }, "zte", "zte corporation" }, { { 0x8C, 0x18, 0x50 }, "ChinaMobileI", "China Mobile (Hangzhou) Information Technology Co., Ltd." }, { { 0x8C, 0x18, 0xD9 }, "RFTechnology", "Shenzhen RF Technology Co., Ltd" }, { { 0x8C, 0x19, 0x52 }, "AmazonTechno", "Amazon Technologies Inc." }, @@ -27565,6 +27757,7 @@ { { 0x8C, 0x49, 0x62 }, "Roku", "Roku, Inc" }, { { 0x8C, 0x49, 0x7A }, "ExtremeNetwo", "Extreme Networks Headquarters" }, { { 0x8C, 0x49, 0xB6 }, "vivoMobileCo", "vivo Mobile Communication Co., Ltd." }, + { { 0x8C, 0x49, 0xCF }, "Private", "Private" }, { { 0x8C, 0x4A, 0xEE }, "GigaTms", "Giga Tms Inc" }, { { 0x8C, 0x4B, 0x14 }, "Espressif", "Espressif Inc." }, { { 0x8C, 0x4B, 0x59 }, "3DImagingSim", "3D Imaging & Simulations Corp" }, @@ -27578,6 +27771,7 @@ { { 0x8C, 0x50, 0x1A }, "Private", "Private" }, { { 0x8C, 0x51, 0x05 }, "ireadygoInfo", "Shenzhen ireadygo Information Technology CO.,LTD." }, { { 0x8C, 0x52, 0x19 }, "SHARP", "SHARP Corporation" }, + { { 0x8C, 0x53, 0x87 }, "HuzhouLuxsha", "Huzhou Luxshare Precision Industry Co.LTD" }, { { 0x8C, 0x53, 0xC3 }, "XiaomiMobile", "Beijing Xiaomi Mobile Software Co., Ltd" }, { { 0x8C, 0x53, 0xD2 }, "ChinaMobileG", "China Mobile Group Device Co.,Ltd." }, { { 0x8C, 0x53, 0xE6 }, "WNC", "WNC Corporation" }, @@ -27724,6 +27918,7 @@ { { 0x8C, 0x97, 0xEA }, "FreeboxSas", "Freebox Sas" }, { { 0x8C, 0x98, 0x06 }, "SeiRobotics", "Shenzhen Sei Robotics Co.,Ltd" }, { { 0x8C, 0x98, 0x6B }, "Apple", "Apple, Inc." }, + { { 0x8C, 0x98, 0x85 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x8C, 0x99, 0xE6 }, "TCTmobile", "TCT mobile ltd" }, { { 0x8C, 0x9A, 0x8F }, "SagemcomBroa", "Sagemcom Broadband SAS" }, { { 0x8C, 0x9B, 0x2D }, "Plantronics", "Plantronics, Inc." }, @@ -27794,6 +27989,7 @@ { { 0x8C, 0xD0, 0x8B }, "WuXiRigosysT", "WuXi Rigosys Technology Co.,LTD" }, { { 0x8C, 0xD0, 0xB2 }, "XiaomiMobile", "Beijing Xiaomi Mobile Software Co., Ltd" }, { { 0x8C, 0xD1, 0x7B }, "CGMobile", "CG Mobile" }, + { { 0x8C, 0xD1, 0xA6 }, "eero", "eero inc." }, { { 0x8C, 0xD2, 0xE9 }, "YokoteSeiko", "Yokote Seiko Co., Ltd." }, { { 0x8C, 0xD3, 0xA2 }, "VisSimAS", "VisSim AS" }, { { 0x8C, 0xD4, 0x8E }, "ItelMobile", "Itel Mobile Limited" }, @@ -27836,6 +28032,7 @@ { { 0x8C, 0xEC, 0x4B }, "Dell", "Dell Inc." }, { { 0x8C, 0xEC, 0x7B }, "Apple", "Apple, Inc." }, { { 0x8C, 0xED, 0xE1 }, "Ubiquiti", "Ubiquiti Inc" }, + { { 0x8C, 0xEE, 0x17 }, "GygesLabsPte", "Gyges Labs Pte.Ltd" }, { { 0x8C, 0xEE, 0xC6 }, "Precepscion", "Precepscion Pty. Ltd." }, { { 0x8C, 0xEE, 0xFD }, "zte", "zte corporation" }, { { 0x8C, 0xF0, 0xDF }, "ZhongyuanYis", "Beijing Zhongyuan Yishang Technology Co.,LTD" }, @@ -27877,6 +28074,7 @@ { { 0x90, 0x03, 0x72 }, "LongnanJunya", "Longnan Junya Digital Technology Co. Ltd." }, { { 0x90, 0x03, 0xB7 }, "Parrot", "Parrot Sa" }, { { 0x90, 0x06, 0x28 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, + { { 0x90, 0x06, 0xDB }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x90, 0x06, 0xF2 }, "TexasInstrum", "Texas Instruments" }, { { 0x90, 0x09, 0x17 }, "Farsightedmo", "Far-sighted mobile" }, { { 0x90, 0x09, 0xD0 }, "Synology", "Synology Incorporated" }, @@ -27884,6 +28082,7 @@ { { 0x90, 0x0A, 0x1A }, "TaicangT&WEl", "Taicang T&W Electronics" }, { { 0x90, 0x0A, 0x39 }, "Wiio", "Wiio, Inc." }, { { 0x90, 0x0A, 0x3A }, "PSGPlasticSe", "PSG Plastic Service GmbH" }, + { { 0x90, 0x0A, 0x48 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x90, 0x0A, 0x62 }, "InventusPowe", "Inventus Power Eletronica do Brasil LTDA" }, { { 0x90, 0x0A, 0x75 }, "NewH3CTechno", "New H3C Technologies Co., Ltd" }, { { 0x90, 0x0A, 0x84 }, "MellanoxTech", "Mellanox Technologies, Inc." }, @@ -27893,6 +28092,7 @@ { { 0x90, 0x0D, 0x66 }, "DigimoreElec", "Digimore Electronics Co., Ltd" }, { { 0x90, 0x0D, 0xCB }, "Commscope", "Commscope" }, { { 0x90, 0x0E, 0x83 }, "MonicoMonito", "Monico Monitoring, Inc." }, + { { 0x90, 0x0E, 0x84 }, "eero", "eero inc." }, { { 0x90, 0x0E, 0x9E }, "SuperElectro", "Shenzhen SuperElectron Technology Co.,Ltd." }, { { 0x90, 0x0E, 0xB3 }, "AmediatechTe", "Shenzhen Amediatech Technology Co., Ltd." }, { { 0x90, 0x0F, 0x0C }, "CloudNetwork", "Cloud Network Technology Singapore Pte. Ltd." }, @@ -27948,6 +28148,7 @@ { { 0x90, 0x2E, 0x16 }, "LCFCElectron", "LCFC(Hefei) Electronics Technology co., ltd" }, { { 0x90, 0x2E, 0x1C }, "Intel", "Intel Corporate" }, { { 0x90, 0x2E, 0x87 }, "LabJack", "LabJack" }, + { { 0x90, 0x30, 0xD6 }, "QuectelWirel", "Quectel Wireless Solutions Co.,Ltd." }, { { 0x90, 0x31, 0x4B }, "AltoBeam", "AltoBeam Inc." }, { { 0x90, 0x31, 0x96 }, "IpComNetwork", "Shenzhen Ip-Com Networks Co.,Ltd." }, { { 0x90, 0x31, 0xCD }, "OnyxHealthca", "Onyx Healthcare Inc." }, @@ -27957,6 +28158,7 @@ { { 0x90, 0x35, 0x6E }, "VodafoneOmni", "Vodafone Omnitel N.V." }, { { 0x90, 0x35, 0xA2 }, "Apple", "Apple, Inc." }, { { 0x90, 0x35, 0xEA }, "SiliconLabor", "Silicon Laboratories" }, + { { 0x90, 0x36, 0xB2 }, "Traton", "Traton Ab" }, { { 0x90, 0x38, 0x09 }, "Ericsson", "Ericsson AB" }, { { 0x90, 0x38, 0x0C }, "Espressif", "Espressif Inc." }, { { 0x90, 0x38, 0xDF }, "ChangzhouTia", "Changzhou Tiannengbo System Co. Ltd." }, @@ -28032,6 +28234,7 @@ { { 0x90, 0x61, 0xAE }, "Intel", "Intel Corporate" }, { { 0x90, 0x62, 0x3F }, "Apple", "Apple, Inc." }, { { 0x90, 0x63, 0x3B }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, + { { 0x90, 0x64, 0x9B }, "Espressif", "Espressif Inc." }, { { 0x90, 0x64, 0xAD }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x90, 0x65, 0x60 }, "EMMicroelect", "EM Microelectronic" }, { { 0x90, 0x65, 0x84 }, "Intel", "Intel Corporate" }, @@ -28096,6 +28299,7 @@ { { 0x90, 0x84, 0x0D }, "Apple", "Apple, Inc." }, { { 0x90, 0x84, 0x2B }, "LEGOSystem", "LEGO System A/S" }, { { 0x90, 0x84, 0x8B }, "HDR10Technol", "HDR10+ Technologies, LLC" }, + { { 0x90, 0x84, 0x8E }, "FujianStarNe", "Fujian Star-Net Communication Co.,Ltd" }, { { 0x90, 0x86, 0x74 }, "SichuanTiany", "Sichuan Tianyi Comheart Telecom Co.,LTD" }, { { 0x90, 0x86, 0x9B }, "zte", "zte corporation" }, { { 0x90, 0x88, 0x55 }, "Cisco", "Cisco Systems, Inc" }, @@ -28115,6 +28319,7 @@ { { 0x90, 0x90, 0x3C }, "TrisonTechno", "Trison Technology Corporation" }, { { 0x90, 0x90, 0x60 }, "RsiVideoTech", "Rsi Video Technologies" }, { { 0x90, 0x91, 0x64 }, "ChongQingLav", "ChongQing Lavid Technology Co., Ltd." }, + { { 0x90, 0x92, 0x2C }, "ChangzhiCity", "Changzhi City Zhouyi Hengtong Information Security Co.,Ltd." }, { { 0x90, 0x92, 0xB4 }, "DiehlBGTDefe", "Diehl BGT Defence GmbH & Co. KG" }, { { 0x90, 0x93, 0x5A }, "Commscope", "Commscope" }, { { 0x90, 0x94, 0x0A }, "AnalogDevice", "Analog Devices, Inc" }, @@ -28189,6 +28394,7 @@ { { 0x90, 0xB9, 0x42 }, "zte", "zte corporation" }, { { 0x90, 0xB9, 0x7D }, "JohnsonOutdo", "Johnson Outdoors Marine Electronics d/b/a Minnkota" }, { { 0x90, 0xB9, 0xF9 }, "MotorolaMobi", "Motorola Mobility LLC, a Lenovo Company" }, + { { 0x90, 0xBA, 0x09 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x90, 0xBD, 0xE6 }, "QuectelWirel", "Quectel Wireless Solutions Co.,Ltd." }, { { 0x90, 0xBF, 0xD9 }, "SmartInnovat", "Smart Innovation LLC" }, { { 0x90, 0xC1, 0x15 }, "Sony", "Sony Corporation" }, @@ -28220,6 +28426,7 @@ { { 0x90, 0xD4, 0x32 }, "zte", "zte corporation" }, { { 0x90, 0xD4, 0x73 }, "vivoMobileCo", "vivo Mobile Communication Co., Ltd." }, { { 0x90, 0xD6, 0x89 }, "HuahaoFangzh", "Huahao Fangzhou Technology Co.,Ltd" }, + { { 0x90, 0xD7, 0x33 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x90, 0xD7, 0x4F }, "Bookeen", "Bookeen" }, { { 0x90, 0xD7, 0xBE }, "WavelabGloba", "Wavelab Global Inc." }, { { 0x90, 0xD7, 0xEB }, "TexasInstrum", "Texas Instruments" }, @@ -28262,6 +28469,7 @@ { { 0x90, 0xEF, 0x4A }, "DongguanLies", "Dongguan Liesheng Electronic Co., Ltd." }, { { 0x90, 0xEF, 0x68 }, "ZyxelCommuni", "Zyxel Communications Corporation" }, { { 0x90, 0xF0, 0x05 }, "XianMoleadTe", "Xi'an Molead Technology Co., Ltd" }, + { { 0x90, 0xF0, 0x4C }, "NokiaSolutio", "Nokia Solutions (Shanghai) Co.,Ltd." }, { { 0x90, 0xF0, 0x52 }, "MEIZUTechnol", "MEIZU Technology Co., Ltd." }, { { 0x90, 0xF1, 0x57 }, "GarminIntern", "Garmin International" }, { { 0x90, 0xF1, 0xAA }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, @@ -28287,6 +28495,7 @@ { { 0x90, 0xFB, 0x5D }, "XiaomiMobile", "Beijing Xiaomi Mobile Software Co., Ltd" }, { { 0x90, 0xFB, 0x93 }, "RenesasDesig", "Renesas Design US Inc." }, { { 0x90, 0xFB, 0xA6 }, "HonHaiPrecis", "Hon Hai Precision Ind. Co.,Ltd." }, + { { 0x90, 0xFC, 0x55 }, "HyveSolution", "Hyve Solutions" }, { { 0x90, 0xFD, 0x61 }, "Apple", "Apple, Inc." }, { { 0x90, 0xFD, 0x73 }, "zte", "zte corporation" }, { { 0x90, 0xFD, 0x9F }, "SiliconLabor", "Silicon Laboratories" }, @@ -28426,6 +28635,7 @@ { { 0x94, 0x53, 0x30 }, "HonHaiPrecis", "Hon Hai Precision Ind. Co.,Ltd." }, { { 0x94, 0x53, 0xFF }, "Intel", "Intel Corporate" }, { { 0x94, 0x54, 0x93 }, "Rigado", "Rigado, LLC" }, + { { 0x94, 0x54, 0xA0 }, "Fosilicon", "Fosilicon CO., Ltd" }, { { 0x94, 0x54, 0xC5 }, "Espressif", "Espressif Inc." }, { { 0x94, 0x54, 0xCE }, "OppoMobileTe", "Guangdong Oppo Mobile Telecommunications Corp.,Ltd" }, { { 0x94, 0x54, 0xDF }, "Yst", "Yst Corp." }, @@ -28433,6 +28643,7 @@ { { 0x94, 0x57, 0xA5 }, "HewlettPacka", "Hewlett Packard" }, { { 0x94, 0x58, 0xCB }, "Nintendo", "Nintendo Co.,Ltd" }, { { 0x94, 0x59, 0x07 }, "HITEBELDENNe", "Shanghai HITE-BELDEN Network Technology Co., Ltd." }, + { { 0x94, 0x59, 0x15 }, "AmazonTechno", "Amazon Technologies Inc." }, { { 0x94, 0x59, 0x2D }, "EKEBuildingT", "EKE Building Technology Systems Ltd" }, { { 0x94, 0x5A, 0xEA }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x94, 0x5A, 0xFC }, "AmazonTechno", "Amazon Technologies Inc." }, @@ -28782,6 +28993,7 @@ { { 0x98, 0x29, 0xA6 }, "CompalInform", "Compal Information (Kunshan) Co., Ltd." }, { { 0x98, 0x2A, 0x0A }, "Intelbras", "Intelbras" }, { { 0x98, 0x2A, 0xFD }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, + { { 0x98, 0x2B, 0xA6 }, "MotorolaMobi", "Motorola Mobility LLC, a Lenovo Company" }, { { 0x98, 0x2C, 0xBC }, "Intel", "Intel Corporate" }, { { 0x98, 0x2C, 0xBE }, "2Wire", "2Wire Inc" }, { { 0x98, 0x2C, 0xC6 }, "SernetTechno", "Sernet (Suzhou) Technologies Corporation" }, @@ -28807,6 +29019,7 @@ { { 0x98, 0x3A, 0x1F }, "Google", "Google, Inc." }, { { 0x98, 0x3B, 0x16 }, "AMPAKTechnol", "AMPAK Technology, Inc." }, { { 0x98, 0x3B, 0x67 }, "DWnetTechnol", "DWnet Technologies(Suzhou) Corporation" }, + { { 0x98, 0x3B, 0x8A }, "SekisuiJushi", "Sekisui Jushi CAP-AI System Co.,Ltd." }, { { 0x98, 0x3B, 0x8F }, "Intel", "Intel Corporate" }, { { 0x98, 0x3C, 0x8C }, "Apple", "Apple, Inc." }, { { 0x98, 0x3D, 0xAE }, "Espressif", "Espressif Inc." }, @@ -29041,6 +29254,7 @@ { { 0x98, 0xE0, 0xD9 }, "Apple", "Apple, Inc." }, { { 0x98, 0xE1, 0x65 }, "Accutome", "Accutome" }, { { 0x98, 0xE2, 0x55 }, "Nintendo", "Nintendo Co.,Ltd" }, + { { 0x98, 0xE3, 0x01 }, "SundrayTechn", "Shenzhen Sundray Technologies company Limited" }, { { 0x98, 0xE4, 0x76 }, "Zentan", "Zentan" }, { { 0x98, 0xE5, 0x5B }, "Intelbras", "Intelbras" }, { { 0x98, 0xE7, 0x43 }, "Dell", "Dell Inc." }, @@ -29146,6 +29360,7 @@ { { 0x9C, 0x1E, 0xCF }, "ValeoTelemat", "Valeo Telematik und Akustik GmbH" }, { { 0x9C, 0x1F, 0xCA }, "AlmightyDigi", "Hangzhou AlmightyDigit Technology Co., Ltd" }, { { 0x9C, 0x1F, 0xDD }, "Accupix", "Accupix Inc." }, + { { 0x9C, 0x1F, 0xE6 }, "SkyworthDisp", "Shenzhen Skyworth Display Technologies Co.,Ltd" }, { { 0x9C, 0x20, 0x7B }, "Apple", "Apple, Inc." }, { { 0x9C, 0x21, 0x6A }, "TpLinkTechno", "Tp-Link Technologies Co.,Ltd." }, { { 0x9C, 0x21, 0x83 }, "Broadcom", "Broadcom Limited" }, @@ -29221,6 +29436,7 @@ { { 0x9C, 0x4F, 0xDA }, "Apple", "Apple, Inc." }, { { 0x9C, 0x50, 0xD1 }, "MurataManufa", "Murata Manufacturing Co., Ltd." }, { { 0x9C, 0x50, 0xEE }, "CambridgeInd", "Cambridge Industries(Group) Co.,Ltd." }, + { { 0x9C, 0x51, 0x87 }, "SunitecTechn", "Sunitec Technology Co.,Limited" }, { { 0x9C, 0x52, 0xF8 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x9C, 0x53, 0x22 }, "TPLink", "TP-Link Systems Inc" }, { { 0x9C, 0x53, 0x85 }, "PTHartonoIst", "PT. Hartono Istana Teknologi" }, @@ -29305,9 +29521,10 @@ { { 0x9C, 0x7D, 0xA3 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0x9C, 0x7D, 0xC0 }, "Tech4homeLda", "Tech4home, Lda" }, { { 0x9C, 0x7F, 0x57 }, "UNICMemoryTe", "UNIC Memory Technology Co Ltd" }, + { { 0x9C, 0x7F, 0x64 }, "NanjingQinhe", "Nanjing Qinheng Microelectronics Co., Ltd." }, { { 0x9C, 0x7F, 0x81 }, "FastTechnolo", "Shenzhen Fast Technologies Co.,Ltd" }, { { 0x9C, 0x80, 0x7D }, "SYSCABLEKore", "SYSCABLE Korea Inc." }, - { { 0x9C, 0x80, 0xDF }, "ArcadyanTech", "Arcadyan Technology Corporation" }, + { { 0x9C, 0x80, 0xDF }, "Arcadyan", "Arcadyan Corporation" }, { { 0x9C, 0x82, 0x3F }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0x9C, 0x82, 0x75 }, "YichipMicroe", "Yichip Microelectronics (Hangzhou) Co.,Ltd" }, { { 0x9C, 0x82, 0x81 }, "vivoMobileCo", "vivo Mobile Communication Co., Ltd." }, @@ -29316,6 +29533,7 @@ { { 0x9C, 0x84, 0xB6 }, "iCommSemicon", "Shenzhen iComm Semiconductor CO.,LTD" }, { { 0x9C, 0x84, 0xBF }, "Apple", "Apple, Inc." }, { { 0x9C, 0x85, 0x66 }, "WingtechMobi", "Wingtech Mobile Communications Co.,Ltd." }, + { { 0x9C, 0x86, 0x2B }, "MotorolaSolu", "Motorola Solutions Malaysia Sdn. Bhd." }, { { 0x9C, 0x86, 0xDA }, "PhoenixGeoph", "Phoenix Geophysics Ltd." }, { { 0x9C, 0x88, 0x24 }, "PetroCloud", "PetroCloud LLC" }, { { 0x9C, 0x88, 0x88 }, "SimacTechnie", "Simac Techniek NV" }, @@ -29356,6 +29574,7 @@ { { 0x9C, 0x9C, 0x1D }, "StarkeyLabs", "Starkey Labs Inc." }, { { 0x9C, 0x9C, 0x1F }, "Espressif", "Espressif Inc." }, { { 0x9C, 0x9C, 0x40 }, "SichuanTiany", "Sichuan Tianyi Comheart Telecom Co.,LTD" }, + { { 0x9C, 0x9D, 0x07 }, "FNLINKTECHNO", "FN-LINK TECHNOLOGY Ltd." }, { { 0x9C, 0x9D, 0x5D }, "Raden", "Raden Inc" }, { { 0x9C, 0x9D, 0x7E }, "XiaomiMobile", "Beijing Xiaomi Mobile Software Co., Ltd" }, { { 0x9C, 0x9E, 0x03 }, "awayfrom", "awayfrom" }, @@ -29425,9 +29644,11 @@ { { 0x9C, 0xC9, 0xEB }, "Netgear", "Netgear" }, { { 0x9C, 0xCA, 0xD9 }, "Nokia", "Nokia Corporation" }, { { 0x9C, 0xCB, 0xF7 }, "CloudStarTec", "Cloud Star Technology Co., Ltd." }, + { { 0x9C, 0xCC, 0x01 }, "Espressif", "Espressif Inc." }, { { 0x9C, 0xCC, 0x83 }, "JuniperNetwo", "Juniper Networks" }, { { 0x9C, 0xCD, 0x42 }, "DongguanLies", "Dongguan Liesheng Electronic Co., Ltd." }, { { 0x9C, 0xCD, 0x82 }, "ChengUeiPrec", "Cheng Uei Precision Industry Co.,Ltd" }, + { { 0x9C, 0xCE, 0x22 }, "PROMEDSoest", "PROMED Soest GmbH" }, { { 0x9C, 0xCE, 0x88 }, "RuijieNetwor", "Ruijie Networks Co.,LTD" }, { { 0x9C, 0xD1, 0xD0 }, "GuangzhouRon", "Guangzhou Ronsuo Electronic Technology Co.,Ltd" }, { { 0x9C, 0xD2, 0x1E }, "HonHaiPrecis", "Hon Hai Precision Ind. Co.,Ltd." }, @@ -29483,6 +29704,7 @@ { { 0x9C, 0xF0, 0x29 }, "IntegratedDe", "Integrated Device Technology (Malaysia) Sdn. Bhd." }, { { 0x9C, 0xF1, 0x55 }, "Nokia", "Nokia" }, { { 0x9C, 0xF1, 0xD4 }, "Roku", "Roku, Inc" }, + { { 0x9C, 0xF2, 0x7E }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0x9C, 0xF3, 0x87 }, "Apple", "Apple, Inc." }, { { 0x9C, 0xF3, 0xAC }, "Apple", "Apple, Inc." }, { { 0x9C, 0xF4, 0x8E }, "Apple", "Apple, Inc." }, @@ -29534,6 +29756,7 @@ { { 0xA0, 0x13, 0x3B }, "HiTiDigital", "HiTi Digital, Inc." }, { { 0xA0, 0x13, 0xCB }, "FiberhomeTel", "Fiberhome Telecommunication Technologies Co.,LTD" }, { { 0xA0, 0x14, 0x3D }, "Parrot", "Parrot Sa" }, + { { 0xA0, 0x14, 0x6D }, "SuzhouNODKAA", "Suzhou NODKA Automation Technology Co.,Ltd" }, { { 0xA0, 0x16, 0x5C }, "Triteka", "Triteka LTD" }, { { 0xA0, 0x17, 0xF1 }, "AllwinnerTec", "Allwinner Technology Co., Ltd" }, { { 0xA0, 0x18, 0x28 }, "Apple", "Apple, Inc." }, @@ -29541,6 +29764,7 @@ { { 0xA0, 0x18, 0x59 }, "YidashiElect", "Shenzhen Yidashi Electronics Co Ltd" }, { { 0xA0, 0x19, 0x17 }, "Bertel", "Bertel S.p.a." }, { { 0xA0, 0x1A, 0xE3 }, "EdgecoreAmer", "Edgecore Americas Networking Corporation" }, + { { 0xA0, 0x1B, 0x04 }, "HefeiHuanxin", "Hefei Huanxin Microelectronics Technology Co., Ltd." }, { { 0xA0, 0x1B, 0x29 }, "SagemcomBroa", "Sagemcom Broadband SAS" }, { { 0xA0, 0x1B, 0x9E }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0xA0, 0x1B, 0xD6 }, "NautitechMin", "Nautitech Mining Systems Pty. Ltd." }, @@ -29819,6 +30043,7 @@ { { 0xA0, 0xC4, 0xA5 }, "SygnHouse", "Sygn House Inc." }, { { 0xA0, 0xC5, 0x62 }, "Commscope", "Commscope" }, { { 0xA0, 0xC5, 0x89 }, "Intel", "Intel Corporate" }, + { { 0xA0, 0xC6, 0xA5 }, "LierdaScienc", "Lierda Science & Technology Group Co., Ltd" }, { { 0xA0, 0xC6, 0xEC }, "ANYKTechnolo", "ShenZhen ANYK Technology Co.,LTD" }, { { 0xA0, 0xC7, 0xD2 }, "Cisco", "Cisco Systems, Inc" }, { { 0xA0, 0xC9, 0x8B }, "NokiaSolutio", "Nokia Solutions and Networks GmbH & Co. KG" }, @@ -29883,6 +30108,7 @@ { { 0xA0, 0xEE, 0xEE }, "CigShanghai", "Cig Shanghai Co Ltd" }, { { 0xA0, 0xEF, 0x84 }, "SeineImageIn", "Seine Image Int'l Co., Ltd" }, { { 0xA0, 0xF2, 0x17 }, "GEMedicalSys", "GE Medical System(China) Co., Ltd." }, + { { 0xA0, 0xF2, 0x61 }, "PaloAltoNetw", "Palo Alto Networks" }, { { 0xA0, 0xF2, 0x62 }, "Espressif", "Espressif Inc." }, { { 0xA0, 0xF3, 0xC1 }, "TpLinkTechno", "Tp-Link Technologies Co.,Ltd." }, { { 0xA0, 0xF3, 0xE4 }, "AlcatelLucen", "Alcatel-Lucent IPD" }, @@ -29937,6 +30163,7 @@ { { 0xA4, 0x0D, 0xBC }, "XiamenIntret", "Xiamen Intretech Inc." }, { { 0xA4, 0x0E, 0x2B }, "Facebook", "Facebook Inc" }, { { 0xA4, 0x0E, 0x75 }, "HewlettPacka", "Hewlett Packard Enterprise" }, + { { 0xA4, 0x0F, 0x25 }, "eero", "eero inc." }, { { 0xA4, 0x0F, 0x98 }, "OppoMobileTe", "Guangdong Oppo Mobile Telecommunications Corp.,Ltd" }, { { 0xA4, 0x10, 0xB6 }, "Cisco", "Cisco Systems, Inc" }, { { 0xA4, 0x11, 0x15 }, "RobertBoschE", "Robert Bosch Engineering and Business Solutions pvt. Ltd." }, @@ -30007,6 +30234,7 @@ { { 0xA4, 0x3A, 0x39 }, "AuroraTechno", "Aurora Technologies Co.,Ltd." }, { { 0xA4, 0x3A, 0x69 }, "Vers", "Vers Inc" }, { { 0xA4, 0x3B, 0x0E }, "HuaweiDevice", "Huawei Device Co., Ltd." }, + { { 0xA4, 0x3C, 0xD4 }, "JBLProfessio", "JBL Professional" }, { { 0xA4, 0x3C, 0xD7 }, "NTXElectroni", "NTX Electronics YangZhou co.,LTD" }, { { 0xA4, 0x3D, 0x78 }, "OppoMobileTe", "Guangdong Oppo Mobile Telecommunications Corp.,Ltd" }, { { 0xA4, 0x3E, 0x51 }, "AnovFrance", "Anov France" }, @@ -30137,6 +30365,7 @@ { { 0xA4, 0x93, 0x40 }, "SupvanInform", "Beijing Supvan Information Technology Co.,Ltd." }, { { 0xA4, 0x93, 0x4C }, "Cisco", "Cisco Systems, Inc" }, { { 0xA4, 0x93, 0xAD }, "HuaweiDevice", "Huawei Device Co., Ltd." }, + { { 0xA4, 0x93, 0xFE }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xA4, 0x94, 0x26 }, "ElgamaElektr", "Elgama-Elektronika Ltd." }, { { 0xA4, 0x94, 0xDC }, "InfiniteClou", "Infinite Clouds" }, { { 0xA4, 0x97, 0x00 }, "Cisco", "Cisco Systems, Inc" }, @@ -30263,6 +30492,7 @@ { { 0xA4, 0xD5, 0xC2 }, "HikvisionDig", "Hangzhou Hikvision Digital Technology Co.,Ltd." }, { { 0xA4, 0xD7, 0x3C }, "SeikoEpson", "Seiko Epson Corporation" }, { { 0xA4, 0xD7, 0x95 }, "WingtechMobi", "Wingtech Mobile Communications Co.,Ltd" }, + { { 0xA4, 0xD7, 0xD6 }, "LinkohNetwor", "Shenzhen Linkoh Network Technology Co;Ltd" }, { { 0xA4, 0xD8, 0x56 }, "Gimbal", "Gimbal, Inc" }, { { 0xA4, 0xD8, 0xCA }, "HongKongWate", "Hong Kong Water World Technology Co. Limited" }, { { 0xA4, 0xD9, 0x31 }, "Apple", "Apple, Inc." }, @@ -30373,6 +30603,7 @@ { { 0xA8, 0x1F, 0x79 }, "YinglingInno", "Yingling Innovations Pte. Ltd." }, { { 0xA8, 0x1F, 0xAF }, "KryptonPolsk", "Krypton Polska" }, { { 0xA8, 0x20, 0x66 }, "Apple", "Apple, Inc." }, + { { 0xA8, 0x21, 0xC8 }, "phoenixtelec", "shenzhen phoenix telecom technology Co.,Ltd." }, { { 0xA8, 0x23, 0x16 }, "Nokia", "Nokia" }, { { 0xA8, 0x23, 0xFE }, "LGElectronic", "LG Electronics" }, { { 0xA8, 0x24, 0x50 }, "Huadianzhong", "Beijing Huadianzhongxin Tech.Co.,Ltd" }, @@ -30507,6 +30738,7 @@ { { 0xA8, 0x72, 0x85 }, "Idt", "Idt, Inc." }, { { 0xA8, 0x74, 0x1D }, "PhoenixConta", "Phoenix Contact GmbH & Co. KG" }, { { 0xA8, 0x74, 0x84 }, "zte", "zte corporation" }, + { { 0xA8, 0x75, 0x4E }, "NexlawnIntel", "Nexlawn Intelligent Technology (Suzhou) Co., Ltd." }, { { 0xA8, 0x75, 0xD6 }, "FreeTekInter", "FreeTek International Co., Ltd." }, { { 0xA8, 0x75, 0xE2 }, "AventuraTech", "Aventura Technologies, Inc." }, { { 0xA8, 0x76, 0x50 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, @@ -30646,7 +30878,7 @@ { { 0xA8, 0xD1, 0x62 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0xA8, 0xD2, 0x36 }, "LightwareVis", "Lightware Visual Engineering" }, { { 0xA8, 0xD3, 0xC8 }, "WachendorffA", "Wachendorff Automation GmbH & CO.KG" }, - { { 0xA8, 0xD3, 0xF7 }, "ArcadyanTech", "Arcadyan Technology Corporation" }, + { { 0xA8, 0xD3, 0xF7 }, "Arcadyan", "Arcadyan Corporation" }, { { 0xA8, 0xD4, 0x09 }, "USA111", "USA 111 Inc" }, { { 0xA8, 0xD4, 0x98 }, "AviraOperati", "Avira Operations GmbH & Co. KG" }, { { 0xA8, 0xD4, 0xE0 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, @@ -30659,6 +30891,7 @@ { { 0xA8, 0xDB, 0x03 }, "SamsungElect", "Samsung Electro-Mechanics(Thailand)" }, { { 0xA8, 0xDC, 0x5A }, "DigitalWatch", "Digital Watchdog" }, { { 0xA8, 0xDD, 0x9F }, "QuectelWirel", "Quectel Wireless Solutions Co.,Ltd." }, + { { 0xA8, 0xDD, 0xEC }, "BroadLinkTec", "Hangzhou BroadLink Technology Co., Ltd" }, { { 0xA8, 0xDE, 0x68 }, "WideTechnolo", "Beijing Wide Technology Co.,Ltd" }, { { 0xA8, 0xE0, 0x18 }, "Nokia", "Nokia Corporation" }, { { 0xA8, 0xE2, 0x07 }, "GOIPGlobalSe", "GOIP Global Services Pvt. Ltd." }, @@ -30687,6 +30920,7 @@ { { 0xA8, 0xEF, 0x5F }, "RealmeChongq", "Realme Chongqing Mobile Telecommunications Corp.,Ltd." }, { { 0xA8, 0xF0, 0x38 }, "ShenZhenShiJ", "Shen Zhen Shi Jin Hua Tai Electronics Co.,Ltd" }, { { 0xA8, 0xF0, 0x59 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, + { { 0xA8, 0xF0, 0x7C }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0xA8, 0xF1, 0xB2 }, "AllwinnerTec", "Allwinner Technology Co., Ltd" }, { { 0xA8, 0xF2, 0x66 }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0xA8, 0xF2, 0x74 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, @@ -30731,6 +30965,7 @@ { { 0xAC, 0x04, 0x25 }, "ballb", "ball-b GmbH Co KG" }, { { 0xAC, 0x04, 0x81 }, "JiangsuHuaxi", "Jiangsu Huaxing Electronics Co., Ltd." }, { { 0xAC, 0x04, 0xAA }, "GoPro", "GoPro" }, + { { 0xAC, 0x05, 0xC7 }, "Intel", "Intel Corporate" }, { { 0xAC, 0x06, 0x13 }, "Senselogix", "Senselogix Ltd" }, { { 0xAC, 0x06, 0x50 }, "BaosightSoft", "Shanghai Baosight Software Co., Ltd" }, { { 0xAC, 0x06, 0xC7 }, "ServerNet", "ServerNet S.r.l." }, @@ -30780,9 +31015,11 @@ { { 0xAC, 0x20, 0xAA }, "DMATEK", "DMATEK Co., Ltd." }, { { 0xAC, 0x22, 0x05 }, "CompalBroadb", "Compal Broadband Networks, Inc." }, { { 0xAC, 0x22, 0x0B }, "ASUSTekCOMPU", "ASUSTek COMPUTER INC." }, + { { 0xAC, 0x22, 0x41 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xAC, 0x23, 0x16 }, "Mist", "Mist Systems, Inc." }, { { 0xAC, 0x23, 0x34 }, "Infinixmobil", "Infinix mobility limited" }, { { 0xAC, 0x23, 0x3F }, "MinewTechnol", "Shenzhen Minew Technologies Co., Ltd." }, + { { 0xAC, 0x24, 0x77 }, "TinnoMobileT", "Shenzhen Tinno Mobile Technology Corp" }, { { 0xAC, 0x27, 0x6E }, "Espressif", "Espressif Inc." }, { { 0xAC, 0x29, 0x29 }, "Infinixmobil", "Infinix mobility limited" }, { { 0xAC, 0x29, 0x3A }, "Apple", "Apple, Inc." }, @@ -30792,6 +31029,7 @@ { { 0xAC, 0x2D, 0xA3 }, "TXTR", "TXTR GmbH" }, { { 0xAC, 0x2D, 0xA9 }, "TecnoMobile", "Tecno Mobile Limited" }, { { 0xAC, 0x2F, 0xA8 }, "Humannix", "Humannix Co.,Ltd." }, + { { 0xAC, 0x30, 0x19 }, "HailingweiEl", "Shenzhen Hailingwei Electronics Co., Ltd." }, { { 0xAC, 0x31, 0x84 }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0xAC, 0x31, 0x9D }, "TGNETBotoneT", "Shenzhen TG-NET Botone Technology Co.,Ltd." }, { { 0xAC, 0x33, 0x0B }, "JapanCompute", "Japan Computer Vision Corp." }, @@ -30831,8 +31069,10 @@ { { 0xAC, 0x43, 0x30 }, "VersaNetwork", "Versa Networks" }, { { 0xAC, 0x44, 0xF2 }, "Yamaha", "Yamaha Corporation" }, { { 0xAC, 0x45, 0x00 }, "Apple", "Apple, Inc." }, + { { 0xAC, 0x45, 0xB0 }, "JidaoTechnol", "Shenzhen Jidao Technology Co Ltd" }, { { 0xAC, 0x45, 0xCA }, "OppoMobileTe", "Guangdong Oppo Mobile Telecommunications Corp.,Ltd" }, { { 0xAC, 0x45, 0xEF }, "Intel", "Intel Corporate" }, + { { 0xAC, 0x46, 0xA7 }, "SercommPhili", "Sercomm Philippines Inc" }, { { 0xAC, 0x47, 0x1B }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0xAC, 0x47, 0x23 }, "Genelec", "Genelec" }, { { 0xAC, 0x48, 0x2D }, "RalinwiNanji", "Ralinwi Nanjing Electronic Technology Co., Ltd." }, @@ -30857,6 +31097,7 @@ { { 0xAC, 0x51, 0x35 }, "MpiTech", "Mpi Tech" }, { { 0xAC, 0x51, 0xAB }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xAC, 0x51, 0xEE }, "Adtran", "Adtran Inc" }, + { { 0xAC, 0x53, 0x22 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0xAC, 0x54, 0x74 }, "ChinaMobileI", "China Mobile IOT Company Limited" }, { { 0xAC, 0x54, 0xEC }, "IEEEP1823Sta", "IEEE P1823 Standards Working Group" }, { { 0xAC, 0x56, 0x2C }, "LavaInternat", "Lava International(H.K) Limited" }, @@ -30884,6 +31125,7 @@ { { 0xAC, 0x61, 0xB9 }, "WAMATechnolo", "WAMA Technology Limited" }, { { 0xAC, 0x61, 0xEA }, "Apple", "Apple, Inc." }, { { 0xAC, 0x62, 0x0D }, "JabilCircuit", "Jabil Circuit(Wuxi) Co.,Ltd" }, + { { 0xAC, 0x62, 0xFF }, "VantivaUSA", "Vantiva USA LLC" }, { { 0xAC, 0x63, 0xBE }, "AmazonTechno", "Amazon Technologies Inc." }, { { 0xAC, 0x64, 0x17 }, "Siemens", "Siemens AG" }, { { 0xAC, 0x64, 0x62 }, "zte", "zte corporation" }, @@ -30947,6 +31189,7 @@ { { 0xAC, 0x86, 0x74 }, "OpenMesh", "Open Mesh, Inc." }, { { 0xAC, 0x86, 0x7E }, "CreateNewTec", "Create New Technology (HK) Limited Company" }, { { 0xAC, 0x86, 0xA3 }, "Apple", "Apple, Inc." }, + { { 0xAC, 0x87, 0x46 }, "HuizhouBYDEl", "Huizhou BYD Electronic Co., Ltd." }, { { 0xAC, 0x87, 0xA3 }, "Apple", "Apple, Inc." }, { { 0xAC, 0x88, 0x66 }, "SkyworthDigi", "Shenzhen Skyworth Digital Technology CO., Ltd" }, { { 0xAC, 0x88, 0xFD }, "Apple", "Apple, Inc." }, @@ -30998,6 +31241,7 @@ { { 0xAC, 0xA7, 0x04 }, "Espressif", "Espressif Inc." }, { { 0xAC, 0xA7, 0xF1 }, "TPLink", "TP-Link Systems Inc." }, { { 0xAC, 0xA8, 0x8E }, "SHARP", "SHARP Corporation" }, + { { 0xAC, 0xA8, 0x99 }, "TexasInstrum", "Texas Instruments" }, { { 0xAC, 0xA9, 0x19 }, "TrekStor", "TrekStor GmbH" }, { { 0xAC, 0xA9, 0xA0 }, "Audioengine", "Audioengine, Ltd." }, { { 0xAC, 0xAB, 0x2E }, "LasNubesTech", "Beijing LasNubes Technology Co., Ltd." }, @@ -31005,6 +31249,7 @@ { { 0xAC, 0xAB, 0xBF }, "AthenTek", "AthenTek Inc." }, { { 0xAC, 0xAC, 0xE2 }, "ChanghongTra", "Changhong (Hongkong) Trading Limited" }, { { 0xAC, 0xAD, 0x4B }, "zte", "zte corporation" }, + { { 0xAC, 0xAD, 0xEF }, "WananHongshe", "Wanan Hongsheng Electronic Co.Ltd" }, { { 0xAC, 0xAE, 0x19 }, "Roku", "Roku, Inc" }, { { 0xAC, 0xAF, 0xB9 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0xAC, 0xB1, 0x81 }, "BeldenMoores", "Belden Mooresville" }, @@ -31102,6 +31347,7 @@ { { 0xAC, 0xE4, 0x2E }, "SKhynix", "SK hynix" }, { { 0xAC, 0xE4, 0xB5 }, "Apple", "Apple, Inc." }, { { 0xAC, 0xE5, 0xF0 }, "DopplerLabs", "Doppler Labs" }, + { { 0xAC, 0xE6, 0x06 }, "HonorDevice", "Honor Device Co., Ltd." }, { { 0xAC, 0xE6, 0x4B }, "BaojiaBatter", "Shenzhen Baojia Battery Technology Co., Ltd." }, { { 0xAC, 0xE6, 0xBB }, "Google", "Google, Inc." }, { { 0xAC, 0xE7, 0x7B }, "SichuanTiany", "Sichuan Tianyi Comheart Telecom Co.,LTD" }, @@ -31196,6 +31442,7 @@ { { 0xB0, 0x28, 0x5B }, "JUHUATechnol", "JUHUA Technology Inc." }, { { 0xB0, 0x2A, 0x1F }, "WingtechGrou", "Wingtech Group (HongKong)Limited" }, { { 0xB0, 0x2A, 0x43 }, "Google", "Google, Inc." }, + { { 0xB0, 0x2B, 0x64 }, "Cisco", "Cisco Systems, Inc" }, { { 0xB0, 0x2E, 0xBA }, "EardaTechnol", "Earda Technologies co Ltd" }, { { 0xB0, 0x2E, 0xE0 }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0xB0, 0x30, 0x55 }, "ChinaMobileI", "China Mobile IOT Company Limited" }, @@ -31221,6 +31468,7 @@ { { 0xB0, 0x3B, 0x1B }, "KontrolnextT", "Kontrolnext Technology (Beijing) Ltd." }, { { 0xB0, 0x3C, 0xDC }, "Intel", "Intel Corporate" }, { { 0xB0, 0x3D, 0x96 }, "VisionValley", "Vision Valley FZ LLC" }, + { { 0xB0, 0x3D, 0xBF }, "ceitacommuni", "shenzhen ceita communications technology co.,ltd" }, { { 0xB0, 0x3D, 0xC2 }, "Waspartifici", "Wasp artificial intelligence(Shenzhen) Co.,ltd" }, { { 0xB0, 0x3E, 0x51 }, "SkyUk", "Sky Uk Limited" }, { { 0xB0, 0x3E, 0xB0 }, "MICRODIA", "MICRODIA Ltd." }, @@ -31312,6 +31560,7 @@ { { 0xB0, 0x79, 0x3C }, "Revolv", "Revolv Inc" }, { { 0xB0, 0x79, 0x94 }, "MotorolaMobi", "Motorola Mobility LLC, a Lenovo Company" }, { { 0xB0, 0x7A, 0x16 }, "Roehn", "Roehn" }, + { { 0xB0, 0x7A, 0xA4 }, "GuangzhouPun", "Guangzhou Punp Electronics Manufacturing Co., Ltd." }, { { 0xB0, 0x7A, 0xDF }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xB0, 0x7B, 0x25 }, "Dell", "Dell Inc." }, { { 0xB0, 0x7C, 0x51 }, "RuckusWirele", "Ruckus Wireless" }, @@ -31369,6 +31618,7 @@ { { 0xB0, 0x99, 0xD7 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0xB0, 0x9A, 0xE2 }, "STEMMERIMAGI", "STEMMER IMAGING GmbH" }, { { 0xB0, 0x9B, 0xD4 }, "GNHSoftwareI", "GNH Software India Private Limited" }, + { { 0xB0, 0x9C, 0x18 }, "TaichiTechno", "Shenzhen Taichi Technology Limited" }, { { 0xB0, 0x9C, 0x63 }, "XiaomiCommun", "Xiaomi Communications Co Ltd" }, { { 0xB0, 0x9E, 0x1B }, "ButlrTechnol", "Butlr Technologies, Inc." }, { { 0xB0, 0x9F, 0xBA }, "Apple", "Apple, Inc." }, @@ -31503,6 +31753,7 @@ { { 0xB0, 0xEE, 0x45 }, "AzureWaveTec", "AzureWave Technology Inc." }, { { 0xB0, 0xEE, 0x7B }, "Roku", "Roku, Inc" }, { { 0xB0, 0xF0, 0x0C }, "DongguanWecx", "Dongguan Wecxw CO.,Ltd." }, + { { 0xB0, 0xF0, 0x79 }, "OppoMobileTe", "Guangdong Oppo Mobile Telecommunications Corp.,Ltd" }, { { 0xB0, 0xF1, 0xA3 }, "FengfanTechn", "Fengfan (BeiJing) Technology Co., Ltd." }, { { 0xB0, 0xF1, 0xAE }, "eero", "eero inc." }, { { 0xB0, 0xF1, 0xBC }, "DhemaxIngeni", "Dhemax Ingenieros Ltda" }, @@ -31561,6 +31812,7 @@ { { 0xB4, 0x14, 0xE6 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xB4, 0x15, 0x13 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xB4, 0x15, 0x7E }, "Celona", "Celona Inc." }, + { { 0xB4, 0x15, 0x84 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0xB4, 0x16, 0x78 }, "JuniperNetwo", "Juniper Networks" }, { { 0xB4, 0x17, 0x4D }, "ProjectMonit", "Project Monitor Inc" }, { { 0xB4, 0x17, 0x80 }, "DTIGroup", "DTI Group Ltd" }, @@ -31676,6 +31928,7 @@ { { 0xB4, 0x62, 0xAD }, "ElysiaGerman", "Elysia Germany GmbH" }, { { 0xB4, 0x63, 0x6F }, "NokiaSolutio", "Nokia Solutions and Networks GmbH & Co. KG" }, { { 0xB4, 0x64, 0x15 }, "GuangzhouVSo", "Guangzhou V-Solution Telecommunication Technology Co.,Ltd." }, + { { 0xB4, 0x65, 0xDC }, "ChinaDragonT", "China Dragon Technology Limited" }, { { 0xB4, 0x66, 0x98 }, "Zealabs", "Zealabs srl" }, { { 0xB4, 0x67, 0xE9 }, "QingdaoGoerT", "Qingdao GoerTek Technology Co., Ltd." }, { { 0xB4, 0x69, 0x21 }, "Intel", "Intel Corporate" }, @@ -31791,6 +32044,7 @@ { { 0xB4, 0xB5, 0x42 }, "HubbellPower", "Hubbell Power Systems, Inc." }, { { 0xB4, 0xB5, 0xAF }, "MinsungElect", "Minsung Electronics" }, { { 0xB4, 0xB5, 0xB6 }, "ChongqingFug", "Chongqing Fugui Electronics Co.,Ltd." }, + { { 0xB4, 0xB6, 0x50 }, "RealmeChongq", "Realme Chongqing Mobile Telecommunications Corp.,Ltd." }, { { 0xB4, 0xB6, 0x76 }, "Intel", "Intel Corporate" }, { { 0xB4, 0xB6, 0x86 }, "HewlettPacka", "Hewlett Packard" }, { { 0xB4, 0xB7, 0x42 }, "AmazonTechno", "Amazon Technologies Inc." }, @@ -31850,6 +32104,7 @@ { { 0xB4, 0xDD, 0xE0 }, "AmphenolAirw", "Shanghai Amphenol Airwave Communication Electronics Co.,Ltd." }, { { 0xB4, 0xDE, 0x31 }, "Cisco", "Cisco Systems, Inc" }, { { 0xB4, 0xDE, 0xDF }, "zte", "zte corporation" }, + { { 0xB4, 0xDF, 0x09 }, "Flux", "Flux::" }, { { 0xB4, 0xDF, 0x3B }, "Chromlech", "Chromlech" }, { { 0xB4, 0xDF, 0x91 }, "CiscoMeraki", "Cisco Meraki" }, { { 0xB4, 0xDF, 0xFA }, "LitemaxElect", "Litemax Electronics Inc." }, @@ -31926,6 +32181,7 @@ { { 0xB8, 0x08, 0xCF }, "Intel", "Intel Corporate" }, { { 0xB8, 0x08, 0xD7 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xB8, 0x09, 0x8A }, "Apple", "Apple, Inc." }, + { { 0xB8, 0x0B, 0x9A }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xB8, 0x0B, 0x9D }, "ROPEXIndustr", "ROPEX Industrie-Elektronik GmbH" }, { { 0xB8, 0x0B, 0xDA }, "GDMideaAirCo", "GD Midea Air-Conditioning Equipment Co.,Ltd." }, { { 0xB8, 0x10, 0xD4 }, "Masimo", "Masimo Corporation" }, @@ -31986,6 +32242,7 @@ { { 0xB8, 0x37, 0x65 }, "OppoMobileTe", "Guangdong Oppo Mobile Telecommunications Corp.,Ltd" }, { { 0xB8, 0x37, 0xB2 }, "HewlettPacka", "Hewlett Packard Enterprise" }, { { 0xB8, 0x38, 0x61 }, "Cisco", "Cisco Systems, Inc" }, + { { 0xB8, 0x38, 0x65 }, "HewlettPacka", "Hewlett Packard Enterprise" }, { { 0xB8, 0x38, 0xCA }, "KyokkoTsushi", "Kyokko Tsushin System CO.,LTD" }, { { 0xB8, 0x38, 0xEF }, "ADVAOpticalN", "ADVA Optical Networking Ltd." }, { { 0xB8, 0x3A, 0x08 }, "TendaTechnol", "Tenda Technology Co.,Ltd.Dongguan branch" }, @@ -32032,6 +32289,7 @@ { { 0xB8, 0x56, 0x00 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xB8, 0x56, 0xBD }, "Itt", "Itt Llc" }, { { 0xB8, 0x57, 0x76 }, "lignex1", "lignex1" }, + { { 0xB8, 0x57, 0xD6 }, "Cisco", "Cisco Systems, Inc" }, { { 0xB8, 0x57, 0xD8 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0xB8, 0x58, 0x10 }, "Numera", "Numera, Inc." }, { { 0xB8, 0x58, 0xFF }, "AristaNetwor", "Arista Networks" }, @@ -32084,6 +32342,7 @@ { { 0xB8, 0x78, 0x79 }, "RocheDiagnos", "Roche Diagnostics GmbH" }, { { 0xB8, 0x79, 0x7E }, "SecureMeters", "Secure Meters (UK) Limited" }, { { 0xB8, 0x7A, 0xC9 }, "Siemens", "Siemens Ltd." }, + { { 0xB8, 0x7B, 0x4D }, "Espressif", "Espressif Inc." }, { { 0xB8, 0x7B, 0xC5 }, "Apple", "Apple, Inc." }, { { 0xB8, 0x7B, 0xD4 }, "Google", "Google, Inc." }, { { 0xB8, 0x7C, 0x6F }, "NXPManagemen", "NXP (China) Management Ltd." }, @@ -32136,6 +32395,7 @@ { { 0xB8, 0x94, 0xD9 }, "TexasInstrum", "Texas Instruments" }, { { 0xB8, 0x94, 0xE7 }, "XiaomiCommun", "Xiaomi Communications Co Ltd" }, { { 0xB8, 0x96, 0x74 }, "AllDSP", "AllDSP GmbH & Co. KG" }, + { { 0xB8, 0x97, 0x34 }, "SiliconLabor", "Silicon Laboratories" }, { { 0xB8, 0x97, 0x5A }, "BIOSTARMicro", "BIOSTAR Microtech Int'l Corp." }, { { 0xB8, 0x97, 0x7A }, "NokiaSolutio", "Nokia Solutions and Networks GmbH & Co. KG" }, { { 0xB8, 0x98, 0xAD }, "MotorolaMobi", "Motorola Mobility LLC, a Lenovo Company" }, @@ -32151,6 +32411,7 @@ { { 0xB8, 0x9B, 0xC9 }, "SMCNetworks", "SMC Networks Inc" }, { { 0xB8, 0x9B, 0xE4 }, "ABBPowerPowe", "ABB Power Systems Power Generation" }, { { 0xB8, 0x9C, 0x13 }, "AlpsAlpine", "Alps Alpine" }, + { { 0xB8, 0x9D, 0xE5 }, "ASIXElectron", "ASIX Electronics Corporation" }, { { 0xB8, 0x9E, 0xA6 }, "SpbecMining", "Spbec-Mining Co.Ltd" }, { { 0xB8, 0x9F, 0x09 }, "WNC", "WNC Corporation" }, { { 0xB8, 0x9F, 0xCC }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, @@ -32236,6 +32497,7 @@ { { 0xB8, 0xCE, 0xED }, "Broadcom", "Broadcom" }, { { 0xB8, 0xCE, 0xF6 }, "MellanoxTech", "Mellanox Technologies, Inc." }, { { 0xB8, 0xD0, 0x6F }, "GuangzhouHku", "Guangzhou Hkust Fok Ying Tung Research Institute" }, + { { 0xB8, 0xD0, 0x8F }, "QuectelWirel", "Quectel Wireless Solutions Co.,Ltd." }, { { 0xB8, 0xD0, 0xF0 }, "Fcnt", "Fcnt Llc" }, { { 0xB8, 0xD3, 0x09 }, "CoxCommunica", "Cox Communications, Inc" }, { { 0xB8, 0xD4, 0x3E }, "vivoMobileCo", "vivo Mobile Communication Co., Ltd." }, @@ -32247,17 +32509,20 @@ { { 0xB8, 0xD5, 0x0B }, "SunitecEnter", "Sunitec Enterprise Co.,Ltd" }, { { 0xB8, 0xD5, 0x26 }, "ZyxelCommuni", "Zyxel Communications Corporation" }, { { 0xB8, 0xD5, 0x6B }, "Mirka", "Mirka Ltd." }, + { { 0xB8, 0xD5, 0xAD }, "Nokia", "Nokia" }, { { 0xB8, 0xD6, 0x1A }, "Espressif", "Espressif Inc." }, { { 0xB8, 0xD6, 0xF6 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xB8, 0xD7, 0xAF }, "MurataManufa", "Murata Manufacturing Co., Ltd." }, { { 0xB8, 0xD8, 0x2D }, "QingdaoIntel", "Qingdao Intelligent&Precise Electronics Co.,Ltd." }, { { 0xB8, 0xD9, 0x4D }, "SagemcomBroa", "Sagemcom Broadband SAS" }, { { 0xB8, 0xD9, 0xCE }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, + { { 0xB8, 0xDA, 0x5E }, "TexasInstrum", "Texas Instruments" }, { { 0xB8, 0xDA, 0xE8 }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0xB8, 0xDA, 0xF1 }, "Strahlenschu", "Strahlenschutz- Entwicklungs- und Ausruestungsgesellschaft mbH" }, { { 0xB8, 0xDA, 0xF7 }, "AdvancedPhot", "Advanced Photonics, Inc." }, { { 0xB8, 0xDB, 0x1C }, "IntegratedDe", "Integrated Device Technology (Malaysia) Sdn. Bhd." }, { { 0xB8, 0xDB, 0x38 }, "Google", "Google, Inc." }, + { { 0xB8, 0xDC, 0x28 }, "ExtremeNetwo", "Extreme Networks Headquarters" }, { { 0xB8, 0xDC, 0x87 }, "IAI", "IAI Corporation" }, { { 0xB8, 0xDD, 0x71 }, "zte", "zte corporation" }, { { 0xB8, 0xDD, 0xE8 }, "SichuanTiany", "Sichuan Tianyi Comheart Telecom Co.,LTD" }, @@ -32500,6 +32765,7 @@ { { 0xBC, 0x67, 0x1C }, "Cisco", "Cisco Systems, Inc" }, { { 0xBC, 0x67, 0x78 }, "Apple", "Apple, Inc." }, { { 0xBC, 0x67, 0x84 }, "Environics", "Environics Oy" }, + { { 0xBC, 0x68, 0xC3 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xBC, 0x69, 0xCB }, "PanasonicEle", "Panasonic Electric Works Networks Co., Ltd." }, { { 0xBC, 0x6A, 0x16 }, "tdvine", "tdvine" }, { { 0xBC, 0x6A, 0x29 }, "TexasInstrum", "Texas Instruments" }, @@ -32569,6 +32835,7 @@ { { 0xBC, 0x92, 0x6B }, "Apple", "Apple, Inc." }, { { 0xBC, 0x93, 0x07 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0xBC, 0x93, 0x25 }, "NingboJoyson", "Ningbo Joyson Preh Car Connect Co.,Ltd." }, + { { 0xBC, 0x93, 0x2A }, "SiliconLabor", "Silicon Laboratories" }, { { 0xBC, 0x94, 0x24 }, "TCTmobile", "TCT mobile ltd" }, { { 0xBC, 0x96, 0x80 }, "GongjinElect", "Shenzhen Gongjin Electronics Co.,Lt" }, { { 0xBC, 0x96, 0xE5 }, "SercommPhili", "Sercomm Philippines Inc" }, @@ -32629,6 +32896,7 @@ { { 0xBC, 0xB2, 0x2B }, "EMTech", "EM-Tech" }, { { 0xBC, 0xB2, 0xCC }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0xBC, 0xB3, 0x08 }, "HongkongRage", "Hongkong Ragentek Communication Technology Co.,Limited" }, + { { 0xBC, 0xB3, 0x0E }, "Cisco", "Cisco Systems, Inc" }, { { 0xBC, 0xB4, 0xFD }, "NXPSemicondu", "NXP Semiconductor (Tianjin) LTD." }, { { 0xBC, 0xB6, 0xFB }, "P4QElectroni", "P4Q Electronics, S.L." }, { { 0xBC, 0xB8, 0x52 }, "Cybera", "Cybera, Inc." }, @@ -32643,6 +32911,7 @@ { { 0xBC, 0xBD, 0x84 }, "zte", "zte corporation" }, { { 0xBC, 0xBD, 0x9E }, "ItelMobile", "Itel Mobile Limited" }, { { 0xBC, 0xBE, 0xFB }, "ASLXiamenTec", "ASL Xiamen Technology CO., LTD" }, + { { 0xBC, 0xBF, 0x2E }, "ASUSTekCOMPU", "ASUSTek COMPUTER INC." }, { { 0xBC, 0xC0, 0x0F }, "FiberhomeTel", "Fiberhome Telecommunication Technologies Co.,LTD" }, { { 0xBC, 0xC1, 0x68 }, "DinBoxSverig", "DinBox Sverige AB" }, { { 0xBC, 0xC2, 0x3A }, "ThomsonVideo", "Thomson Video Networks" }, @@ -32650,6 +32919,7 @@ { { 0xBC, 0xC3, 0x1B }, "KygoLifeA", "Kygo Life A" }, { { 0xBC, 0xC3, 0x42 }, "PanasonicCom", "Panasonic Communications Co., Ltd." }, { { 0xBC, 0xC4, 0x27 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, + { { 0xBC, 0xC4, 0x36 }, "Nokia", "Nokia" }, { { 0xBC, 0xC4, 0x93 }, "Cisco", "Cisco Systems, Inc" }, { { 0xBC, 0xC6, 0x1A }, "SpectraEmbed", "Spectra Embedded Systems" }, { { 0xBC, 0xC6, 0xDB }, "Nokia", "Nokia Corporation" }, @@ -32725,6 +32995,7 @@ { { 0xBC, 0xF8, 0x8B }, "zte", "zte corporation" }, { { 0xBC, 0xF9, 0xF2 }, "Teko", "Teko" }, { { 0xBC, 0xFA, 0xB8 }, "GuangzhouShi", "Guangzhou Shiyuan Electronic Technology Company Limited" }, + { { 0xBC, 0xFA, 0xBA }, "MellanoxTech", "Mellanox Technologies, Inc." }, { { 0xBC, 0xFA, 0xEB }, "Cisco", "Cisco Systems, Inc" }, { { 0xBC, 0xFC, 0xE7 }, "ASUSTekCOMPU", "ASUSTek COMPUTER INC." }, { { 0xBC, 0xFD, 0x0C }, "PhatenTech", "Shenzhen Phaten Tech. LTD" }, @@ -32887,6 +33158,7 @@ { { 0xC0, 0x68, 0xCC }, "SkyworthDigi", "Shenzhen Skyworth Digital Technology CO., Ltd" }, { { 0xC0, 0x69, 0x11 }, "AristaNetwor", "Arista Networks" }, { { 0xC0, 0x6B, 0x55 }, "MotorolaMobi", "Motorola Mobility LLC, a Lenovo Company" }, + { { 0xC0, 0x6B, 0xC7 }, "GallagherGro", "Gallagher Group Limited" }, { { 0xC0, 0x6C, 0x0C }, "Apple", "Apple, Inc." }, { { 0xC0, 0x6C, 0x0F }, "DobbsStanfor", "Dobbs Stanford" }, { { 0xC0, 0x6C, 0x6D }, "MagneMotion", "MagneMotion, Inc." }, @@ -32970,6 +33242,7 @@ { { 0xC0, 0xA1, 0xA2 }, "MarqMetrix", "MarqMetrix" }, { { 0xC0, 0xA2, 0x6D }, "AbbottPointC", "Abbott Point of Care" }, { { 0xC0, 0xA3, 0x64 }, "3DMassachuse", "3D Systems Massachusetts" }, + { { 0xC0, 0xA3, 0x6D }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xC0, 0xA3, 0x6E }, "SkyUk", "Sky Uk Limited" }, { { 0xC0, 0xA3, 0x9E }, "EarthCam", "EarthCam, Inc." }, { { 0xC0, 0xA3, 0xC7 }, "TelinkMicro", "Telink Micro LLC" }, @@ -33004,7 +33277,7 @@ { { 0xC0, 0xB8, 0x83 }, "Intel", "Intel Corporate" }, { { 0xC0, 0xB8, 0xB1 }, "BitBox", "BitBox Ltd" }, { { 0xC0, 0xB8, 0xE6 }, "RuijieNetwor", "Ruijie Networks Co.,LTD" }, - { { 0xC0, 0xBA, 0x1F }, "Private", "Private" }, + { { 0xC0, 0xBA, 0x1F }, "XiamenMilesi", "Xiamen Milesight IoT Co., Ltd." }, { { 0xC0, 0xBA, 0xE6 }, "ZenitelGB", "Zenitel GB Ltd" }, { { 0xC0, 0xBC, 0x9A }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xC0, 0xBD, 0x42 }, "ZPASmartEner", "ZPA Smart Energy a.s." }, @@ -33074,6 +33347,7 @@ { { 0xC0, 0xE4, 0x2D }, "TpLinkTechno", "Tp-Link Technologies Co.,Ltd." }, { { 0xC0, 0xE4, 0x34 }, "AzureWaveTec", "AzureWave Technology Inc." }, { { 0xC0, 0xE5, 0x4E }, "ARIESEmbedde", "ARIES Embedded GmbH" }, + { { 0xC0, 0xE5, 0x79 }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0xC0, 0xE5, 0xDA }, "QingdaoIntel", "Qingdao Intelligent&Precise Electronics Co.,Ltd." }, { { 0xC0, 0xE7, 0xBF }, "SichuanAILin", "Sichuan AI-Link Technology Co., Ltd." }, { { 0xC0, 0xE8, 0x62 }, "Apple", "Apple, Inc." }, @@ -33340,6 +33614,7 @@ { { 0xC4, 0x88, 0xE5 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0xC4, 0x89, 0xED }, "SolidOpticsE", "Solid Optics EU N.V." }, { { 0xC4, 0x8A, 0x5A }, "Jfcontrol", "Jfcontrol" }, + { { 0xC4, 0x8A, 0xCE }, "HisenseVisua", "Hisense Visual Technology Co.,Ltd" }, { { 0xC4, 0x8B, 0x66 }, "HuiZhouGaosh", "Hui Zhou Gaoshengda Technology Co.,LTD" }, { { 0xC4, 0x8B, 0xA3 }, "CiscoMeraki", "Cisco Meraki" }, { { 0xC4, 0x8E, 0x8F }, "HonHaiPrecis", "Hon Hai Precision Ind. Co.,Ltd." }, @@ -33349,6 +33624,7 @@ { { 0xC4, 0x91, 0x3A }, "SanlandElect", "Shenzhen Sanland Electronic Co., ltd." }, { { 0xC4, 0x91, 0xCF }, "Luxul", "Luxul" }, { { 0xC4, 0x92, 0x4C }, "KeisokukiCen", "Keisokuki Center Co.,Ltd." }, + { { 0xC4, 0x92, 0xD9 }, "zte", "zte corporation" }, { { 0xC4, 0x93, 0x00 }, "8Devices", "8Devices" }, { { 0xC4, 0x93, 0x13 }, "100fionetwor", "100fio networks technology llc" }, { { 0xC4, 0x93, 0x80 }, "Speedyteltec", "Speedytel technology" }, @@ -33357,6 +33633,7 @@ { { 0xC4, 0x95, 0x00 }, "AmazonTechno", "Amazon Technologies Inc." }, { { 0xC4, 0x95, 0x5F }, "AnhuiSaidaTe", "Anhui Saida Technology Limited Liability Company" }, { { 0xC4, 0x95, 0xA2 }, "WeijiuIndust", "Shenzhen Weijiu Industry And Trade Development Co., Ltd" }, + { { 0xC4, 0x96, 0x9F }, "AmazonTechno", "Amazon Technologies Inc." }, { { 0xC4, 0x98, 0x05 }, "MinieumNetwo", "Minieum Networks, Inc" }, { { 0xC4, 0x98, 0x5C }, "HuiZhouGaosh", "Hui Zhou Gaoshengda Technology Co.,LTD" }, { { 0xC4, 0x98, 0x78 }, "MoaanIntelli", "Shanghai Moaan Intelligent Technology Co.,Ltd" }, @@ -33578,6 +33855,7 @@ { { 0xC8, 0x24, 0x78 }, "EdifierInter", "Edifier International" }, { { 0xC8, 0x24, 0x96 }, "JiangsuYinhe", "Jiangsu Yinhe Electronics Co.,Ltd." }, { { 0xC8, 0x25, 0xE1 }, "LemobileInfo", "Lemobile Information Technology (Beijing) Co., Ltd" }, + { { 0xC8, 0x26, 0x91 }, "AristaNetwor", "Arista Networks, Inc." }, { { 0xC8, 0x26, 0xE2 }, "ChinaDragonT", "China Dragon Technology Limited" }, { { 0xC8, 0x28, 0x32 }, "XiaomiElectr", "Beijing Xiaomi Electronics Co., Ltd." }, { { 0xC8, 0x28, 0xE5 }, "Cisco", "Cisco Systems, Inc" }, @@ -33591,6 +33869,7 @@ { { 0xC8, 0x2E, 0x18 }, "Espressif", "Espressif Inc." }, { { 0xC8, 0x2E, 0x47 }, "SuzhouSmartC", "Suzhou SmartChip Semiconductor Co., LTD" }, { { 0xC8, 0x2E, 0x94 }, "HalfaEnterpr", "Halfa Enterprise Co., Ltd." }, + { { 0xC8, 0x30, 0x49 }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0xC8, 0x31, 0x68 }, "eZEX", "eZEX corporation" }, { { 0xC8, 0x32, 0x32 }, "HuntingInnov", "Hunting Innova" }, { { 0xC8, 0x33, 0x4B }, "Apple", "Apple, Inc." }, @@ -33618,6 +33897,7 @@ { { 0xC8, 0x3F, 0xB4 }, "Commscope", "Commscope" }, { { 0xC8, 0x40, 0x29 }, "FiberhomeTel", "Fiberhome Telecommunication Technologies Co.,LTD" }, { { 0xC8, 0x40, 0x52 }, "PAXComputerT", "PAX Computer Technology(Shenzhen) Ltd." }, + { { 0xC8, 0x41, 0x2E }, "AMTelecom", "AM Telecom co., Ltd." }, { { 0xC8, 0x41, 0x8A }, "SamsungElect", "Samsung Electronics.,LTD" }, { { 0xC8, 0x45, 0x29 }, "IMKNetworks", "IMK Networks Co.,Ltd" }, { { 0xC8, 0x45, 0x44 }, "AsiaPacificC", "Asia Pacific CIS (Wuxi) Co, Ltd" }, @@ -33714,6 +33994,7 @@ { { 0xC8, 0x84, 0x8C }, "RuckusWirele", "Ruckus Wireless" }, { { 0xC8, 0x84, 0xA1 }, "Cisco", "Cisco Systems, Inc" }, { { 0xC8, 0x84, 0xCF }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, + { { 0xC8, 0x85, 0x41 }, "Espressif", "Espressif Inc." }, { { 0xC8, 0x85, 0x50 }, "Apple", "Apple, Inc." }, { { 0xC8, 0x86, 0x29 }, "DuubeeIntell", "Shenzhen Duubee Intelligent Technologies Co.,LTD." }, { { 0xC8, 0x87, 0x22 }, "Lumenpulse", "Lumenpulse" }, @@ -33828,6 +34109,7 @@ { { 0xC8, 0xC7, 0x50 }, "MotorolaMobi", "Motorola Mobility LLC, a Lenovo Company" }, { { 0xC8, 0xC7, 0x91 }, "Zero1tv", "Zero1.tv GmbH" }, { { 0xC8, 0xC8, 0x3F }, "TexasInstrum", "Texas Instruments" }, + { { 0xC8, 0xC8, 0x73 }, "Chipsen", "Chipsen Inc." }, { { 0xC8, 0xC9, 0xA3 }, "Espressif", "Espressif Inc." }, { { 0xC8, 0xCA, 0x63 }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0xC8, 0xCA, 0x79 }, "Ciena", "Ciena Corporation" }, @@ -33960,6 +34242,7 @@ { { 0xCC, 0x08, 0xFA }, "Apple", "Apple, Inc." }, { { 0xCC, 0x08, 0xFB }, "TpLinkTechno", "Tp-Link Technologies Co.,Ltd." }, { { 0xCC, 0x09, 0xC8 }, "Imaqliq", "Imaqliq Ltd" }, + { { 0xCC, 0x0C, 0x9C }, "CigShanghai", "Cig Shanghai Co Ltd" }, { { 0xCC, 0x0C, 0xDA }, "MiljovaktAS", "Miljovakt AS" }, { { 0xCC, 0x0D, 0xCB }, "Microsoft", "Microsoft Corporation" }, { { 0xCC, 0x0D, 0xE7 }, "BMeters", "B Meters S.R.L." }, @@ -33968,6 +34251,7 @@ { { 0xCC, 0x10, 0xA3 }, "NanBaoTechno", "Beijing Nan Bao Technology Co., Ltd." }, { { 0xCC, 0x11, 0x5A }, "Apple", "Apple, Inc." }, { { 0xCC, 0x12, 0x28 }, "HisenseVisua", "Hisense Visual Technology Co.,Ltd" }, + { { 0xCC, 0x13, 0xF3 }, "HikvisionDig", "Hangzhou Hikvision Digital Technology Co.,Ltd." }, { { 0xCC, 0x14, 0xA6 }, "YichunMyEner", "Yichun MyEnergy Domain, Inc" }, { { 0xCC, 0x14, 0xBC }, "EdifierInter", "Edifier International" }, { { 0xCC, 0x15, 0x31 }, "Intel", "Intel Corporate" }, @@ -33979,6 +34263,7 @@ { { 0xCC, 0x1B, 0x5A }, "RuckusWirele", "Ruckus Wireless" }, { { 0xCC, 0x1E, 0x56 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xCC, 0x1E, 0x97 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, + { { 0xCC, 0x1E, 0xAB }, "LEDATELspiWs", "LEDATEL sp. z o.o. i Wspólnicy sp.k" }, { { 0xCC, 0x1E, 0xFF }, "Metrological", "Metrological Group BV" }, { { 0xCC, 0x1F, 0xC4 }, "InVue", "InVue" }, { { 0xCC, 0x20, 0x8C }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, @@ -34009,6 +34294,7 @@ { { 0xCC, 0x2D, 0xE0 }, "Routerboardc", "Routerboard.com" }, { { 0xCC, 0x2F, 0x71 }, "Intel", "Intel Corporate" }, { { 0xCC, 0x30, 0x80 }, "VAIO", "VAIO Corporation" }, + { { 0xCC, 0x30, 0x89 }, "MellanoxTech", "Mellanox Technologies, Inc." }, { { 0xCC, 0x31, 0x2A }, "HuizhouTclCo", "Huizhou Tcl Communication Electron Co.,Ltd" }, { { 0xCC, 0x32, 0x96 }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0xCC, 0x32, 0xE5 }, "TpLinkTechno", "Tp-Link Technologies Co.,Ltd." }, @@ -34095,6 +34381,7 @@ { { 0xCC, 0x60, 0x23 }, "Apple", "Apple, Inc." }, { { 0xCC, 0x60, 0xBB }, "EmpowerRF", "Empower RF Systems" }, { { 0xCC, 0x60, 0xC8 }, "Microsoft", "Microsoft Corporation" }, + { { 0xCC, 0x61, 0x46 }, "GsdVietNamTe", "Gsd Viet Nam Technology Company Limited" }, { { 0xCC, 0x61, 0xE5 }, "MotorolaMobi", "Motorola Mobility LLC, a Lenovo Company" }, { { 0xCC, 0x62, 0x00 }, "HonorDevice", "Honor Device Co., Ltd." }, { { 0xCC, 0x62, 0xFE }, "UnionManTech", "Union Man Technology Co.,Ltd" }, @@ -34138,6 +34425,7 @@ { { 0xCC, 0x79, 0xCF }, "RfLinkTechno", "Shenzhen Rf-Link Technology Co.,Ltd." }, { { 0xCC, 0x79, 0xD7 }, "Cisco", "Cisco Systems, Inc" }, { { 0xCC, 0x7A, 0x30 }, "CMAXWireless", "CMAX Wireless Co., Ltd." }, + { { 0xCC, 0x7A, 0x8B }, "TecnoTechnol", "Shenzhen Tecno Technology" }, { { 0xCC, 0x7B, 0x35 }, "zte", "zte corporation" }, { { 0xCC, 0x7B, 0x5C }, "Espressif", "Espressif Inc." }, { { 0xCC, 0x7B, 0x61 }, "Nikkiso", "Nikkiso Co., Ltd." }, @@ -34149,6 +34437,7 @@ { { 0xCC, 0x7F, 0x76 }, "Cisco", "Cisco Systems, Inc" }, { { 0xCC, 0x80, 0x8F }, "Apple", "Apple, Inc." }, { { 0xCC, 0x81, 0x2A }, "vivoMobileCo", "vivo Mobile Communication Co., Ltd." }, + { { 0xCC, 0x81, 0x30 }, "Intelbras", "Intelbras" }, { { 0xCC, 0x81, 0x7D }, "Apple", "Apple, Inc." }, { { 0xCC, 0x81, 0xDA }, "Phicomm", "Phicomm (Shanghai) Co., Ltd." }, { { 0xCC, 0x82, 0x7F }, "AdvantechTec", "Advantech Technology (CHINA) Co., Ltd." }, @@ -34255,6 +34544,7 @@ { { 0xCC, 0xC5, 0xEF }, "CoCommServic", "Co-Comm Servicios Telecomunicaciones S.L." }, { { 0xCC, 0xC6, 0x2B }, "Tri", "Tri-Systems Corporation" }, { { 0xCC, 0xC7, 0x60 }, "Apple", "Apple, Inc." }, + { { 0xCC, 0xC8, 0x37 }, "QuectelWirel", "Quectel Wireless Solutions Co.,Ltd." }, { { 0xCC, 0xC8, 0xD7 }, "CIASElettron", "CIAS Elettronica srl" }, { { 0xCC, 0xC9, 0x2C }, "SchindlerPOR", "Schindler - PORT Technology" }, { { 0xCC, 0xC9, 0x5D }, "Apple", "Apple, Inc." }, @@ -34291,6 +34581,7 @@ { { 0xCC, 0xDB, 0x93 }, "Cisco", "Cisco Systems, Inc" }, { { 0xCC, 0xDB, 0xA7 }, "Espressif", "Espressif Inc." }, { { 0xCC, 0xDC, 0x55 }, "Dragonchip", "Dragonchip Limited" }, + { { 0xCC, 0xDD, 0x28 }, "AcctonTechno", "Accton Technology Corporation" }, { { 0xCC, 0xDD, 0x58 }, "RobertBosch", "Robert Bosch GmbH" }, { { 0xCC, 0xDE, 0xDE }, "Nokia", "Nokia" }, { { 0xCC, 0xE0, 0xC3 }, "EXTENTechnol", "EXTEN Technologies, Inc." }, @@ -34337,6 +34628,7 @@ { { 0xCC, 0xF9, 0xF0 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0xCC, 0xFA, 0x00 }, "LGElectronic", "LG Electronics (Mobile Communications)" }, { { 0xCC, 0xFA, 0x66 }, "HuaweiDevice", "Huawei Device Co., Ltd." }, + { { 0xCC, 0xFA, 0x95 }, "HonorDevice", "Honor Device Co., Ltd." }, { { 0xCC, 0xFA, 0xF1 }, "SagemcomBroa", "Sagemcom Broadband SAS" }, { { 0xCC, 0xFB, 0x65 }, "Nintendo", "Nintendo Co., Ltd." }, { { 0xCC, 0xFC, 0x6D }, "RizTransmitt", "Riz Transmitters" }, @@ -34348,6 +34640,7 @@ { { 0xD0, 0x03, 0xDF }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0xD0, 0x03, 0xEB }, "TexasInstrum", "Texas Instruments" }, { { 0xD0, 0x04, 0x01 }, "MotorolaMobi", "Motorola Mobility LLC, a Lenovo Company" }, + { { 0xD0, 0x04, 0x77 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xD0, 0x04, 0x92 }, "FiberhomeTel", "Fiberhome Telecommunication Technologies Co.,LTD" }, { { 0xD0, 0x04, 0xB0 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0xD0, 0x05, 0x2A }, "Arcadyan", "Arcadyan Corporation" }, @@ -34541,7 +34834,9 @@ { { 0xD0, 0x7F, 0xC4 }, "OuWeiTechnol", "Ou Wei Technology Co.,Ltd. of Shenzhen City" }, { { 0xD0, 0x81, 0x7A }, "Apple", "Apple, Inc." }, { { 0xD0, 0x81, 0xC5 }, "JuniperNetwo", "Juniper Networks" }, + { { 0xD0, 0x82, 0xEB }, "TuyaSmart", "Tuya Smart Inc." }, { { 0xD0, 0x83, 0xD4 }, "XtelWireless", "Xtel Wireless ApS" }, + { { 0xD0, 0x84, 0x5D }, "B&CTransit", "B&C Transit, Inc." }, { { 0xD0, 0x84, 0xB0 }, "SagemcomBroa", "Sagemcom Broadband SAS" }, { { 0xD0, 0x85, 0x43 }, "Cisco", "Cisco Systems, Inc" }, { { 0xD0, 0x87, 0xB5 }, "SafemoPte", "Safemo Pte. Ltd." }, @@ -34565,6 +34860,7 @@ { { 0xD0, 0x94, 0x66 }, "Dell", "Dell Inc." }, { { 0xD0, 0x94, 0xCF }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xD0, 0x95, 0xC7 }, "Pantech", "Pantech Co., Ltd." }, + { { 0xD0, 0x96, 0xEA }, "vivoMobileCo", "vivo Mobile Communication Co., Ltd." }, { { 0xD0, 0x96, 0xFB }, "ZhoneTechnol", "Zhone Technologies, Inc." }, { { 0xD0, 0x97, 0xFE }, "RealmeChongq", "Realme Chongqing Mobile Telecommunications Corp.,Ltd." }, { { 0xD0, 0x98, 0x9C }, "ConMet", "ConMet" }, @@ -34605,6 +34901,7 @@ { { 0xD0, 0xB5, 0x3D }, "SeproRobotiq", "Sepro Robotique" }, { { 0xD0, 0xB5, 0xC2 }, "TexasInstrum", "Texas Instruments" }, { { 0xD0, 0xB6, 0x0A }, "XingluoTechn", "Xingluo Technology Company Limited" }, + { { 0xD0, 0xB6, 0x46 }, "NXPSemicondu", "NXP Semiconductors Taiwan Ltd." }, { { 0xD0, 0xB6, 0x6F }, "SernetTechno", "Sernet (Suzhou) Technologies Corporation" }, { { 0xD0, 0xBA, 0xE4 }, "MXCHIPInform", "Shanghai MXCHIP Information Technology Co., Ltd." }, { { 0xD0, 0xBB, 0x61 }, "zte", "zte corporation" }, @@ -34679,6 +34976,7 @@ { { 0xD0, 0xE7, 0x82 }, "AzureWaveTec", "AzureWave Technology Inc." }, { { 0xD0, 0xE8, 0x28 }, "RadiantIndus", "Radiant Industries Incorporated" }, { { 0xD0, 0xEA, 0x11 }, "Routerboardc", "Routerboard.com" }, + { { 0xD0, 0xEA, 0x30 }, "NXPSemicondu", "NXP Semiconductors Taiwan Ltd." }, { { 0xD0, 0xEB, 0x03 }, "Zhehuatechno", "Zhehua technology limited" }, { { 0xD0, 0xEB, 0x9E }, "Seowoo", "Seowoo Inc." }, { { 0xD0, 0xEC, 0x35 }, "Cisco", "Cisco Systems, Inc" }, @@ -34718,6 +35016,7 @@ { { 0xD4, 0x04, 0xCD }, "Commscope", "Commscope" }, { { 0xD4, 0x04, 0xE6 }, "Broadcom", "Broadcom Limited" }, { { 0xD4, 0x04, 0xFF }, "JuniperNetwo", "Juniper Networks" }, + { { 0xD4, 0x05, 0x92 }, "Espressif", "Espressif Inc." }, { { 0xD4, 0x05, 0x98 }, "Commscope", "Commscope" }, { { 0xD4, 0x05, 0xDE }, "eero", "eero inc." }, { { 0xD4, 0x06, 0x0F }, "TexasInstrum", "Texas Instruments" }, @@ -34770,6 +35069,8 @@ { { 0xD4, 0x28, 0xD5 }, "TCTmobile", "TCT mobile ltd" }, { { 0xD4, 0x29, 0xA7 }, "Infinixmobil", "Infinix mobility limited" }, { { 0xD4, 0x29, 0xEA }, "Zimory", "Zimory GmbH" }, + { { 0xD4, 0x2B, 0x6F }, "Cisco", "Cisco Systems, Inc" }, + { { 0xD4, 0x2B, 0xF0 }, "Tiinlab", "Tiinlab Corporation" }, { { 0xD4, 0x2C, 0x0F }, "Commscope", "Commscope" }, { { 0xD4, 0x2C, 0x3D }, "SkyLightDigi", "Sky Light Digital Limited" }, { { 0xD4, 0x2C, 0x44 }, "Cisco", "Cisco Systems, Inc" }, @@ -34818,6 +35119,7 @@ { { 0xD4, 0x47, 0x5A }, "ScreenBeam", "ScreenBeam, Inc." }, { { 0xD4, 0x48, 0x2D }, "DeejoyLighti", "Shenzhen Deejoy Lighting Technology Co.,Ltd." }, { { 0xD4, 0x48, 0x67 }, "SiliconLabor", "Silicon Laboratories" }, + { { 0xD4, 0x4A, 0x85 }, "SiliconLabor", "Silicon Laboratories" }, { { 0xD4, 0x4B, 0x5E }, "TaiyoYuden", "Taiyo Yuden Co., Ltd." }, { { 0xD4, 0x4B, 0xB6 }, "ZhejiangTmal", "Zhejiang Tmall Technology Co., Ltd." }, { { 0xD4, 0x4C, 0x24 }, "Vuppalamrith", "Vuppalamritha Magnetic Components LTD" }, @@ -34830,6 +35132,7 @@ { { 0xD4, 0x4F, 0x67 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xD4, 0x4F, 0x68 }, "EideticCommu", "Eidetic Communications Inc" }, { { 0xD4, 0x4F, 0x80 }, "KemperDigita", "Kemper Digital GmbH" }, + { { 0xD4, 0x50, 0x39 }, "SagemcomBroa", "Sagemcom Broadband SAS" }, { { 0xD4, 0x50, 0x3F }, "OppoMobileTe", "Guangdong Oppo Mobile Telecommunications Corp.,Ltd" }, { { 0xD4, 0x50, 0x7A }, "CEIVALogic", "CEIVA Logic, Inc" }, { { 0xD4, 0x50, 0xEE }, "GDMideaAirCo", "GD Midea Air-Conditioning Equipment Co.,Ltd." }, @@ -34876,6 +35179,7 @@ { { 0xD4, 0x63, 0xFE }, "Arcadyan", "Arcadyan Corporation" }, { { 0xD4, 0x64, 0xF7 }, "UseeDigitalT", "Chengdu Usee Digital Technology Co., Ltd" }, { { 0xD4, 0x66, 0x24 }, "Cisco", "Cisco Systems, Inc" }, + { { 0xD4, 0x66, 0x63 }, "DetranTechno", "Shenzhen Detran Technology Co.,Ltd." }, { { 0xD4, 0x66, 0xA8 }, "RiedoNetwork", "Riedo Networks Ltd" }, { { 0xD4, 0x67, 0x61 }, "XonTelTechno", "XonTel Technology Co." }, { { 0xD4, 0x67, 0xD3 }, "OppoMobileTe", "Guangdong Oppo Mobile Telecommunications Corp.,Ltd" }, @@ -34901,6 +35205,7 @@ { { 0xD4, 0x6F, 0x42 }, "WAXESSUSA", "WAXESS USA Inc" }, { { 0xD4, 0x72, 0x08 }, "Bragi", "Bragi GmbH" }, { { 0xD4, 0x72, 0x26 }, "zte", "zte corporation" }, + { { 0xD4, 0x73, 0x27 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xD4, 0x73, 0x50 }, "DBGCommnunic", "DBG Commnunications Technology Co., Ltd." }, { { 0xD4, 0x74, 0x15 }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0xD4, 0x74, 0x1B }, "HuaDaZhiBaoE", "Beijing HuaDa ZhiBao Electronic System Co.,Ltd." }, @@ -34962,6 +35267,7 @@ { { 0xD4, 0x93, 0xA0 }, "Fidelix", "Fidelix Oy" }, { { 0xD4, 0x94, 0x00 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xD4, 0x94, 0x5A }, "Cosmo", "Cosmo Co., Ltd" }, + { { 0xD4, 0x94, 0x77 }, "FONEXData", "FONEX Data Systems Inc." }, { { 0xD4, 0x94, 0xA1 }, "TexasInstrum", "Texas Instruments" }, { { 0xD4, 0x94, 0xA9 }, "Intel", "Intel Corporate" }, { { 0xD4, 0x94, 0xE8 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, @@ -34990,6 +35296,7 @@ { { 0xD4, 0x9E, 0x6D }, "ZhongyuanHua", "Wuhan Zhongyuan Huadian Science & Technology Co.," }, { { 0xD4, 0x9F, 0x29 }, "FiberhomeTel", "Fiberhome Telecommunication Technologies Co.,LTD" }, { { 0xD4, 0x9F, 0xDD }, "HuaweiDevice", "Huawei Device Co., Ltd." }, + { { 0xD4, 0x9F, 0xF9 }, "EardaTechnol", "Earda Technologies co Ltd" }, { { 0xD4, 0xA0, 0x2A }, "Cisco", "Cisco Systems, Inc" }, { { 0xD4, 0xA1, 0x48 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xD4, 0xA2, 0x3D }, "NewH3CTechno", "New H3C Technologies Co., Ltd" }, @@ -35069,6 +35376,7 @@ { { 0xD4, 0xD5, 0x0D }, "SouthwestMic", "Southwest Microwave, Inc" }, { { 0xD4, 0xD5, 0x1B }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xD4, 0xD6, 0x59 }, "MetaPlatform", "Meta Platforms, Inc." }, + { { 0xD4, 0xD6, 0xDF }, "TPLink", "TP-Link Systems Inc." }, { { 0xD4, 0xD7, 0x48 }, "Cisco", "Cisco Systems, Inc" }, { { 0xD4, 0xD7, 0xA9 }, "KaixiangInfo", "Shanghai Kaixiang Info Tech LTD" }, { { 0xD4, 0xD7, 0xCF }, "RealmeChongq", "Realme Chongqing Mobile Telecommunications Corp.,Ltd." }, @@ -35295,6 +35603,7 @@ { { 0xD8, 0x5B, 0x22 }, "HohunetTechn", "Shenzhen Hohunet Technology Co., Ltd" }, { { 0xD8, 0x5B, 0x27 }, "WNC", "WNC Corporation" }, { { 0xD8, 0x5B, 0x2A }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, + { { 0xD8, 0x5C, 0x11 }, "OptiviewUSA", "Optiview USA" }, { { 0xD8, 0x5D, 0x4C }, "TpLinkTechno", "Tp-Link Technologies Co.,Ltd." }, { { 0xD8, 0x5D, 0x84 }, "CAxsoft", "CAx soft GmbH" }, { { 0xD8, 0x5D, 0xE2 }, "HonHaiPrecis", "Hon Hai Precision Ind. Co.,Ltd." }, @@ -35304,8 +35613,10 @@ { { 0xD8, 0x5F, 0x77 }, "TelinkSemico", "Telink Semiconductor (Shanghai) Co., Ltd." }, { { 0xD8, 0x60, 0xB0 }, "bioMérieuxIt", "bioMérieux Italia S.p.A." }, { { 0xD8, 0x60, 0xB3 }, "GlobalElectr", "Guangdong Global Electronic Technology CO.,LTD" }, + { { 0xD8, 0x60, 0xC5 }, "OppoMobileTe", "Guangdong Oppo Mobile Telecommunications Corp.,Ltd" }, { { 0xD8, 0x61, 0x62 }, "WNC", "WNC Corporation" }, { { 0xD8, 0x61, 0x94 }, "ObjetivosySe", "Objetivos y Sevicios de Valor Añadido" }, + { { 0xD8, 0x62, 0xCA }, "Cisco", "Cisco Systems, Inc" }, { { 0xD8, 0x62, 0xDB }, "Eno", "Eno Inc." }, { { 0xD8, 0x63, 0x0D }, "MotorolaMobi", "Motorola (Wuhan) Mobility Technologies Communication Co., Ltd." }, { { 0xD8, 0x63, 0x75 }, "XiaomiCommun", "Xiaomi Communications Co Ltd" }, @@ -35359,6 +35670,7 @@ { { 0xD8, 0x81, 0xCE }, "Ahn", "Ahn Inc." }, { { 0xD8, 0x83, 0x32 }, "TaiXinSemico", "TaiXin Semiconductor Co., Ltd" }, { { 0xD8, 0x84, 0x66 }, "ExtremeNetwo", "Extreme Networks Headquarters" }, + { { 0xD8, 0x85, 0x5E }, "zte", "zte corporation" }, { { 0xD8, 0x85, 0xAC }, "Espressif", "Espressif Inc." }, { { 0xD8, 0x87, 0xD5 }, "LeadcoreTech", "Leadcore Technology CO.,LTD" }, { { 0xD8, 0x88, 0x63 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, @@ -35411,6 +35723,7 @@ { { 0xD8, 0xA2, 0x5E }, "Apple", "Apple, Inc." }, { { 0xD8, 0xA3, 0x15 }, "vivoMobileCo", "vivo Mobile Communication Co., Ltd." }, { { 0xD8, 0xA3, 0x5C }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, + { { 0xD8, 0xA4, 0x69 }, "Sonova", "Sonova AG" }, { { 0xD8, 0xA4, 0x91 }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0xD8, 0xA5, 0x34 }, "Spectronix", "Spectronix Corporation" }, { { 0xD8, 0xA6, 0xF0 }, "WuQiTechnolo", "Wu Qi Technologies,Inc." }, @@ -35452,6 +35765,7 @@ { { 0xD8, 0xBC, 0x59 }, "DAPUMicroele", "Shenzhen DAPU Microelectronics Co., Ltd" }, { { 0xD8, 0xBE, 0x1F }, "Apple", "Apple, Inc." }, { { 0xD8, 0xBE, 0x65 }, "AmazonTechno", "Amazon Technologies Inc." }, + { { 0xD8, 0xBF, 0x42 }, "Intel", "Intel Corporate" }, { { 0xD8, 0xBF, 0x4C }, "VictoryConce", "Victory Concept Electronics Limited" }, { { 0xD8, 0xBF, 0xC0 }, "Espressif", "Espressif Inc." }, { { 0xD8, 0xC0, 0x68 }, "Netgenetech", "Netgenetech.co.,ltd." }, @@ -35607,6 +35921,7 @@ { { 0xDC, 0x17, 0x92 }, "CaptivateNet", "Captivate Network" }, { { 0xDC, 0x1A, 0x01 }, "EcolivTechno", "Ecoliv Technology ( Shenzhen ) Ltd." }, { { 0xDC, 0x1A, 0xC5 }, "vivoMobileCo", "vivo Mobile Communication Co., Ltd." }, + { { 0xDC, 0x1B, 0x48 }, "TexasInstrum", "Texas Instruments" }, { { 0xDC, 0x1B, 0xA1 }, "Intel", "Intel Corporate" }, { { 0xDC, 0x1D, 0x9F }, "UBtech", "U & B tech" }, { { 0xDC, 0x1D, 0xD4 }, "MicrostepMIS", "Microstep-MIS spol. s r.o." }, @@ -35634,7 +35949,7 @@ { { 0xDC, 0x2D, 0x04 }, "vivoMobileCo", "vivo Mobile Communication Co., Ltd." }, { { 0xDC, 0x2D, 0x3C }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0xDC, 0x2D, 0xCB }, "UnisHengYueT", "Beijing Unis HengYue Technology Co., Ltd." }, - { { 0xDC, 0x2D, 0xDE }, "Ledworks", "Ledworks SRL" }, + { { 0xDC, 0x2D, 0xDE }, "Illucere", "Illucere Srl" }, { { 0xDC, 0x2E, 0x6A }, "HCT", "HCT. Co., Ltd." }, { { 0xDC, 0x2E, 0x97 }, "QuectelWirel", "Quectel Wireless Solutions Co.,Ltd." }, { { 0xDC, 0x2F, 0x03 }, "StepforwardG", "Step forward Group Co., Ltd." }, @@ -35740,6 +36055,7 @@ { { 0xDC, 0x72, 0x9B }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xDC, 0x73, 0x06 }, "VantivaConne", "Vantiva Connected Home - Home Networks" }, { { 0xDC, 0x73, 0x85 }, "HuaweiDevice", "Huawei Device Co., Ltd." }, + { { 0xDC, 0x73, 0xFC }, "MellanoxTech", "Mellanox Technologies, Inc." }, { { 0xDC, 0x74, 0xA8 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0xDC, 0x74, 0xCE }, "ITOCHUTechno", "ITOCHU Techno-Solutions Corporation" }, { { 0xDC, 0x77, 0x4C }, "Cisco", "Cisco Systems, Inc" }, @@ -35796,6 +36112,7 @@ { { 0xDC, 0x9C, 0x52 }, "SapphireTech", "Sapphire Technology Limited." }, { { 0xDC, 0x9C, 0x99 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xDC, 0x9C, 0x9F }, "YOUHUATechno", "Shenzhen YOUHUA Technology Co., Ltd" }, + { { 0xDC, 0x9D, 0xED }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0xDC, 0x9E, 0x8F }, "Apple", "Apple, Inc." }, { { 0xDC, 0x9E, 0xAB }, "ChongqingYip", "Chongqing Yipingfang Technology Co., Ltd." }, { { 0xDC, 0x9F, 0xA4 }, "Nokia", "Nokia Corporation" }, @@ -35843,6 +36160,7 @@ { { 0xDC, 0xB7, 0xAC }, "HewlettPacka", "Hewlett Packard Enterprise" }, { { 0xDC, 0xB7, 0xFC }, "AlpsElectric", "Alps Electric (Ireland) Ltd" }, { { 0xDC, 0xB8, 0x08 }, "ExtremeNetwo", "Extreme Networks Headquarters" }, + { { 0xDC, 0xB8, 0x7D }, "HewlettPacka", "Hewlett Packard Enterprise" }, { { 0xDC, 0xBB, 0x3D }, "ExtremeNetwo", "Extreme Networks Headquarters" }, { { 0xDC, 0xBB, 0x96 }, "FullSolution", "Full Solution Telecom" }, { { 0xDC, 0xBD, 0x7A }, "GuangzhouShi", "Guangzhou Shiyuan Electronic Technology Company Limited" }, @@ -36121,7 +36439,7 @@ { { 0xE0, 0x69, 0xBA }, "Cisco", "Cisco Systems, Inc" }, { { 0xE0, 0x6A, 0x05 }, "YOUHUATechno", "Shenzhen YOUHUA Technology Co., Ltd" }, { { 0xE0, 0x6C, 0x4E }, "TINNOMobileT", "Shenzhen TINNO Mobile Technology Corp." }, - { { 0xE0, 0x6C, 0xA6 }, "CreotechInst", "Creotech Instruments S.A." }, + { { 0xE0, 0x6C, 0xA6 }, "CreotechQuan", "Creotech Quantum SA" }, { { 0xE0, 0x6C, 0xC5 }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0xE0, 0x6C, 0xF6 }, "ESSENCORE", "ESSENCORE limited" }, { { 0xE0, 0x6D, 0x17 }, "Apple", "Apple, Inc." }, @@ -36151,6 +36469,7 @@ { { 0xE0, 0x7F, 0x88 }, "EVIDENCENetw", "EVIDENCE Network SIA" }, { { 0xE0, 0x80, 0x6B }, "XiaomiCommun", "Xiaomi Communications Co Ltd" }, { { 0xE0, 0x81, 0x77 }, "GreenBytes", "GreenBytes, Inc." }, + { { 0xE0, 0x83, 0x0D }, "NottaPte", "Notta Pte. Ltd." }, { { 0xE0, 0x84, 0xF3 }, "HighGradeCon", "High Grade Controls Corporation" }, { { 0xE0, 0x85, 0x4D }, "LGInnotek", "LG Innotek" }, { { 0xE0, 0x85, 0x9A }, "RfLinkTechno", "Shenzhen Rf-Link Technology Co.,Ltd." }, @@ -36172,6 +36491,7 @@ { { 0xE0, 0x92, 0x8F }, "TexasInstrum", "Texas Instruments" }, { { 0xE0, 0x92, 0xA7 }, "FeitianTechn", "Feitian Technologies Co., Ltd" }, { { 0xE0, 0x94, 0x67 }, "Intel", "Intel Corporate" }, + { { 0xE0, 0x95, 0x59 }, "Arcadyan", "Arcadyan Corporation" }, { { 0xE0, 0x95, 0x79 }, "ORTHOsoftdba", "ORTHOsoft inc, d/b/a Zimmer CAS" }, { { 0xE0, 0x95, 0xFF }, "Infinixmobil", "Infinix mobility limited" }, { { 0xE0, 0x96, 0xE8 }, "FiberhomeTel", "Fiberhome Telecommunication Technologies Co.,LTD" }, @@ -36281,7 +36601,9 @@ { { 0xE0, 0xD1, 0xE6 }, "AliphdbaJawb", "Aliph dba Jawbone" }, { { 0xE0, 0xD3, 0x1A }, "EQUESTechnol", "EQUES Technology Co., Limited" }, { { 0xE0, 0xD3, 0x62 }, "TPLink", "TP-Link Systems Inc." }, + { { 0xE0, 0xD3, 0x8E }, "ChipseaTechn", "Chipsea Technologies (Shenzhen) Crop." }, { { 0xE0, 0xD3, 0xB4 }, "CiscoMeraki", "Cisco Meraki" }, + { { 0xE0, 0xD3, 0xF0 }, "AltoBeam", "AltoBeam Inc." }, { { 0xE0, 0xD4, 0x62 }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0xE0, 0xD4, 0x64 }, "Intel", "Intel Corporate" }, { { 0xE0, 0xD4, 0x91 }, "Cisco", "Cisco Systems, Inc" }, @@ -36320,6 +36642,7 @@ { { 0xE0, 0xE6, 0xE3 }, "TeamF1Networ", "TeamF1 Networks Pvt Limited" }, { { 0xE0, 0xE7, 0x51 }, "Nintendo", "Nintendo Co., Ltd." }, { { 0xE0, 0xE7, 0xBB }, "Nureva", "Nureva, Inc." }, + { { 0xE0, 0xE8, 0x05 }, "SernetTechno", "Sernet (Suzhou) Technologies Corporation" }, { { 0xE0, 0xE8, 0xBB }, "UnicomVsensT", "Unicom Vsens Telecommunications Co., Ltd." }, { { 0xE0, 0xE8, 0xE6 }, "CDataTechnol", "Shenzhen C-Data Technology Co., Ltd." }, { { 0xE0, 0xE8, 0xE8 }, "OliveTelecom", "Olive Telecommunication Pvt. Ltd" }, @@ -36350,6 +36673,7 @@ { { 0xE0, 0xFF, 0xF1 }, "TexasInstrum", "Texas Instruments" }, { { 0xE0, 0xFF, 0xF7 }, "Softiron", "Softiron Inc." }, { { 0xE4, 0x01, 0x77 }, "SafeOwl", "SafeOwl, Inc." }, + { { 0xE4, 0x02, 0x74 }, "FWMurphyProd", "FW Murphy Production Controls" }, { { 0xE4, 0x02, 0x9B }, "Intel", "Intel Corporate" }, { { 0xE4, 0x04, 0x39 }, "TomTomSoftwa", "TomTom Software Ltd" }, { { 0xE4, 0x05, 0xF8 }, "Bytedance", "Bytedance" }, @@ -36358,6 +36682,7 @@ { { 0xE4, 0x07, 0x2B }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0xE4, 0x08, 0xE7 }, "QuectelWirel", "Quectel Wireless Solutions Co.,Ltd." }, { { 0xE4, 0x0A, 0x16 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, + { { 0xE4, 0x0A, 0x75 }, "SiliconLabor", "Silicon Laboratories" }, { { 0xE4, 0x0C, 0xFD }, "OppoMobileTe", "Guangdong Oppo Mobile Telecommunications Corp.,Ltd" }, { { 0xE4, 0x0D, 0x36 }, "Intel", "Intel Corporate" }, { { 0xE4, 0x0D, 0x3B }, "Ericsson", "Ericsson AB" }, @@ -36568,6 +36893,7 @@ { { 0xE4, 0x8F, 0x1D }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0xE4, 0x8F, 0x34 }, "VodafoneItal", "Vodafone Italia S.p.A." }, { { 0xE4, 0x8F, 0x65 }, "YelatmaInstr", "Yelatma Instrument Making Enterprise, JSC" }, + { { 0xE4, 0x8F, 0xB7 }, "AristaNetwor", "Arista Networks" }, { { 0xE4, 0x90, 0x2A }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xE4, 0x90, 0x69 }, "RockwellAuto", "Rockwell Automation" }, { { 0xE4, 0x90, 0x7E }, "MotorolaMobi", "Motorola Mobility LLC, a Lenovo Company" }, @@ -36583,6 +36909,7 @@ { { 0xE4, 0x98, 0xBB }, "PhyplusMicro", "Phyplus Microelectronics Limited" }, { { 0xE4, 0x98, 0xD1 }, "MicrosoftMob", "Microsoft Mobile Oy" }, { { 0xE4, 0x98, 0xD6 }, "Apple", "Apple, Inc." }, + { { 0xE4, 0x98, 0xE0 }, "TonlyTechnol", "Tonly Technology Co. Ltd" }, { { 0xE4, 0x99, 0x5F }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xE4, 0x9A, 0x79 }, "Apple", "Apple, Inc." }, { { 0xE4, 0x9A, 0xDC }, "Apple", "Apple, Inc." }, @@ -36654,6 +36981,7 @@ { { 0xE4, 0xC8, 0x06 }, "CeiecElectri", "Ceiec Electric Technology Inc." }, { { 0xE4, 0xC9, 0x0B }, "Radwin", "Radwin" }, { { 0xE4, 0xCA, 0x12 }, "zte", "zte corporation" }, + { { 0xE4, 0xCA, 0x5F }, "MurataManufa", "Murata Manufacturing Co., Ltd." }, { { 0xE4, 0xCB, 0x59 }, "LoveairScien", "Beijing Loveair Science and Technology Co. Ltd." }, { { 0xE4, 0xCC, 0x9D }, "IntegratedDe", "Integrated Device Technology (Malaysia) Sdn. Bhd." }, { { 0xE4, 0xCD, 0xA7 }, "zte", "zte corporation" }, @@ -36714,9 +37042,11 @@ { { 0xE4, 0xFA, 0x1D }, "PADPeriphera", "PAD Peripheral Advanced Design Inc." }, { { 0xE4, 0xFA, 0x5B }, "TexasInstrum", "Texas Instruments" }, { { 0xE4, 0xFA, 0xC4 }, "TPLink", "TP-Link Systems Inc" }, + { { 0xE4, 0xFA, 0xDE }, "Microsoft", "Microsoft Corporation" }, { { 0xE4, 0xFA, 0xE4 }, "SDMCTechnolo", "Shenzhen SDMC Technology CP,.LTD" }, { { 0xE4, 0xFA, 0xED }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0xE4, 0xFA, 0xFD }, "Intel", "Intel Corporate" }, + { { 0xE4, 0xFB, 0x1E }, "Microsoft", "Microsoft Corporation" }, { { 0xE4, 0xFB, 0x5D }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xE4, 0xFB, 0x8F }, "MobiwireMobi", "Mobiwire Mobiles (Ningbo) Co.,Ltd" }, { { 0xE4, 0xFC, 0x82 }, "JuniperNetwo", "Juniper Networks" }, @@ -36726,6 +37056,7 @@ { { 0xE4, 0xFE, 0x43 }, "XiaomiMobile", "Beijing Xiaomi Mobile Software Co., Ltd" }, { { 0xE4, 0xFE, 0xD9 }, "EDMIEurope", "EDMI Europe Ltd" }, { { 0xE4, 0xFE, 0xE4 }, "Ciena", "Ciena Corporation" }, + { { 0xE4, 0xFF, 0x69 }, "HolidayRobot", "Holiday Robotics" }, { { 0xE4, 0xFF, 0xDD }, "ElectronIndi", "Electron India" }, { { 0xE8, 0x00, 0x36 }, "Befs", "Befs co,. ltd" }, { { 0xE8, 0x01, 0x15 }, "COOCAANetwor", "COOCAA Network Technology CO.,TD." }, @@ -36780,6 +37111,7 @@ { { 0xE8, 0x20, 0xE2 }, "HUMAX", "HUMAX Co., Ltd." }, { { 0xE8, 0x22, 0x81 }, "GDMideaAirCo", "GD Midea Air-Conditioning Equipment Co.,Ltd." }, { { 0xE8, 0x22, 0xB8 }, "SkyworthDigi", "Shenzhen Skyworth Digital Technology CO., Ltd" }, + { { 0xE8, 0x23, 0xFB }, "Redder", "Redder" }, { { 0xE8, 0x24, 0x04 }, "QuectelWirel", "Quectel Wireless Solutions Co.,Ltd." }, { { 0xE8, 0x24, 0xA6 }, "JuniperNetwo", "Juniper Networks" }, { { 0xE8, 0x25, 0x87 }, "ChilinkIoTTe", "Shenzhen Chilink IoT Technology Co., Ltd." }, @@ -36879,6 +37211,7 @@ { { 0xE8, 0x65, 0xD4 }, "TendaTechnol", "Tenda Technology Co.,Ltd.Dongguan branch" }, { { 0xE8, 0x66, 0xC4 }, "Diamanti", "Diamanti" }, { { 0xE8, 0x68, 0x19 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, + { { 0xE8, 0x68, 0xB1 }, "OppoMobileTe", "Guangdong Oppo Mobile Telecommunications Corp.,Ltd" }, { { 0xE8, 0x68, 0xE7 }, "Espressif", "Espressif Inc." }, { { 0xE8, 0x6A, 0x64 }, "LCFCElectron", "LCFC(Hefei) Electronics Technology co., ltd" }, { { 0xE8, 0x6B, 0xEA }, "Espressif", "Espressif Inc." }, @@ -37008,6 +37341,7 @@ { { 0xE8, 0xB7, 0x22 }, "GreenTrolAut", "GreenTrol Automation" }, { { 0xE8, 0xB7, 0x23 }, "VatilonElect", "Shenzhen Vatilon Electronics Co.,Ltd" }, { { 0xE8, 0xB7, 0x48 }, "Cisco", "Cisco Systems, Inc" }, + { { 0xE8, 0xB8, 0x53 }, "GsdVietNamTe", "Gsd Viet Nam Technology Company Limited" }, { { 0xE8, 0xBA, 0x70 }, "Cisco", "Cisco Systems, Inc" }, { { 0xE8, 0xBA, 0xE2 }, "XploraTechno", "Xplora Technologies AS" }, { { 0xE8, 0xBB, 0x3D }, "SinoPrimeTec", "Sino Prime-Tech Limited" }, @@ -37025,6 +37359,7 @@ { { 0xE8, 0xC2, 0xDD }, "Infinixmobil", "Infinix mobility limited" }, { { 0xE8, 0xC3, 0x20 }, "AustcoMarket", "Austco Marketing & Service (USA) ltd." }, { { 0xE8, 0xC3, 0x86 }, "Apple", "Apple, Inc." }, + { { 0xE8, 0xC3, 0xC5 }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0xE8, 0xC4, 0x17 }, "FiberhomeTel", "Fiberhome Telecommunication Technologies Co.,LTD" }, { { 0xE8, 0xC5, 0x7A }, "Ufispace", "Ufispace Co., LTD." }, { { 0xE8, 0xC6, 0xE6 }, "ChanghongTra", "Changhong (Hongkong) Trading Limited" }, @@ -37091,6 +37426,7 @@ { { 0xE8, 0xE8, 0x75 }, "iS5Communica", "iS5 Communications Inc." }, { { 0xE8, 0xE8, 0xB7 }, "MurataManufa", "Murata Manufacturing Co., Ltd." }, { { 0xE8, 0xE9, 0x8E }, "SOLARcontrol", "SOLAR controls s.r.o." }, + { { 0xE8, 0xEA, 0x34 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xE8, 0xEA, 0x4D }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xE8, 0xEA, 0x6A }, "StarTechcom", "StarTech.com" }, { { 0xE8, 0xEA, 0x7C }, "AmazwearHold", "Shenzhen Amazwear Holdings Co., Ltd" }, @@ -37122,6 +37458,7 @@ { { 0xE8, 0xF6, 0x0A }, "Espressif", "Espressif Inc." }, { { 0xE8, 0xF6, 0x54 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xE8, 0xF6, 0x73 }, "Microsoft", "Microsoft Corporation" }, + { { 0xE8, 0xF6, 0x74 }, "JiangSuFulia", "Jiang Su Fulian Communication Technology Co.,Ltd" }, { { 0xE8, 0xF7, 0x24 }, "HewlettPacka", "Hewlett Packard Enterprise" }, { { 0xE8, 0xF7, 0x2F }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xE8, 0xF7, 0x91 }, "XiaomiCommun", "Xiaomi Communications Co Ltd" }, @@ -37132,6 +37469,7 @@ { { 0xE8, 0xFA, 0xF7 }, "UniteddataGr", "Guangdong Uniteddata Holding Group Co., Ltd." }, { { 0xE8, 0xFB, 0x1C }, "AzureWaveTec", "AzureWave Technology Inc." }, { { 0xE8, 0xFB, 0xE9 }, "Apple", "Apple, Inc." }, + { { 0xE8, 0xFC, 0x5F }, "RuckusWirele", "Ruckus Wireless" }, { { 0xE8, 0xFC, 0x60 }, "ELCOMInnovat", "ELCOM Innovations Private Limited" }, { { 0xE8, 0xFC, 0xAF }, "Netgear", "Netgear" }, { { 0xE8, 0xFD, 0x35 }, "HuaweiDevice", "Huawei Device Co., Ltd." }, @@ -37230,7 +37568,7 @@ { { 0xEC, 0x31, 0x4A }, "QuanjingInte", "Chengdu Quanjing Intelligent Technology Co.,Ltd" }, { { 0xEC, 0x31, 0x5F }, "AmazonTechno", "Amazon Technologies Inc." }, { { 0xEC, 0x31, 0x6D }, "Hansgrohe", "Hansgrohe" }, - { { 0xEC, 0x34, 0xE2 }, "Private", "Private" }, + { { 0xEC, 0x34, 0xE2 }, "YasminaLabsT", "Yasmina Labs Trading FZE" }, { { 0xEC, 0x35, 0x32 }, "Tactrix", "Tactrix Inc." }, { { 0xEC, 0x35, 0x4D }, "WingtechMobi", "Wingtech Mobile Communications Co.,Ltd" }, { { 0xEC, 0x35, 0x86 }, "Apple", "Apple, Inc." }, @@ -37318,9 +37656,12 @@ { { 0xEC, 0x6C, 0xB5 }, "zte", "zte corporation" }, { { 0xEC, 0x6E, 0x79 }, "InHandNetwor", "InHand Networks, INC." }, { { 0xEC, 0x6F, 0x0B }, "FADU", "FADU, Inc." }, + { { 0xEC, 0x6F, 0xF9 }, "PioseedTechn", "Pioseed Technology(Chengdu)Co.,Ltd." }, { { 0xEC, 0x70, 0x97 }, "Commscope", "Commscope" }, + { { 0xEC, 0x71, 0x5E }, "Freefly", "Freefly Systems Inc" }, { { 0xEC, 0x71, 0xDB }, "ReolinkInnov", "Reolink Innovation Limited" }, { { 0xEC, 0x72, 0x5B }, "zte", "zte corporation" }, + { { 0xEC, 0x72, 0xF7 }, "DjiBaiwangTe", "Dji Baiwang Technology Co Ltd" }, { { 0xEC, 0x73, 0x59 }, "CloudskyTech", "Shenzhen Cloudsky Technologies Co., Ltd." }, { { 0xEC, 0x73, 0x79 }, "Apple", "Apple, Inc." }, { { 0xEC, 0x73, 0xF6 }, "SichuanAILin", "Sichuan AI-Link Technology Co., Ltd." }, @@ -37371,6 +37712,7 @@ { { 0xEC, 0x8E, 0xAD }, "Dlx", "Dlx" }, { { 0xEC, 0x8E, 0xAE }, "Nagravision", "Nagravision SA" }, { { 0xEC, 0x8E, 0xB5 }, "HewlettPacka", "Hewlett Packard" }, + { { 0xEC, 0x8F, 0x72 }, "BarrotTechno", "Barrot Technology Co.,Ltd." }, { { 0xEC, 0x90, 0xC1 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0xEC, 0x91, 0x61 }, "CloudNetwork", "Cloud Network Technology Singapore Pte. Ltd." }, { { 0xEC, 0x92, 0x33 }, "EddyfiNDT", "Eddyfi NDT Inc" }, @@ -37400,6 +37742,7 @@ { { 0xEC, 0x9E, 0xCD }, "ArtesynEmbed", "Artesyn Embedded Technologies" }, { { 0xEC, 0x9E, 0xEA }, "XtraTechnolo", "Xtra Technology LLC" }, { { 0xEC, 0xA1, 0x38 }, "AmazonTechno", "Amazon Technologies Inc." }, + { { 0xEC, 0xA1, 0xCC }, "Cisco", "Cisco Systems, Inc" }, { { 0xEC, 0xA1, 0xD1 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xEC, 0xA2, 0x9B }, "Kemppi", "Kemppi Oy" }, { { 0xEC, 0xA2, 0xA0 }, "TaicangT&WEl", "Taicang T&W Electronics" }, @@ -37426,16 +37769,20 @@ { { 0xEC, 0xB1, 0x06 }, "AcuroNetwork", "Acuro Networks, Inc" }, { { 0xEC, 0xB1, 0xD7 }, "HewlettPacka", "Hewlett Packard" }, { { 0xEC, 0xB1, 0xE0 }, "EltexEnterpr", "Eltex Enterprise LTD" }, + { { 0xEC, 0xB2, 0x93 }, "HewlettPacka", "Hewlett Packard Enterprise" }, { { 0xEC, 0xB3, 0x13 }, "GongjinElect", "Shenzhen Gongjin Electronics Co.,Lt" }, { { 0xEC, 0xB4, 0xE8 }, "WistronMexic", "Wistron Mexico SA de CV" }, { { 0xEC, 0xB5, 0x0A }, "QuectelWirel", "Quectel Wireless Solutions Co.,Ltd." }, { { 0xEC, 0xB5, 0x41 }, "SHINANOEandE", "SHINANO E and E Co.Ltd." }, { { 0xEC, 0xB5, 0x50 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, + { { 0xEC, 0xB5, 0xAF }, "RayService", "RayService a.s." }, { { 0xEC, 0xB5, 0xFA }, "PhilipsLight", "Philips Lighting BV" }, { { 0xEC, 0xB8, 0x70 }, "HeweinetTech", "Beijing Heweinet Technology Co.,Ltd." }, { { 0xEC, 0xB8, 0x78 }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0xEC, 0xB9, 0x07 }, "CloudGenix", "CloudGenix Inc" }, + { { 0xEC, 0xB9, 0x31 }, "TPLink", "TP-Link Systems Inc." }, { { 0xEC, 0xB9, 0x70 }, "RuijieNetwor", "Ruijie Networks Co.,LTD" }, + { { 0xEC, 0xB9, 0xA5 }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0xEC, 0xBA, 0xFE }, "Giroptic", "Giroptic" }, { { 0xEC, 0xBB, 0x78 }, "Cisco", "Cisco Systems, Inc" }, { { 0xEC, 0xBB, 0xAE }, "DigivoiceTec", "Digivoice Tecnologia em Eletronica Ltda" }, @@ -37627,7 +37974,7 @@ { { 0xF0, 0x3F, 0x95 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xF0, 0x3F, 0xF8 }, "RLDrake", "R L Drake" }, { { 0xF0, 0x40, 0x7B }, "FiberhomeTel", "Fiberhome Telecommunication Technologies Co.,LTD" }, - { { 0xF0, 0x40, 0xEC }, "RainXPTE", "RainX PTE. LTD." }, + { { 0xF0, 0x40, 0xEC }, "Loopdesignla", "Loopdesignlab Pte. Ltd" }, { { 0xF0, 0x41, 0xC6 }, "HeatTech", "Heat Tech Company, Ltd." }, { { 0xF0, 0x42, 0x1C }, "Intel", "Intel Corporate" }, { { 0xF0, 0x42, 0xF5 }, "HuaweiDevice", "Huawei Device Co., Ltd." }, @@ -37679,6 +38026,7 @@ { { 0xF0, 0x65, 0xC2 }, "YanfengViste", "Yanfeng Visteon Electronics Technology (Shanghai) Co.,Ltd." }, { { 0xF0, 0x65, 0xDD }, "PrimaxElectr", "Primax Electronics Ltd." }, { { 0xF0, 0x67, 0x28 }, "OppoMobileTe", "Guangdong Oppo Mobile Telecommunications Corp.,Ltd" }, + { { 0xF0, 0x67, 0xB1 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0xF0, 0x68, 0x53 }, "Integrated", "Integrated Corporation" }, { { 0xF0, 0x68, 0x65 }, "TaicangT&WEl", "Taicang T&W Electronics" }, { { 0xF0, 0x68, 0xE3 }, "AzureWaveTec", "AzureWave Technology Inc." }, @@ -37763,6 +38111,7 @@ { { 0xF0, 0xA2, 0x25 }, "AmazonTechno", "Amazon Technologies Inc." }, { { 0xF0, 0xA3, 0x5A }, "Apple", "Apple, Inc." }, { { 0xF0, 0xA3, 0xB2 }, "HuiZhouGaosh", "Hui Zhou Gaoshengda Technology Co.,LTD" }, + { { 0xF0, 0xA4, 0xEA }, "HuaweiDevice", "Huawei Device Co., Ltd." }, { { 0xF0, 0xA6, 0x54 }, "CloudNetwork", "Cloud Network Technology Singapore Pte. Ltd." }, { { 0xF0, 0xA7, 0x31 }, "TPLink", "TP-Link Systems Inc" }, { { 0xF0, 0xA7, 0x64 }, "GST", "GST Co., Ltd." }, @@ -37789,6 +38138,7 @@ { { 0xF0, 0xB1, 0x07 }, "Ericsson", "Ericsson AB" }, { { 0xF0, 0xB1, 0x1D }, "Nokia", "Nokia" }, { { 0xF0, 0xB1, 0x3F }, "HuaweiDevice", "Huawei Device Co., Ltd." }, + { { 0xF0, 0xB1, 0x63 }, "TexasInstrum", "Texas Instruments" }, { { 0xF0, 0xB2, 0xB9 }, "Intel", "Intel Corporate" }, { { 0xF0, 0xB2, 0xE5 }, "Cisco", "Cisco Systems, Inc" }, { { 0xF0, 0xB3, 0x1E }, "UniversalEle", "Universal Electronics, Inc." }, @@ -37831,6 +38181,7 @@ { { 0xF0, 0xCC, 0xE0 }, "AllSmartlink", "Shenzhen All-Smartlink Technology Co.,Ltd." }, { { 0xF0, 0xCD, 0x31 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0xF0, 0xCF, 0x4D }, "BitRecords", "BitRecords GmbH" }, + { { 0xF0, 0xD0, 0x18 }, "HewlettPacka", "Hewlett Packard Enterprise" }, { { 0xF0, 0xD0, 0x8C }, "TCTmobile", "TCT mobile ltd" }, { { 0xF0, 0xD1, 0x4F }, "Linear", "Linear Llc" }, { { 0xF0, 0xD1, 0xA9 }, "Apple", "Apple, Inc." }, @@ -37953,6 +38304,7 @@ { { 0xF4, 0x19, 0xE2 }, "Volterra", "Volterra" }, { { 0xF4, 0x1A, 0x9C }, "XiaomiCommun", "Xiaomi Communications Co Ltd" }, { { 0xF4, 0x1A, 0xB0 }, "XingguoduTec", "Shenzhen Xingguodu Technology Co., Ltd." }, + { { 0xF4, 0x1A, 0xF7 }, "zte", "zte corporation" }, { { 0xF4, 0x1B, 0xA1 }, "Apple", "Apple, Inc." }, { { 0xF4, 0x1C, 0x26 }, "AltoBeam", "AltoBeam Inc." }, { { 0xF4, 0x1C, 0x71 }, "SanmuCommuni", "Shenzhen Sanmu Communication Technology Co., Ltd" }, @@ -37966,12 +38318,14 @@ { { 0xF4, 0x1F, 0xC2 }, "Cisco", "Cisco Systems, Inc" }, { { 0xF4, 0x20, 0x12 }, "Cuciniale", "Cuciniale GmbH" }, { { 0xF4, 0x20, 0x15 }, "GuangzhouShi", "Guangzhou Shiyuan Electronic Technology Company Limited" }, + { { 0xF4, 0x20, 0x4D }, "MellanoxTech", "Mellanox Technologies, Inc." }, { { 0xF4, 0x21, 0xAE }, "XiaoduTechno", "Shanghai Xiaodu Technology Limited" }, { { 0xF4, 0x21, 0xCA }, "Apple", "Apple, Inc." }, { { 0xF4, 0x22, 0x7A }, "SeneasyIntel", "Guangdong Seneasy Intelligent Technology Co., Ltd." }, { { 0xF4, 0x23, 0x9C }, "SernetTechno", "Sernet (Suzhou) Technologies Corporation" }, { { 0xF4, 0x24, 0x62 }, "SelcomElectr", "Selcom Electronics (Shanghai) Co., Ltd" }, { { 0xF4, 0x24, 0x8B }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, + { { 0xF4, 0x25, 0x3C }, "eero", "eero inc." }, { { 0xF4, 0x26, 0x79 }, "Intel", "Intel Corporate" }, { { 0xF4, 0x27, 0x56 }, "DASANNewtork", "DASAN Newtork Solutions" }, { { 0xF4, 0x28, 0x33 }, "MMPC", "MMPC Inc." }, @@ -37988,6 +38342,7 @@ { { 0xF4, 0x2D, 0xC9 }, "Espressif", "Espressif Inc." }, { { 0xF4, 0x2E, 0x48 }, "zte", "zte corporation" }, { { 0xF4, 0x2E, 0x7F }, "HewlettPacka", "Hewlett Packard Enterprise" }, + { { 0xF4, 0x2F, 0x97 }, "EmbravaUSA", "Embrava USA, Inc" }, { { 0xF4, 0x30, 0x8B }, "XiaomiCommun", "Xiaomi Communications Co Ltd" }, { { 0xF4, 0x30, 0xB9 }, "HewlettPacka", "Hewlett Packard" }, { { 0xF4, 0x31, 0x49 }, "PixelFX", "Pixel FX" }, @@ -38192,6 +38547,7 @@ { { 0xF4, 0xB7, 0x8D }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xF4, 0xB7, 0xB3 }, "vivoMobileCo", "vivo Mobile Communication Co., Ltd." }, { { 0xF4, 0xB7, 0xE2 }, "HonHaiPrecis", "Hon Hai Precision Ind. Co.,Ltd." }, + { { 0xF4, 0xB8, 0x21 }, "Cisco", "Cisco Systems, Inc" }, { { 0xF4, 0xB8, 0x5E }, "TexasInstrum", "Texas Instruments" }, { { 0xF4, 0xB8, 0x98 }, "TexasInstrum", "Texas Instruments" }, { { 0xF4, 0xB8, 0xA7 }, "zte", "zte corporation" }, @@ -38300,6 +38656,7 @@ { { 0xF4, 0xF6, 0x46 }, "DediprogTech", "Dediprog Technology Co. Ltd." }, { { 0xF4, 0xF6, 0x47 }, "zte", "zte corporation" }, { { 0xF4, 0xF7, 0x0C }, "Avangneterbi", "Avang - neterbit" }, + { { 0xF4, 0xF9, 0x1E }, "IngramMicroS", "Ingram Micro Services" }, { { 0xF4, 0xF9, 0x51 }, "Apple", "Apple, Inc." }, { { 0xF4, 0xFB, 0xB8 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xF4, 0xFB, 0xF5 }, "EMMicroelect", "EM Microelectronic" }, @@ -38354,6 +38711,7 @@ { { 0xF8, 0x1A, 0x2B }, "Google", "Google, Inc." }, { { 0xF8, 0x1A, 0x67 }, "TpLinkTechno", "Tp-Link Technologies Co.,Ltd." }, { { 0xF8, 0x1B, 0x04 }, "ZhongShanCit", "Zhong Shan City Richsound Electronic Industrial Ltd" }, + { { 0xF8, 0x1B, 0x2E }, "GTechTechnol", "G.Tech Technology Ltd." }, { { 0xF8, 0x1C, 0xE5 }, "TelefonbauBe", "Telefonbau Behnke GmbH" }, { { 0xF8, 0x1D, 0x0F }, "HitronTechno", "Hitron Technologies. Inc" }, { { 0xF8, 0x1D, 0x90 }, "Solidwintech", "Solidwintech" }, @@ -38423,6 +38781,7 @@ { { 0xF8, 0x3E, 0x95 }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xF8, 0x3E, 0xB0 }, "Arcadyan", "Arcadyan Corporation" }, { { 0xF8, 0x3F, 0x51 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, + { { 0xF8, 0x40, 0x68 }, "SZDJIRoninTe", "SZ DJI Ronin Technology Co., Ltd." }, { { 0xF8, 0x42, 0x88 }, "Apple", "Apple, Inc." }, { { 0xF8, 0x42, 0xFB }, "YasudaJoho", "Yasuda Joho Co.,ltd." }, { { 0xF8, 0x43, 0xEF }, "XiaomiCommun", "Xiaomi Communications Co Ltd" }, @@ -38597,6 +38956,7 @@ { { 0xF8, 0xA4, 0x75 }, "PTIndorekaJa", "PT Indoreka Jaya Wutama" }, { { 0xF8, 0xA4, 0xFB }, "NanjingDecow", "Nanjing Decowell Automation Co.,LTD" }, { { 0xF8, 0xA5, 0xC5 }, "Cisco", "Cisco Systems, Inc" }, + { { 0xF8, 0xA5, 0xE6 }, "MagicyoTechn", "Magicyo Technology CO.,Ltd" }, { { 0xF8, 0xA7, 0x3A }, "Cisco", "Cisco Systems, Inc" }, { { 0xF8, 0xA7, 0x63 }, "ZhejiangTmal", "Zhejiang Tmall Technology Co., Ltd." }, { { 0xF8, 0xA9, 0x1F }, "ZVISIONTechn", "ZVISION Technologies Co., Ltd" }, @@ -38629,6 +38989,7 @@ { { 0xF8, 0xB7, 0xE2 }, "Cisco", "Cisco Systems, Inc" }, { { 0xF8, 0xB8, 0xB4 }, "SkyworthDigi", "Shenzhen Skyworth Digital Technology CO., Ltd" }, { { 0xF8, 0xB9, 0x5A }, "LGInnotek", "LG Innotek" }, + { { 0xF8, 0xBA, 0x98 }, "HuaqinTechno", "Huaqin Technology Co., Ltd" }, { { 0xF8, 0xBA, 0xE6 }, "Nokia", "Nokia" }, { { 0xF8, 0xBB, 0xBF }, "eero", "eero inc." }, { { 0xF8, 0xBC, 0x0E }, "eero", "eero inc." }, @@ -38693,6 +39054,7 @@ { { 0xF8, 0xDF, 0x15 }, "SunitecEnter", "Sunitec Enterprise Co.,Ltd" }, { { 0xF8, 0xDF, 0xA8 }, "zte", "zte corporation" }, { { 0xF8, 0xDF, 0xE1 }, "MyLight", "MyLight Systems" }, + { { 0xF8, 0xE0, 0x00 }, "FujiElectric", "Fuji Electric Co., Ltd." }, { { 0xF8, 0xE0, 0x79 }, "MotorolaMobi", "Motorola Mobility LLC, a Lenovo Company" }, { { 0xF8, 0xE2, 0x52 }, "Apple", "Apple, Inc." }, { { 0xF8, 0xE3, 0x5F }, "SichuanTiany", "Sichuan Tianyi Comheart Telecom Co.,LTD" }, @@ -38715,6 +39077,7 @@ { { 0xF8, 0xE9, 0x4F }, "Cisco", "Cisco Systems, Inc" }, { { 0xF8, 0xE9, 0x68 }, "EgkerKft", "Egker Kft." }, { { 0xF8, 0xEA, 0x0A }, "DiplMathMich", "Dipl.-Math. Michael Rauch" }, + { { 0xF8, 0xEC, 0xFE }, "OwlHome", "Owl Home Inc." }, { { 0xF8, 0xED, 0xA5 }, "Commscope", "Commscope" }, { { 0xF8, 0xED, 0xAE }, "MobiwireMobi", "Mobiwire Mobiles(Ningbo) Co.,Ltd" }, { { 0xF8, 0xED, 0xFC }, "HP", "HP Inc." }, @@ -38762,6 +39125,7 @@ { { 0xFA, 0x66, 0x73 }, "NellsElectro", "Nells Electronic Systems (Nes)" }, { { 0xFA, 0x7A, 0xCB }, "UltraEtherne", "Ultra Ethernet Consortium" }, { { 0xFA, 0x7D, 0x04 }, "SalienceLabs", "Salience Labs" }, + { { 0xFA, 0x93, 0x05 }, "PanasonicAut", "Panasonic Automotive Systems Co., Ltd." }, { { 0xFA, 0x94, 0xF1 }, "IEEE8021Chai", "IEEE 802.1 Chair" }, { { 0xFA, 0xBA, 0x85 }, "APATOptoelec", "APAT Optoelectronics Components Co., Ltd." }, { { 0xFA, 0xD9, 0x88 }, "MomentumData", "Momentum Data Systems" }, @@ -38831,6 +39195,7 @@ { { 0xFC, 0x22, 0xF4 }, "ZyxelCommuni", "Zyxel Communications Corporation" }, { { 0xFC, 0x23, 0x25 }, "EosTek", "EosTek (Shenzhen) Co., Ltd." }, { { 0xFC, 0x23, 0xCD }, "BilianElectr", "Shenzhen Bilian Electronic Co.,Ltd" }, + { { 0xFC, 0x24, 0x22 }, "EzvizSoftwar", "Hangzhou Ezviz Software Co.,Ltd." }, { { 0xFC, 0x25, 0x3F }, "Apple", "Apple, Inc." }, { { 0xFC, 0x26, 0x8C }, "Signify", "Signify B.V." }, { { 0xFC, 0x27, 0xA2 }, "TransElectri", "Trans Electric Co., Ltd." }, @@ -38858,6 +39223,7 @@ { { 0xFC, 0x35, 0x98 }, "Favite", "Favite Inc." }, { { 0xFC, 0x35, 0xE6 }, "Visteon", "Visteon Corporation" }, { { 0xFC, 0x37, 0x2B }, "SichuanTiany", "Sichuan Tianyi Comheart Telecom Co.,LTD" }, + { { 0xFC, 0x37, 0x6D }, "BilianElectr", "Shenzhen Bilian Electronic Co.,Ltd" }, { { 0xFC, 0x38, 0x6A }, "SkyworthDigi", "Shenzhen Skyworth Digital Technology CO., Ltd" }, { { 0xFC, 0x38, 0x76 }, "ForumCommuni", "Forum Communication Systems, Inc" }, { { 0xFC, 0x38, 0x82 }, "Infinixmobil", "Infinix mobility limited" }, @@ -38920,6 +39286,7 @@ { { 0xFC, 0x58, 0x9A }, "Cisco", "Cisco Systems, Inc" }, { { 0xFC, 0x58, 0xDF }, "InterphoneSe", "Interphone Service" }, { { 0xFC, 0x58, 0xFA }, "ShenZhenShiX", "Shen Zhen Shi Xin Zhong Xin Technology Co.,Ltd." }, + { { 0xFC, 0x59, 0x7A }, "ZebraTechnol", "Zebra Technologies Inc." }, { { 0xFC, 0x59, 0x9F }, "RuijieNetwor", "Ruijie Networks Co.,LTD" }, { { 0xFC, 0x59, 0xC0 }, "AristaNetwor", "Arista Networks" }, { { 0xFC, 0x5A, 0x1D }, "HitronTechno", "Hitron Technologies. Inc" }, @@ -39093,6 +39460,7 @@ { { 0xFC, 0xC7, 0x34 }, "SamsungElect", "Samsung Electronics Co.,Ltd" }, { { 0xFC, 0xC7, 0x37 }, "ShaanxiGangs", "Shaanxi Gangsion Electronic Technology Co., Ltd" }, { { 0xFC, 0xC8, 0x97 }, "zte", "zte corporation" }, + { { 0xFC, 0xCA, 0x10 }, "MercusysTech", "Mercusys Technologies Co., Ltd." }, { { 0xFC, 0xCA, 0xC4 }, "LifeHealth", "LifeHealth, LLC" }, { { 0xFC, 0xCC, 0xE4 }, "Ascon", "Ascon Ltd." }, { { 0xFC, 0xCF, 0x43 }, "HuizhouCityH", "Huizhou City Huiyang District Meisiqi Industry Development Co,.Ltd" }, @@ -39129,6 +39497,7 @@ { { 0xFC, 0xE2, 0x3F }, "ClayPaky", "Clay Paky Spa" }, { { 0xFC, 0xE2, 0x6C }, "Apple", "Apple, Inc." }, { { 0xFC, 0xE3, 0x3C }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, + { { 0xFC, 0xE4, 0x21 }, "zhejiangDusu", "zhejiang Dusun Electron Co.,Ltd" }, { { 0xFC, 0xE5, 0x57 }, "Nokia", "Nokia Corporation" }, { { 0xFC, 0xE6, 0x6A }, "IndustrialSo", "Industrial Software Co" }, { { 0xFC, 0xE6, 0xC6 }, "ChinaMobileG", "China Mobile Group Device Co.,Ltd." }, @@ -39138,6 +39507,7 @@ { { 0xFC, 0xE9, 0x98 }, "Apple", "Apple, Inc." }, { { 0xFC, 0xE9, 0xD8 }, "AmazonTechno", "Amazon Technologies Inc." }, { { 0xFC, 0xEA, 0x50 }, "IntegratedDe", "Integrated Device Technology (Malaysia) Sdn. Bhd." }, + { { 0xFC, 0xEB, 0x7B }, "HuaweiTechno", "Huawei Technologies Co.,Ltd" }, { { 0xFC, 0xEC, 0xDA }, "Ubiquiti", "Ubiquiti Inc" }, { { 0xFC, 0xED, 0xB9 }, "Arrayent", "Arrayent" }, { { 0xFC, 0xEE, 0xE6 }, "FormikeElect", "Formike Electronic Co., Ltd" }, @@ -39159,6 +39529,7 @@ { { 0xFC, 0xFA, 0xF7 }, "BaudDataComm", "Shanghai Baud Data Communication Co.,Ltd." }, { { 0xFC, 0xFB, 0xFB }, "Cisco", "Cisco Systems, Inc" }, { { 0xFC, 0xFC, 0x48 }, "Apple", "Apple, Inc." }, + { { 0xFC, 0xFD, 0x71 }, "AltoBeam", "AltoBeam Inc." }, { { 0xFC, 0xFE, 0x77 }, "HitachiRefte", "Hitachi Reftechno, Inc." }, { { 0xFC, 0xFE, 0xC2 }, "InvensysCont", "Invensys Controls UK Limited" }, }; @@ -39289,7 +39660,7 @@ { { 0x04, 0xC3, 0xE6, 0x10 }, "NewPulseElec", "Guangdong New Pulse Electric Co., Ltd." }, { { 0x04, 0xC3, 0xE6, 0x20 }, "SiSTechnolog", "SiS Technology" }, { { 0x04, 0xC3, 0xE6, 0x30 }, "ExtechElectr", "Extech Electronics Co., LTD." }, - { { 0x04, 0xC3, 0xE6, 0x40 }, "Innovusion", "Innovusion Inc." }, + { { 0x04, 0xC3, 0xE6, 0x40 }, "Seyond", "Seyond" }, { { 0x04, 0xC3, 0xE6, 0x50 }, "Invasys", "Invasys" }, { { 0x04, 0xC3, 0xE6, 0x60 }, "ShuotianInfo", "Shenzhen Shuotian Information Technology Co., LTD" }, { { 0x04, 0xC3, 0xE6, 0x70 }, "AdvancedDigi", "Advanced Digital Technologies, s.r.o." }, @@ -39767,6 +40138,7 @@ { { 0x18, 0xA5, 0x9C, 0xC0 }, "BlueEyesTech", "BlueEyes Technology" }, { { 0x18, 0xA5, 0x9C, 0xD0 }, "Annapurnalab", "Annapurna labs" }, { { 0x18, 0xA5, 0x9C, 0xE0 }, "BMCMesssyste", "BMC Messsysteme GmbH" }, + { { 0x18, 0xC3, 0xE4, 0x00 }, "Sodalec", "Sodalec" }, { { 0x18, 0xC3, 0xE4, 0x10 }, "HuiTongintel", "HuiTong intelligence Company" }, { { 0x18, 0xC3, 0xE4, 0x20 }, "Duress", "Duress Pty Ltd" }, { { 0x18, 0xC3, 0xE4, 0x30 }, "Proximusspzo", "Proximus sp. z.o.o." }, @@ -39776,6 +40148,7 @@ { { 0x18, 0xC3, 0xE4, 0x70 }, "BRSSistemasE", "BRS Sistemas Eletrônicos" }, { { 0x18, 0xC3, 0xE4, 0x80 }, "xDevelop", "xDevelop GmbH" }, { { 0x18, 0xC3, 0xE4, 0x90 }, "38220", "38220" }, + { { 0x18, 0xC3, 0xE4, 0xA0 }, "FimeSAS", "Fime SAS" }, { { 0x18, 0xC3, 0xE4, 0xB0 }, "CascadiaMoti", "Cascadia Motion LLC" }, { { 0x18, 0xC3, 0xE4, 0xC0 }, "BitPart", "Bit Part LLC" }, { { 0x18, 0xC3, 0xE4, 0xD0 }, "CASEDeutschl", "CASE Deutschland GmbH" }, @@ -39813,7 +40186,7 @@ { { 0x18, 0xFD, 0xCB, 0x00 }, "RuijialiElec", "Shenzhen Rui jiali Electronic Technology Co. Ltd." }, { { 0x18, 0xFD, 0xCB, 0x10 }, "SOTHISCICTEC", "SOTHIS CIC TEC (Shanghai) Co., Ltd" }, { { 0x18, 0xFD, 0xCB, 0x20 }, "Cabtronix", "Cabtronix AG" }, - { { 0x18, 0xFD, 0xCB, 0x30 }, "Staclar", "Staclar, Inc." }, + { { 0x18, 0xFD, 0xCB, 0x30 }, "BlahajStudio", "Blahaj Studio" }, { { 0x18, 0xFD, 0xCB, 0x40 }, "GosuncnTechn", "Gosuncn Technology Group Co.,LTD." }, { { 0x18, 0xFD, 0xCB, 0x50 }, "AccelRobotic", "Accel Robotics" }, { { 0x18, 0xFD, 0xCB, 0x60 }, "SKAOrganisat", "SKA Organisation" }, @@ -40067,6 +40440,21 @@ { { 0x20, 0x85, 0x93, 0xC0 }, "Regloplas", "Regloplas AG" }, { { 0x20, 0x85, 0x93, 0xD0 }, "KenmyondIndu", "Shanghai Kenmyond Industrial Network Equipment Co.,Ltd" }, { { 0x20, 0x85, 0x93, 0xE0 }, "Dynaudio", "Dynaudio" }, + { { 0x20, 0xB3, 0x7F, 0x00 }, "B810", "B810 Spa" }, + { { 0x20, 0xB3, 0x7F, 0x10 }, "TDKLambdaUK", "TDK-Lambda UK" }, + { { 0x20, 0xB3, 0x7F, 0x20 }, "AinaComputer", "Aina Computers ,Inc." }, + { { 0x20, 0xB3, 0x7F, 0x30 }, "QTmedical", "QT medical inc" }, + { { 0x20, 0xB3, 0x7F, 0x40 }, "Otp", "Otp Co.,Ltd." }, + { { 0x20, 0xB3, 0x7F, 0x50 }, "HantangFengy", "Shenzhen HantangFengyun Technology Co.,Ltd" }, + { { 0x20, 0xB3, 0x7F, 0x60 }, "KitchenArmor", "Kitchen Armor" }, + { { 0x20, 0xB3, 0x7F, 0x70 }, "Luxedo", "Luxedo" }, + { { 0x20, 0xB3, 0x7F, 0x80 }, "XconnectLLP", "Xconnect LLP" }, + { { 0x20, 0xB3, 0x7F, 0x90 }, "Annapurnalab", "Annapurna labs" }, + { { 0x20, 0xB3, 0x7F, 0xA0 }, "C&DElectroni", "ShenZhen C&D Electronics CO.Ltd." }, + { { 0x20, 0xB3, 0x7F, 0xB0 }, "HengbangXinc", "Shenzhen Hengbang Xinchuang Technology Co.,Ltd" }, + { { 0x20, 0xB3, 0x7F, 0xC0 }, "EGSTONPowerE", "EGSTON Power Electronics GmbH" }, + { { 0x20, 0xB3, 0x7F, 0xD0 }, "XunmuInforma", "Xunmu Information Technology (Shanghai) Co., Ltd." }, + { { 0x20, 0xB3, 0x7F, 0xE0 }, "KawasakiTher", "Kawasaki Thermal Engineering Co.,Ltd." }, { { 0x20, 0xCE, 0x2A, 0x00 }, "Annapurnalab", "Annapurna labs" }, { { 0x20, 0xCE, 0x2A, 0x10 }, "DigicubeInfo", "Shanghai Digicube Info&Tech Co.,Ltd." }, { { 0x20, 0xCE, 0x2A, 0x20 }, "Jabil", "Jabil" }, @@ -40501,7 +40889,7 @@ { { 0x30, 0x49, 0x50, 0x70 }, "iTGrobot", "Shenzhen iTG robot Co.,Ltd." }, { { 0x30, 0x49, 0x50, 0x80 }, "Ldrobot", "Shenzhen Ldrobot Co., Ltd." }, { { 0x30, 0x49, 0x50, 0x90 }, "gatangtechno", "Shanghai gatang technology CO.,LTD" }, - { { 0x30, 0x49, 0x50, 0xA0 }, "Ledworks", "Ledworks SRL" }, + { { 0x30, 0x49, 0x50, 0xA0 }, "Illucere", "Illucere Srl" }, { { 0x30, 0x49, 0x50, 0xB0 }, "EvTech", "Hangzhou Ev-Tech Co.,Ltd" }, { { 0x30, 0x49, 0x50, 0xC0 }, "Anacove", "Anacove LLC" }, { { 0x30, 0x49, 0x50, 0xD0 }, "MerlynMind", "Merlyn Mind, Inc." }, @@ -40716,6 +41104,21 @@ { { 0x38, 0xA8, 0xCD, 0xC0 }, "Aumiwalkerte", "Beijing Aumiwalker technology CO.,LTD" }, { { 0x38, 0xA8, 0xCD, 0xD0 }, "Annapurnalab", "Annapurna labs" }, { { 0x38, 0xA8, 0xCD, 0xE0 }, "Outform", "Outform" }, + { { 0x38, 0xB1, 0x4E, 0x00 }, "TongchuangMe", "Shenzhen Tongchuang Mechatronics co,LtD." }, + { { 0x38, 0xB1, 0x4E, 0x10 }, "MondoTechnol", "Shenzhen Mondo Technology Co,.Ltd" }, + { { 0x38, 0xB1, 0x4E, 0x20 }, "Marssun", "Marssun" }, + { { 0x38, 0xB1, 0x4E, 0x30 }, "QRONOZ", "QRONOZ CO., Ltd." }, + { { 0x38, 0xB1, 0x4E, 0x40 }, "NoitomRoboti", "Noitom Robotics Technology (Beijing) Co.,Ltd." }, + { { 0x38, 0xB1, 0x4E, 0x50 }, "BrookhavenNa", "Brookhaven National Laboratory" }, + { { 0x38, 0xB1, 0x4E, 0x60 }, "UniversalRob", "Universal Robots A/S" }, + { { 0x38, 0xB1, 0x4E, 0x70 }, "Nace", "Nace" }, + { { 0x38, 0xB1, 0x4E, 0x80 }, "QNION", "QNION Co.,Ltd" }, + { { 0x38, 0xB1, 0x4E, 0x90 }, "DclCommunica", "Dcl Communication Pte. Ltd." }, + { { 0x38, 0xB1, 0x4E, 0xA0 }, "Amissiontech", "Amissiontech Co., Ltd" }, + { { 0x38, 0xB1, 0x4E, 0xB0 }, "HuizhouGYXXT", "Huizhou GYXX Technology Co., Ltd" }, + { { 0x38, 0xB1, 0x4E, 0xC0 }, "GuangzhouSun", "Guangzhou Sunrise Technology Co., Ltd." }, + { { 0x38, 0xB1, 0x4E, 0xD0 }, "Private", "Private" }, + { { 0x38, 0xB1, 0x4E, 0xE0 }, "KnitSound", "Knit Sound Company" }, { { 0x38, 0xB1, 0x9E, 0x00 }, "TripleJumpMe", "Triple Jump Medical" }, { { 0x38, 0xB1, 0x9E, 0x10 }, "Freedompro", "Freedompro Srl" }, { { 0x38, 0xB1, 0x9E, 0x20 }, "Hdanywhere", "Hdanywhere" }, @@ -41150,6 +41553,21 @@ { { 0x4C, 0x65, 0xA8, 0xC0 }, "Fuse", "Fuse" }, { { 0x4C, 0x65, 0xA8, 0xD0 }, "QingpingTech", "Qingping Technology (Beijing) Co., Ltd." }, { { 0x4C, 0x65, 0xA8, 0xE0 }, "HighInfinity", "High Infinity Germany" }, + { { 0x4C, 0x6E, 0x44, 0x00 }, "Quasonix", "Quasonix" }, + { { 0x4C, 0x6E, 0x44, 0x10 }, "XmitechElect", "Shenzhen Xmitech Electronic Co.,Ltd" }, + { { 0x4C, 0x6E, 0x44, 0x20 }, "Accutrol", "Accutrol LLC" }, + { { 0x4C, 0x6E, 0x44, 0x30 }, "QingtingInte", "Qingting Intelligent Technology(Suzhou)Co.,Ltd." }, + { { 0x4C, 0x6E, 0x44, 0x40 }, "Private", "Private" }, + { { 0x4C, 0x6E, 0x44, 0x50 }, "LangjiGuangn", "Shenzhen Langji Guangnian Technology Co., Ltd." }, + { { 0x4C, 0x6E, 0x44, 0x60 }, "PanacheDigiL", "Panache DigiLife Limited" }, + { { 0x4C, 0x6E, 0x44, 0x70 }, "LuxshareElec", "Luxshare Electronic Technology (KunShan) Ltd" }, + { { 0x4C, 0x6E, 0x44, 0x80 }, "iTaygaTechno", "Shenzhen iTayga Technology Co.,Ltd" }, + { { 0x4C, 0x6E, 0x44, 0x90 }, "Ruibitechuan", "Chengdu Ruibitechuang Technology Co.,Ltd" }, + { { 0x4C, 0x6E, 0x44, 0xA0 }, "Swistec", "Swistec GmbH" }, + { { 0x4C, 0x6E, 0x44, 0xB0 }, "NovaFly", "NovaFly LLC" }, + { { 0x4C, 0x6E, 0x44, 0xC0 }, "WindarPhoton", "Windar Photonics A/S" }, + { { 0x4C, 0x6E, 0x44, 0xD0 }, "1HomeSolutio", "1Home Solutions GmbH" }, + { { 0x4C, 0x6E, 0x44, 0xE0 }, "JooanTechnol", "Shenzhen Jooan Technology Co., Ltd" }, { { 0x4C, 0x74, 0xA7, 0x00 }, "TimekettleTe", "Shenzhen Timekettle Technologies Co.,Ltd" }, { { 0x4C, 0x74, 0xA7, 0x10 }, "HollylandTec", "Shenzhen Hollyland Technology Co.,Ltd" }, { { 0x4C, 0x74, 0xA7, 0x20 }, "Cyanview", "Cyanview" }, @@ -41862,7 +42280,7 @@ { { 0x6C, 0x15, 0x24, 0x10 }, "Telsonic", "Telsonic AG" }, { { 0x6C, 0x15, 0x24, 0x20 }, "Linkplay", "Linkplay" }, { { 0x6C, 0x15, 0x24, 0x30 }, "ForciteHelme", "Forcite Helmet Systems Pty Ltd" }, - { { 0x6C, 0x15, 0x24, 0x40 }, "MagicyoTechn", "Magicyo Technology CO., LTD." }, + { { 0x6C, 0x15, 0x24, 0x40 }, "MagicyoTechn", "Magicyo Technology CO.,Ltd" }, { { 0x6C, 0x15, 0x24, 0x50 }, "ElectronTech", "Shenzhen Electron Technology Co., LTD." }, { { 0x6C, 0x15, 0x24, 0x60 }, "KunshanAbram", "Kunshan Abram Software Technology Co.,Ltd." }, { { 0x6C, 0x15, 0x24, 0x70 }, "Motium", "Motium Pty Ltd" }, @@ -41917,6 +42335,7 @@ { { 0x6C, 0x47, 0x80, 0xB0 }, "CardioSistem", "Cardio Sistemas Comercial E Industrial Ltda" }, { { 0x6C, 0x47, 0x80, 0xC0 }, "ZVK", "ZVK GmbH" }, { { 0x6C, 0x47, 0x80, 0xD0 }, "JEL", "JEL Corporation" }, + { { 0x6C, 0x47, 0x80, 0xE0 }, "AlbanGiacomo", "Alban Giacomo S.p.a." }, { { 0x6C, 0x5C, 0x3D, 0x00 }, "HugsunTechno", "ShenZhen Hugsun Technology Co.,Ltd." }, { { 0x6C, 0x5C, 0x3D, 0x10 }, "JustekTechno", "Shenzhen Justek Technology Co., Ltd" }, { { 0x6C, 0x5C, 0x3D, 0x20 }, "VertivIndust", "Vertiv Industrial Systems" }, @@ -42436,6 +42855,21 @@ { { 0x80, 0x0A, 0x80, 0x50 }, "ZidooTechnol", "Shenzhen Zidoo Technology Co., Ltd." }, { { 0x80, 0x0A, 0x80, 0x60 }, "GooagooTechn", "Beijing Gooagoo Technical Service Co.,Ltd." }, { { 0x80, 0x0A, 0x80, 0xF0 }, "Private", "Private" }, + { { 0x80, 0x1D, 0x0D, 0x00 }, "KbDevice", "KbDevice,Inc." }, + { { 0x80, 0x1D, 0x0D, 0x10 }, "HörmannWarns", "Hörmann Warnsysteme GmbH" }, + { { 0x80, 0x1D, 0x0D, 0x20 }, "SZSpinningPo", "SZ Spinning Power Top Boundary Technology Co.Ltd." }, + { { 0x80, 0x1D, 0x0D, 0x30 }, "LecooTechnol", "Lecoo Technology Co.,Ltd." }, + { { 0x80, 0x1D, 0x0D, 0x40 }, "GTLTecnologi", "GTL Tecnologia e Sistemas Ltda" }, + { { 0x80, 0x1D, 0x0D, 0x50 }, "LongiMeter", "Longi Meter Co.,Ltd." }, + { { 0x80, 0x1D, 0x0D, 0x60 }, "DrowsyDigita", "Drowsy Digital Inc" }, + { { 0x80, 0x1D, 0x0D, 0x70 }, "Innowavepowe", "Hangzhou Innowavepower Electronic Technology Co.,Ltd" }, + { { 0x80, 0x1D, 0x0D, 0x80 }, "Crestchic", "Crestchic (Uk) Limited" }, + { { 0x80, 0x1D, 0x0D, 0x90 }, "WarnerElectr", "Warner Electronics (I) Pvt. Ltd." }, + { { 0x80, 0x1D, 0x0D, 0xA0 }, "LuxshareElec", "Luxshare Electronic Technology (KunShan) Ltd" }, + { { 0x80, 0x1D, 0x0D, 0xB0 }, "SyrmaSGSTech", "Syrma SGS Technology" }, + { { 0x80, 0x1D, 0x0D, 0xC0 }, "Logicom", "Logicom Sa" }, + { { 0x80, 0x1D, 0x0D, 0xD0 }, "802Secure", "802 Secure" }, + { { 0x80, 0x1D, 0x0D, 0xE0 }, "ReveISparkTe", "Shanghai ReveISpark Technologies Co.,Ltd." }, { { 0x80, 0x77, 0x86, 0x00 }, "DaisyAudio", "Daisy Audio Inc." }, { { 0x80, 0x77, 0x86, 0x10 }, "Raycon", "Raycon" }, { { 0x80, 0x77, 0x86, 0x20 }, "Wintec", "Wintec Co., Ltd" }, @@ -43402,6 +43836,21 @@ { { 0xA4, 0x4F, 0x29, 0xD0 }, "Halliburton", "Halliburton" }, { { 0xA4, 0x4F, 0x29, 0xE0 }, "Neotech", "Neotech Systems Pvt. Ltd." }, { { 0xA4, 0x4F, 0x29, 0xF0 }, "Private", "Private" }, + { { 0xA4, 0x4F, 0x3E, 0x00 }, "UnitedAutomo", "United Automotive Electronic Systems Co.,Ltd" }, + { { 0xA4, 0x4F, 0x3E, 0x10 }, "NetshieldEur", "Netshield Europe Srl" }, + { { 0xA4, 0x4F, 0x3E, 0x20 }, "RinventIndus", "Rinvent Industries Private Limited" }, + { { 0xA4, 0x4F, 0x3E, 0x30 }, "Annapurnalab", "Annapurna labs" }, + { { 0xA4, 0x4F, 0x3E, 0x40 }, "hionetech", "ShenZhen hionetech Co,.ltd" }, + { { 0xA4, 0x4F, 0x3E, 0x50 }, "Mobilint", "Mobilint" }, + { { 0xA4, 0x4F, 0x3E, 0x60 }, "MavenPet", "Maven Pet Inc" }, + { { 0xA4, 0x4F, 0x3E, 0x70 }, "VinfastTradi", "Vinfast Trading and Production JSC" }, + { { 0xA4, 0x4F, 0x3E, 0x80 }, "Neurable", "Neurable" }, + { { 0xA4, 0x4F, 0x3E, 0x90 }, "LINKGroup", "LINK Group Inc." }, + { { 0xA4, 0x4F, 0x3E, 0xA0 }, "CMCNI", "CMCNI Co., Ltd" }, + { { 0xA4, 0x4F, 0x3E, 0xB0 }, "SuzhouAIDome", "Suzhou AIDomex Intelligent Technology Co., Ltd." }, + { { 0xA4, 0x4F, 0x3E, 0xC0 }, "JoyarTechnol", "Joyar Technology (Hong Kong) Company Limited" }, + { { 0xA4, 0x4F, 0x3E, 0xD0 }, "NTTsonority", "NTT sonority, Inc." }, + { { 0xA4, 0x4F, 0x3E, 0xE0 }, "ChainwayInfo", "ShenZhen Chainway Information Technology Co., Ltd." }, { { 0xA4, 0x53, 0xEE, 0x00 }, "MahleElectro", "Mahle Electronics, Slu" }, { { 0xA4, 0x53, 0xEE, 0x10 }, "Stellamore", "Stellamore" }, { { 0xA4, 0x53, 0xEE, 0x20 }, "UbisafeSmart", "Ubisafe Smart Devices" }, @@ -43993,6 +44442,21 @@ { { 0xC4, 0x7C, 0x8D, 0xC0 }, "INOTECSicher", "INOTEC Sicherheitstechnik GmbH" }, { { 0xC4, 0x7C, 0x8D, 0xD0 }, "AnhuiGuangXi", "Anhui GuangXing Linked-Video Communication Technology Co, Ltd." }, { { 0xC4, 0x7C, 0x8D, 0xE0 }, "LaborStrauss", "Labor Strauss Sicherungsanlagenbau GmbH" }, + { { 0xC4, 0x82, 0x72, 0x00 }, "GabrielTecno", "Gabriel Tecnologia" }, + { { 0xC4, 0x82, 0x72, 0x10 }, "Private", "Private" }, + { { 0xC4, 0x82, 0x72, 0x20 }, "DigisineEner", "Digisine Energytech Co., Ltd." }, + { { 0xC4, 0x82, 0x72, 0x30 }, "NextSilicon", "NextSilicon" }, + { { 0xC4, 0x82, 0x72, 0x40 }, "MelecsEWS", "Melecs EWS GmbH" }, + { { 0xC4, 0x82, 0x72, 0x50 }, "SchunkSE", "Schunk SE & Co. KG" }, + { { 0xC4, 0x82, 0x72, 0x60 }, "Mantenimient", "Mantenimiento y paileria" }, + { { 0xC4, 0x82, 0x72, 0x70 }, "ModeSensorsA", "Mode Sensors AS" }, + { { 0xC4, 0x82, 0x72, 0x80 }, "SmartLogicTe", "Shanghai Smart Logic Technology Ltd." }, + { { 0xC4, 0x82, 0x72, 0x90 }, "Satways", "Satways Ltd" }, + { { 0xC4, 0x82, 0x72, 0xA0 }, "ToltTechnolo", "Tolt Technologies LLC" }, + { { 0xC4, 0x82, 0x72, 0xB0 }, "MyPlaceAustr", "MyPlace Australia Pty Ltd" }, + { { 0xC4, 0x82, 0x72, 0xC0 }, "E2Cad", "E2-Cad" }, + { { 0xC4, 0x82, 0x72, 0xD0 }, "Posital", "Posital B.V." }, + { { 0xC4, 0x82, 0x72, 0xE0 }, "SmartRadarSy", "Smart Radar System, Inc" }, { { 0xC4, 0x83, 0x72, 0x00 }, "CompumedicsG", "Compumedics Germany GmbH" }, { { 0xC4, 0x83, 0x72, 0x10 }, "KingWillTech", "Shenzhen King Will Technology Co., LTD" }, { { 0xC4, 0x83, 0x72, 0x20 }, "AiRider", "Ai-Rider Corporation" }, @@ -44102,7 +44566,7 @@ { { 0xC4, 0xFF, 0xBC, 0x10 }, "VisatechC0", "Visatech C0., Ltd." }, { { 0xC4, 0xFF, 0xBC, 0x20 }, "MobiletronEl", "Mobiletron Electronics Co., Ltd" }, { { 0xC4, 0xFF, 0xBC, 0x30 }, "KalifElectro", "Shenzhen Kalif Electronics Co.,Ltd" }, - { { 0xC4, 0xFF, 0xBC, 0x40 }, "iMageTech", "iMageTech CO.,LTD." }, + { { 0xC4, 0xFF, 0xBC, 0x40 }, "HyperNet", "HyperNet CO., LTD" }, { { 0xC4, 0xFF, 0xBC, 0x50 }, "comtime", "comtime GmbH" }, { { 0xC4, 0xFF, 0xBC, 0x60 }, "KanghaiInfor", "Shanghai Kanghai Information System CO.,LTD." }, { { 0xC4, 0xFF, 0xBC, 0x70 }, "CriticalLink", "Critical Link" }, @@ -44325,6 +44789,21 @@ { { 0xCC, 0xD3, 0x9D, 0xC0 }, "ScooperTechn", "Hangzhou Scooper Technology Co.,Ltd." }, { { 0xCC, 0xD3, 0x9D, 0xD0 }, "EthernityNet", "Ethernity Networks" }, { { 0xCC, 0xD3, 0x9D, 0xE0 }, "tongliinform", "Shanghai tongli information technology co. LTD" }, + { { 0xCC, 0xE7, 0xDE, 0x00 }, "JooanTechnol", "Shenzhen Jooan Technology Co., Ltd" }, + { { 0xCC, 0xE7, 0xDE, 0x10 }, "KazeAITechno", "Kaze.AI Technology Co.,Ltd." }, + { { 0xCC, 0xE7, 0xDE, 0x20 }, "OctopusEnerg", "Octopus Energy Ltd" }, + { { 0xCC, 0xE7, 0xDE, 0x30 }, "Private", "Private" }, + { { 0xCC, 0xE7, 0xDE, 0x40 }, "Fareco", "Fareco" }, + { { 0xCC, 0xE7, 0xDE, 0x50 }, "VantronTechn", "Chengdu Vantron Technology Co., Ltd." }, + { { 0xCC, 0xE7, 0xDE, 0x60 }, "Skylight", "Skylight" }, + { { 0xCC, 0xE7, 0xDE, 0x70 }, "DabuziduoInf", "Shanghai Dabuziduo Information and Technology Co., Ltd." }, + { { 0xCC, 0xE7, 0xDE, 0x80 }, "Private", "Private" }, + { { 0xCC, 0xE7, 0xDE, 0x90 }, "QichangIntel", "Shenzhen Qichang Intelligent Technology Co., Ltd." }, + { { 0xCC, 0xE7, 0xDE, 0xA0 }, "OpalCamera", "Opal Camera Inc." }, + { { 0xCC, 0xE7, 0xDE, 0xB0 }, "3DComputing", "3D Computing" }, + { { 0xCC, 0xE7, 0xDE, 0xC0 }, "SirivisionCo", "Guangdong Sirivision Communication Technology Co.,LTD." }, + { { 0xCC, 0xE7, 0xDE, 0xD0 }, "JukeAudio", "Juke Audio" }, + { { 0xCC, 0xE7, 0xDE, 0xE0 }, "XingyiIntell", "Shenzhen Xingyi Intelligent Technology Co.,Ltd" }, { { 0xD0, 0x14, 0x11, 0x00 }, "EkkoSense", "EkkoSense Ltd" }, { { 0xD0, 0x14, 0x11, 0x10 }, "PBElettronic", "P.B. Elettronica srl" }, { { 0xD0, 0x14, 0x11, 0x20 }, "EvocoLabs", "Evoco Labs CO., LTD" }, @@ -45335,6 +45814,7 @@ { { 0xF8, 0xB5, 0x68, 0xC0 }, "3SISecurity", "3SI Security Systems, Inc" }, { { 0xF8, 0xB5, 0x68, 0xD0 }, "Solarius", "Solarius" }, { { 0xF8, 0xB5, 0x68, 0xE0 }, "ZAORADIUSAvt", "ZAO \"RADIUS Avtomatika\"" }, + { { 0xF8, 0xC9, 0xD6, 0x20 }, "Annapurnalab", "Annapurna labs" }, { { 0xFC, 0x61, 0x79, 0x00 }, "ZhuhaiAnjuba", "Zhuhai Anjubao Electronics Technology Co., Ltd." }, { { 0xFC, 0x61, 0x79, 0x10 }, "SignalinksCo", "Signalinks Communication Technology Co., Ltd" }, { { 0xFC, 0x61, 0x79, 0x20 }, "ShenshuiElec", "Shenzhen Shenshui Electronic Commerce Co.,Ltd" }, @@ -52534,7 +53014,7 @@ { { 0x70, 0xB3, 0xD5, 0x91, 0xB0 }, "Dolotrondoo", "Dolotron d.o.o." }, { { 0x70, 0xB3, 0xD5, 0x91, 0xC0 }, "AlereTechnol", "Alere Technologies AS" }, { { 0x70, 0xB3, 0xD5, 0x91, 0xD0 }, "Cubitech", "Cubitech" }, - { { 0x70, 0xB3, 0xD5, 0x91, 0xE0 }, "CreotechInst", "Creotech Instruments S.A." }, + { { 0x70, 0xB3, 0xD5, 0x91, 0xE0 }, "CreotechQuan", "Creotech Quantum SA" }, { { 0x70, 0xB3, 0xD5, 0x91, 0xF0 }, "JSCInformInv", "JSC \"InformInvestGroup\"" }, { { 0x70, 0xB3, 0xD5, 0x92, 0x00 }, "Slat", "Slat" }, { { 0x70, 0xB3, 0xD5, 0x92, 0x10 }, "QDevil", "QDevil" }, @@ -53134,7 +53614,7 @@ { { 0x70, 0xB3, 0xD5, 0xB7, 0x50 }, "Grossenbache", "Grossenbacher Systeme AG" }, { { 0x70, 0xB3, 0xD5, 0xB7, 0x60 }, "AtlSd", "Atl-Sd" }, { { 0x70, 0xB3, 0xD5, 0xB7, 0x70 }, "Motec", "Motec Pty Ltd" }, - { { 0x70, 0xB3, 0xD5, 0xB7, 0x80 }, "HOERMANN", "HOERMANN GmbH" }, + { { 0x70, 0xB3, 0xD5, 0xB7, 0x80 }, "HörmannWarns", "Hörmann Warnsysteme GmbH" }, { { 0x70, 0xB3, 0xD5, 0xB7, 0x90 }, "Dadacon", "Dadacon GmbH" }, { { 0x70, 0xB3, 0xD5, 0xB7, 0xA0 }, "Mahle", "Mahle" }, { { 0x70, 0xB3, 0xD5, 0xB7, 0xB0 }, "DoosanDigita", "Doosan Digital Innovation America" }, @@ -54318,6 +54798,7 @@ { { 0x8C, 0x1F, 0x64, 0x02, 0x30 }, "OmnilinkTecn", "Omnilink Tecnologia S/A" }, { { 0x8C, 0x1F, 0x64, 0x02, 0x40 }, "ShinNihonDen", "Shin Nihon Denshi Co., Ltd." }, { { 0x8C, 0x1F, 0x64, 0x02, 0x50 }, "SMITEC", "SMITEC S.p.A." }, + { { 0x8C, 0x1F, 0x64, 0x02, 0x70 }, "ZhejiangTeng", "Zhejiang Tengen Electric Co.,Ltd." }, { { 0x8C, 0x1F, 0x64, 0x02, 0x80 }, "eyrise", "eyrise B.V." }, { { 0x8C, 0x1F, 0x64, 0x02, 0x90 }, "HunanShengyu", "Hunan Shengyun Photoelectric Technology Co.,LTD" }, { { 0x8C, 0x1F, 0x64, 0x02, 0xA0 }, "DEUTAWerke", "DEUTA Werke GmbH" }, @@ -54328,10 +54809,12 @@ { { 0x8C, 0x1F, 0x64, 0x03, 0x30 }, "IQHomeKft", "IQ Home Kft." }, { { 0x8C, 0x1F, 0x64, 0x03, 0x50 }, "RealWear", "RealWear" }, { { 0x8C, 0x1F, 0x64, 0x03, 0x60 }, "PhotonCounti", "Photon Counting Systems LLC" }, + { { 0x8C, 0x1F, 0x64, 0x03, 0x70 }, "EnlessWirele", "Enless Wireless" }, { { 0x8C, 0x1F, 0x64, 0x03, 0xA0 }, "OrionCompute", "Orion Computers" }, { { 0x8C, 0x1F, 0x64, 0x03, 0xB0 }, "OrionPower", "Orion Power Systems, Inc." }, { { 0x8C, 0x1F, 0x64, 0x03, 0xC0 }, "SonaBusiness", "Sona Business B.V." }, { { 0x8C, 0x1F, 0x64, 0x03, 0xD0 }, "Horizon", "Horizon.Inc" }, + { { 0x8C, 0x1F, 0x64, 0x03, 0xE0 }, "YUYAMAMFG", "YUYAMA MFG Co.,Ltd" }, { { 0x8C, 0x1F, 0x64, 0x04, 0x20 }, "Heitec", "Heitec Ag" }, { { 0x8C, 0x1F, 0x64, 0x04, 0x30 }, "AperNet", "AperNet, LLC" }, { { 0x8C, 0x1F, 0x64, 0x04, 0x50 }, "Veilux", "Veilux Inc." }, @@ -54406,13 +54889,16 @@ { { 0x8C, 0x1F, 0x64, 0x09, 0xF0 }, "MBconnectlin", "MB connect line GmbH Fernwartungssysteme" }, { { 0x8C, 0x1F, 0x64, 0x0A, 0x00 }, "Techniwave", "Techniwave" }, { { 0x8C, 0x1F, 0x64, 0x0A, 0x20 }, "Best", "Best" }, + { { 0x8C, 0x1F, 0x64, 0x0A, 0x30 }, "FischerConne", "Fischer & Connectors SA" }, { { 0x8C, 0x1F, 0x64, 0x0A, 0x40 }, "DynamicResea", "Dynamic Research, Inc." }, { { 0x8C, 0x1F, 0x64, 0x0A, 0x50 }, "GomeroNordic", "Gomero Nordic AB" }, { { 0x8C, 0x1F, 0x64, 0x0A, 0x80 }, "SamabaNova", "SamabaNova Systems" }, + { { 0x8C, 0x1F, 0x64, 0x0A, 0x90 }, "RFT", "RFT Corp." }, { { 0x8C, 0x1F, 0x64, 0x0A, 0xA0 }, "Di3InfotechL", "Di3 Infotech Llp" }, { { 0x8C, 0x1F, 0x64, 0x0A, 0xB0 }, "NorbitODMAS", "Norbit ODM AS" }, { { 0x8C, 0x1F, 0x64, 0x0A, 0xC0 }, "PatchTechnol", "Patch Technologies, Inc." }, { { 0x8C, 0x1F, 0x64, 0x0A, 0xD0 }, "E2Nova", "E2 Nova Corporation" }, + { { 0x8C, 0x1F, 0x64, 0x0A, 0xE0 }, "GogoBA", "Gogo BA" }, { { 0x8C, 0x1F, 0x64, 0x0A, 0xF0 }, "ForseePower", "Forsee Power" }, { { 0x8C, 0x1F, 0x64, 0x0B, 0x00 }, "BunkaShutter", "Bunka Shutter Co., Ltd." }, { { 0x8C, 0x1F, 0x64, 0x0B, 0x50 }, "SMCGateway", "SMC Gateway" }, @@ -54494,6 +54980,7 @@ { { 0x8C, 0x1F, 0x64, 0x12, 0xB0 }, "TongtechTech", "Beijing Tongtech Technology Co., Ltd." }, { { 0x8C, 0x1F, 0x64, 0x12, 0xD0 }, "YUYAMAMFG", "YUYAMA MFG Co.,Ltd" }, { { 0x8C, 0x1F, 0x64, 0x12, 0xE0 }, "inomatic", "inomatic GmbH" }, + { { 0x8C, 0x1F, 0x64, 0x12, 0xF0 }, "MBconnectlin", "MB connect line GmbH" }, { { 0x8C, 0x1F, 0x64, 0x13, 0x30 }, "Vtron", "Vtron Pty Ltd" }, { { 0x8C, 0x1F, 0x64, 0x13, 0x40 }, "LyconSys", "LyconSys GmbH & Co.KG" }, { { 0x8C, 0x1F, 0x64, 0x13, 0x50 }, "YuvalFichman", "Yuval Fichman" }, @@ -54542,6 +55029,7 @@ { { 0x8C, 0x1F, 0x64, 0x17, 0xB0 }, "BavariaDigit", "Bavaria Digital Technik GmbH" }, { { 0x8C, 0x1F, 0x64, 0x17, 0xC0 }, "Zelp", "Zelp Ltd" }, { { 0x8C, 0x1F, 0x64, 0x17, 0xE0 }, "MI", "MI Inc." }, + { { 0x8C, 0x1F, 0x64, 0x17, 0xF0 }, "Bcmtech", "Bcmtech" }, { { 0x8C, 0x1F, 0x64, 0x18, 0x00 }, "StructuralIn", "Structural Integrity Services" }, { { 0x8C, 0x1F, 0x64, 0x18, 0x30 }, "NICETotalCas", "NICE Total Cash Management Co., Ltd." }, { { 0x8C, 0x1F, 0x64, 0x18, 0x50 }, "BiotageGb", "Biotage Gb Ltd" }, @@ -54583,10 +55071,13 @@ { { 0x8C, 0x1F, 0x64, 0x1C, 0x00 }, "INVENTIASp", "INVENTIA Sp. z o.o." }, { { 0x8C, 0x1F, 0x64, 0x1C, 0x20 }, "SolidInventL", "Solid Invent Ltda." }, { { 0x8C, 0x1F, 0x64, 0x1C, 0x40 }, "EDGX", "EDGX bv" }, + { { 0x8C, 0x1F, 0x64, 0x1C, 0x50 }, "BreasMedical", "Breas Medical AB" }, { { 0x8C, 0x1F, 0x64, 0x1C, 0x90 }, "Pneumax", "Pneumax Spa" }, { { 0x8C, 0x1F, 0x64, 0x1C, 0xA0 }, "PowerElectro", "Power Electronics Espana, S.L." }, { { 0x8C, 0x1F, 0x64, 0x1C, 0xB0 }, "SASYSeK", "SASYS e.K." }, + { { 0x8C, 0x1F, 0x64, 0x1C, 0xC0 }, "TexComputer", "Tex Computer Srl" }, { { 0x8C, 0x1F, 0x64, 0x1C, 0xE0 }, "Eiden", "Eiden Co.,Ltd." }, + { { 0x8C, 0x1F, 0x64, 0x1C, 0xF0 }, "Baolihder", "Baolihder Co.,Ltd." }, { { 0x8C, 0x1F, 0x64, 0x1D, 0x00 }, "MBconnectlin", "MB connect line GmbH Fernwartungssysteme" }, { { 0x8C, 0x1F, 0x64, 0x1D, 0x10 }, "ASStrömungst", "AS Strömungstechnik GmbH" }, { { 0x8C, 0x1F, 0x64, 0x1D, 0x30 }, "OpusTwoICS", "Opus-Two ICS" }, @@ -54624,6 +55115,7 @@ { { 0x8C, 0x1F, 0x64, 0x20, 0x10 }, "HiwinMikrosy", "Hiwin Mikrosystem Corp." }, { { 0x8C, 0x1F, 0x64, 0x20, 0x30 }, "ENTOSS", "ENTOSS Co.,Ltd" }, { { 0x8C, 0x1F, 0x64, 0x20, 0x40 }, "castcore", "castcore" }, + { { 0x8C, 0x1F, 0x64, 0x20, 0x50 }, "Anuvu", "Anuvu AB" }, { { 0x8C, 0x1F, 0x64, 0x20, 0x60 }, "KryfsTechnol", "Kryfs Technologies Private Limited" }, { { 0x8C, 0x1F, 0x64, 0x20, 0x80 }, "SichuanAnSph", "Sichuan AnSphere Technology Co. Ltd." }, { { 0x8C, 0x1F, 0x64, 0x20, 0xA0 }, "Oriux", "Oriux" }, @@ -54632,6 +55124,7 @@ { { 0x8C, 0x1F, 0x64, 0x20, 0xE0 }, "AlphaBridgeT", "Alpha Bridge Technologies Private Limited" }, { { 0x8C, 0x1F, 0x64, 0x21, 0x10 }, "BipomElectro", "Bipom Electronics, Inc." }, { { 0x8C, 0x1F, 0x64, 0x21, 0x50 }, "XLOGIC", "XLOGIC srl" }, + { { 0x8C, 0x1F, 0x64, 0x21, 0x60 }, "HiwinMikrosy", "Hiwin Mikrosystem Corp." }, { { 0x8C, 0x1F, 0x64, 0x21, 0x90 }, "GuangzhouDes", "Guangzhou Desam Audio Co.,Ltd" }, { { 0x8C, 0x1F, 0x64, 0x21, 0xA0 }, "ExicomTechno", "Exicom Technologies India Pvt. Ltd." }, { { 0x8C, 0x1F, 0x64, 0x21, 0xC0 }, "LLCEMSExpert", "LLC \"EMS-Expert\"" }, @@ -54656,6 +55149,7 @@ { { 0x8C, 0x1F, 0x64, 0x24, 0x40 }, "HutchisonDre", "Hutchison Drei Austria Gmbh" }, { { 0x8C, 0x1F, 0x64, 0x24, 0x60 }, "Oriux", "Oriux" }, { { 0x8C, 0x1F, 0x64, 0x24, 0x70 }, "DadhwalWeigh", "Dadhwal Weighing Instrument Repairing Works" }, + { { 0x8C, 0x1F, 0x64, 0x24, 0x80 }, "Terragene", "Terragene" }, { { 0x8C, 0x1F, 0x64, 0x24, 0x90 }, "TexComputer", "Tex Computer Srl" }, { { 0x8C, 0x1F, 0x64, 0x24, 0xC0 }, "LinkAllTechn", "Shenzhen Link-All Technolgy Co., Ltd" }, { { 0x8C, 0x1F, 0x64, 0x24, 0xD0 }, "XiAnJiaodaKa", "Xi'An Jiaoda Kaida New Technology Co.Ltd" }, @@ -54680,6 +55174,7 @@ { { 0x8C, 0x1F, 0x64, 0x26, 0x80 }, "AstroMachine", "Astro Machine Corporation" }, { { 0x8C, 0x1F, 0x64, 0x26, 0x90 }, "Sicon", "Sicon srl" }, { { 0x8C, 0x1F, 0x64, 0x26, 0xB0 }, "Profcon", "Profcon AB" }, + { { 0x8C, 0x1F, 0x64, 0x26, 0xC0 }, "Diatech", "Diatech co.,ltd." }, { { 0x8C, 0x1F, 0x64, 0x26, 0xE0 }, "KoizumiLight", "Koizumi Lighting Technology Corp." }, { { 0x8C, 0x1F, 0x64, 0x26, 0xF0 }, "QUISS", "QUISS GmbH" }, { { 0x8C, 0x1F, 0x64, 0x27, 0x00 }, "Xi‘anHanggua", "Xi‘an Hangguang Satellite and Control Technology Co.,Ltd" }, @@ -54704,6 +55199,7 @@ { { 0x8C, 0x1F, 0x64, 0x28, 0xB0 }, "PowerElectro", "Power Electronics Espana, S.L." }, { { 0x8C, 0x1F, 0x64, 0x28, 0xC0 }, "SakuraSeiki", "Sakura Seiki Co.,Ltd." }, { { 0x8C, 0x1F, 0x64, 0x28, 0xD0 }, "AVAMonitorin", "AVA Monitoring AB" }, + { { 0x8C, 0x1F, 0x64, 0x28, 0xF0 }, "MDASatConnUK", "MDA SatConn UK" }, { { 0x8C, 0x1F, 0x64, 0x29, 0x00 }, "UbiqTechnolo", "Ubiq Technologies International Ltd" }, { { 0x8C, 0x1F, 0x64, 0x29, 0x10 }, "JiangsuRuido", "Jiangsu Ruidong Electric Power Technology Co.,Ltd" }, { { 0x8C, 0x1F, 0x64, 0x29, 0x20 }, "GogoBusiness", "Gogo Business Aviation" }, @@ -54756,6 +55252,7 @@ { { 0x8C, 0x1F, 0x64, 0x2D, 0x50 }, "J&JPhilippin", "J&J Philippines Corporation" }, { { 0x8C, 0x1F, 0x64, 0x2D, 0x60 }, "Techtuit", "Techtuit Co.,Ltd." }, { { 0x8C, 0x1F, 0x64, 0x2D, 0x80 }, "CONTROL", "CONTROL SYSTEMS Srl" }, + { { 0x8C, 0x1F, 0x64, 0x2D, 0xA0 }, "ATAutomation", "AT-Automation Technology GmbH" }, { { 0x8C, 0x1F, 0x64, 0x2D, 0xC0 }, "TimeMachines", "TimeMachines Inc." }, { { 0x8C, 0x1F, 0x64, 0x2D, 0xD0 }, "FlextronicsI", "Flextronics International Kft" }, { { 0x8C, 0x1F, 0x64, 0x2D, 0xE0 }, "PolarBearDes", "Polar Bear Design" }, @@ -54786,12 +55283,14 @@ { { 0x8C, 0x1F, 0x64, 0x30, 0x40 }, "JemacSweden", "Jemac Sweden AB" }, { { 0x8C, 0x1F, 0x64, 0x30, 0x50 }, "VivoKeyTechn", "VivoKey Technologies Inc." }, { { 0x8C, 0x1F, 0x64, 0x30, 0x60 }, "Corigine", "Corigine,Inc." }, + { { 0x8C, 0x1F, 0x64, 0x30, 0x80 }, "EonInstrumen", "Eon Instrumentation" }, { { 0x8C, 0x1F, 0x64, 0x30, 0x90 }, "Mect", "Mect Srl" }, { { 0x8C, 0x1F, 0x64, 0x30, 0xA0 }, "XCOMLabs", "XCOM Labs" }, { { 0x8C, 0x1F, 0x64, 0x30, 0xC0 }, "NarnixEdge", "Narnix Edge Pvt. Ltd." }, { { 0x8C, 0x1F, 0x64, 0x30, 0xD0 }, "FlextronicsI", "Flextronics International Kft" }, { { 0x8C, 0x1F, 0x64, 0x30, 0xE0 }, "TangentDesig", "Tangent Design Engineering" }, { { 0x8C, 0x1F, 0x64, 0x30, 0xF0 }, "EastPhotonic", "East Photonics" }, + { { 0x8C, 0x1F, 0x64, 0x31, 0x00 }, "CrossBar", "CrossBar, Inc." }, { { 0x8C, 0x1F, 0x64, 0x31, 0x30 }, "SbGroup", "Sb-Group Ltd" }, { { 0x8C, 0x1F, 0x64, 0x31, 0x40 }, "Cedel", "Cedel BV" }, { { 0x8C, 0x1F, 0x64, 0x31, 0x60 }, "PotterElectr", "Potter Electric Signal Co. LLC" }, @@ -54802,6 +55301,7 @@ { { 0x8C, 0x1F, 0x64, 0x31, 0xC0 }, "Accumetrics", "Accumetrics" }, { { 0x8C, 0x1F, 0x64, 0x31, 0xD0 }, "TechMobility", "Tech Mobility Aps" }, { { 0x8C, 0x1F, 0x64, 0x31, 0xF0 }, "STVElectroni", "STV Electronic GmbH" }, + { { 0x8C, 0x1F, 0x64, 0x32, 0x00 }, "VITREASmartH", "VITREA Smart Home Technologies Ltd." }, { { 0x8C, 0x1F, 0x64, 0x32, 0x40 }, "KineticTechn", "Kinetic Technologies" }, { { 0x8C, 0x1F, 0x64, 0x32, 0x70 }, "DeutescherWe", "Deutescher Wetterdienst" }, { { 0x8C, 0x1F, 0x64, 0x32, 0x80 }, "ComVideoSecu", "Com Video Security Systems Co., Ltd." }, @@ -54836,6 +55336,7 @@ { { 0x8C, 0x1F, 0x64, 0x35, 0xC0 }, "OpgalOptroni", "Opgal Optronic Industries ltd" }, { { 0x8C, 0x1F, 0x64, 0x35, 0xD0 }, "Security&Bes", "Security&Best" }, { { 0x8C, 0x1F, 0x64, 0x35, 0xE0 }, "Test21Taiwan", "Test21 Taiwan Corp" }, + { { 0x8C, 0x1F, 0x64, 0x36, 0x00 }, "SPIEDürrAust", "SPIE Dürr Austria GmbH" }, { { 0x8C, 0x1F, 0x64, 0x36, 0x20 }, "PowerElectro", "Power Electronics Espana, S.L." }, { { 0x8C, 0x1F, 0x64, 0x36, 0x30 }, "Grossenbache", "Grossenbacher Systeme AG" }, { { 0x8C, 0x1F, 0x64, 0x36, 0x40 }, "TilakInterna", "Tilak International" }, @@ -54890,6 +55391,7 @@ { { 0x8C, 0x1F, 0x64, 0x3A, 0x20 }, "KronMedidore", "Kron Medidores" }, { { 0x8C, 0x1F, 0x64, 0x3A, 0x30 }, "Lumentum", "Lumentum" }, { { 0x8C, 0x1F, 0x64, 0x3A, 0x40 }, "QLMTechnolog", "QLM Technology Ltd" }, + { { 0x8C, 0x1F, 0x64, 0x3A, 0x50 }, "TechmoversIn", "Techmovers Systems India Limited" }, { { 0x8C, 0x1F, 0x64, 0x3A, 0xC0 }, "BenisonTech", "Benison Tech" }, { { 0x8C, 0x1F, 0x64, 0x3A, 0xD0 }, "TowerIQ", "TowerIQ" }, { { 0x8C, 0x1F, 0x64, 0x3A, 0xF0 }, "PSATechnolog", "PSA Technology Ltda." }, @@ -54927,6 +55429,7 @@ { { 0x8C, 0x1F, 0x64, 0x3D, 0xD0 }, "DorletSau", "Dorlet Sau" }, { { 0x8C, 0x1F, 0x64, 0x3D, 0xF0 }, "LimeSoft", "LimeSoft Co., Ltd." }, { { 0x8C, 0x1F, 0x64, 0x3E, 0x00 }, "YPP", "YPP Corporation" }, + { { 0x8C, 0x1F, 0x64, 0x3E, 0x10 }, "CRUXELL", "CRUXELL Corp." }, { { 0x8C, 0x1F, 0x64, 0x3E, 0x20 }, "Agrico", "Agrico" }, { { 0x8C, 0x1F, 0x64, 0x3E, 0x30 }, "FMTecFutureM", "FMTec GmbH - Future Management Technologies" }, { { 0x8C, 0x1F, 0x64, 0x3E, 0x50 }, "SystemsMecha", "Systems Mechanics" }, @@ -54940,6 +55443,7 @@ { { 0x8C, 0x1F, 0x64, 0x3F, 0x20 }, "SuryaElectro", "Surya Electronics" }, { { 0x8C, 0x1F, 0x64, 0x3F, 0x30 }, "CambrianWork", "Cambrian Works, Inc." }, { { 0x8C, 0x1F, 0x64, 0x3F, 0x40 }, "ActelserSL", "Actelser S.L." }, + { { 0x8C, 0x1F, 0x64, 0x3F, 0x50 }, "WuxiEutronEl", "Wuxi Eutron Electronics Technology Co.,Ltd" }, { { 0x8C, 0x1F, 0x64, 0x3F, 0x60 }, "AntaraTechno", "Antara Technologies" }, { { 0x8C, 0x1F, 0x64, 0x3F, 0x70 }, "MitsubishiEl", "Mitsubishi Electric India Pvt. Ltd." }, { { 0x8C, 0x1F, 0x64, 0x3F, 0x90 }, "YuYanSystemT", "Yu Yan System Technology Co., Ltd." }, @@ -54974,8 +55478,10 @@ { { 0x8C, 0x1F, 0x64, 0x42, 0xB0 }, "GamberJohnso", "Gamber Johnson-LLC" }, { { 0x8C, 0x1F, 0x64, 0x42, 0xD0 }, "JemacSweden", "Jemac Sweden AB" }, { { 0x8C, 0x1F, 0x64, 0x42, 0xF0 }, "TomorrowComp", "Tomorrow Companies Inc" }, + { { 0x8C, 0x1F, 0x64, 0x43, 0x10 }, "Pneumax", "Pneumax Spa" }, { { 0x8C, 0x1F, 0x64, 0x43, 0x20 }, "Rebel", "Rebel Systems" }, { { 0x8C, 0x1F, 0x64, 0x43, 0x40 }, "netmon", "netmon" }, + { { 0x8C, 0x1F, 0x64, 0x43, 0x60 }, "VisionSafety", "Vision Systems Safety Tech" }, { { 0x8C, 0x1F, 0x64, 0x43, 0x70 }, "GogoBA", "Gogo BA" }, { { 0x8C, 0x1F, 0x64, 0x43, 0x80 }, "Integerpl", "Integer.pl S.A." }, { { 0x8C, 0x1F, 0x64, 0x43, 0x90 }, "Bornico", "Bornico" }, @@ -55011,8 +55517,10 @@ { { 0x8C, 0x1F, 0x64, 0x46, 0x50 }, "IxorigueTech", "Ixorigue Technologies Sl" }, { { 0x8C, 0x1F, 0x64, 0x46, 0x60 }, "IntamsysTech", "Intamsys Technology Co.Ltd" }, { { 0x8C, 0x1F, 0x64, 0x46, 0xA0 }, "Pharsighted", "Pharsighted LLC" }, + { { 0x8C, 0x1F, 0x64, 0x46, 0xB0 }, "PersolExcelH", "Persol Excel Hr Partners Co., Ltd." }, { { 0x8C, 0x1F, 0x64, 0x46, 0xD0 }, "MBconnectlin", "MB connect line GmbH" }, { { 0x8C, 0x1F, 0x64, 0x47, 0x00 }, "CanfieldScie", "Canfield Scientific Inc" }, + { { 0x8C, 0x1F, 0x64, 0x47, 0x10 }, "Apantac", "Apantac LLC" }, { { 0x8C, 0x1F, 0x64, 0x47, 0x20 }, "SurgeNetwork", "Surge Networks, Inc." }, { { 0x8C, 0x1F, 0x64, 0x47, 0x30 }, "Plumsp", "Plum sp. z.o.o." }, { { 0x8C, 0x1F, 0x64, 0x47, 0x40 }, "Audiobyte", "Audiobyte S.R.L." }, @@ -55104,6 +55612,7 @@ { { 0x8C, 0x1F, 0x64, 0x4F, 0x90 }, "PhotonicScie", "Photonic Science and Engineering Ltd" }, { { 0x8C, 0x1F, 0x64, 0x4F, 0xA0 }, "Sanskruti", "Sanskruti" }, { { 0x8C, 0x1F, 0x64, 0x4F, 0xB0 }, "MesaTechnolo", "Mesa Technologies Llc" }, + { { 0x8C, 0x1F, 0x64, 0x4F, 0xC0 }, "Qubix", "Qubix Spa" }, { { 0x8C, 0x1F, 0x64, 0x50, 0x00 }, "NepeanNetwor", "Nepean Networks Pty Ltd" }, { { 0x8C, 0x1F, 0x64, 0x50, 0x10 }, "QUISS", "QUISS GmbH" }, { { 0x8C, 0x1F, 0x64, 0x50, 0x20 }, "SamwellInter", "Samwell International Inc" }, @@ -55129,7 +55638,9 @@ { { 0x8C, 0x1F, 0x64, 0x51, 0x80 }, "WagnerGroup", "Wagner Group GmbH" }, { { 0x8C, 0x1F, 0x64, 0x51, 0x90 }, "GwTechnology", "Shenzhen Gw Technology Co.,Ltd" }, { { 0x8C, 0x1F, 0x64, 0x51, 0xA0 }, "TELEHaaseSte", "TELE Haase Steuergeräte Ges.m.b.H" }, + { { 0x8C, 0x1F, 0x64, 0x51, 0xC0 }, "JSTech", "JS Tech Co., Ltd." }, { { 0x8C, 0x1F, 0x64, 0x52, 0x10 }, "MPSENSOR", "MP-SENSOR GmbH" }, + { { 0x8C, 0x1F, 0x64, 0x52, 0x20 }, "CloudRANai", "CloudRAN.ai" }, { { 0x8C, 0x1F, 0x64, 0x52, 0x30 }, "SPEKTRASchwi", "SPEKTRA Schwingungstechnik und Akustik GmbH Dresden" }, { { 0x8C, 0x1F, 0x64, 0x52, 0x40 }, "AskiIndustri", "Aski Industrie Elektronik GmbH" }, { { 0x8C, 0x1F, 0x64, 0x52, 0x50 }, "UnitedStates", "United States Technologies Inc." }, @@ -55189,16 +55700,19 @@ { { 0x8C, 0x1F, 0x64, 0x57, 0x80 }, "OES", "OES Inc." }, { { 0x8C, 0x1F, 0x64, 0x57, 0xA0 }, "NPOECOINTECH", "NPO ECO-INTECH Ltd." }, { { 0x8C, 0x1F, 0x64, 0x57, 0xB0 }, "PotterElectr", "Potter Electric Signal Co. LLC" }, + { { 0x8C, 0x1F, 0x64, 0x57, 0xC0 }, "EAElektroAut", "EA Elektro-Automatik GmbH" }, { { 0x8C, 0x1F, 0x64, 0x57, 0xD0 }, "ISDI", "ISDI Ltd" }, { { 0x8C, 0x1F, 0x64, 0x57, 0xE0 }, "GuoqingInfor", "Guoqing (shangdong) Information Technology Co.,Ltd" }, { { 0x8C, 0x1F, 0x64, 0x58, 0x00 }, "SAKURASEIKI", "SAKURA SEIKI Co., Ltd." }, { { 0x8C, 0x1F, 0x64, 0x58, 0x10 }, "SpectraDynam", "SpectraDynamics, Inc." }, { { 0x8C, 0x1F, 0x64, 0x58, 0x30 }, "3Egreentech", "3Egreen tech. Co. Ltd." }, + { { 0x8C, 0x1F, 0x64, 0x58, 0x40 }, "Corespan", "Corespan Systems" }, { { 0x8C, 0x1F, 0x64, 0x58, 0x50 }, "DIDONIndustr", "Shanghai DIDON Industry Co,. Ltd." }, { { 0x8C, 0x1F, 0x64, 0x58, 0x90 }, "Hvrnd", "Hvrnd" }, { { 0x8C, 0x1F, 0x64, 0x58, 0xB0 }, "QuectelWirel", "Quectel Wireless Solutions Co.,Ltd." }, { { 0x8C, 0x1F, 0x64, 0x58, 0xC0 }, "EarMicro", "Ear Micro LLC" }, { { 0x8C, 0x1F, 0x64, 0x58, 0xE0 }, "NovantaIMS", "Novanta IMS" }, + { { 0x8C, 0x1F, 0x64, 0x59, 0x00 }, "TeledyneScie", "Teledyne Scientific and Imaging" }, { { 0x8C, 0x1F, 0x64, 0x59, 0x10 }, "MBconnectlin", "MB connect line GmbH Fernwartungssysteme" }, { { 0x8C, 0x1F, 0x64, 0x59, 0x30 }, "BrillianNetw", "Brillian Network & Automation Integrated System Co., Ltd." }, { { 0x8C, 0x1F, 0x64, 0x59, 0x50 }, "InspiniaTech", "Inspinia Technology s.r.o." }, @@ -55211,12 +55725,14 @@ { { 0x8C, 0x1F, 0x64, 0x59, 0xF0 }, "DeltaCompute", "Delta Computers LLC." }, { { 0x8C, 0x1F, 0x64, 0x5A, 0x00 }, "SeongwonEng", "Seongwon Eng Co.,Ltd" }, { { 0x8C, 0x1F, 0x64, 0x5A, 0x10 }, "BreasMedical", "Breas Medical AB" }, + { { 0x8C, 0x1F, 0x64, 0x5A, 0x20 }, "CMI", "CMI, Inc." }, { { 0x8C, 0x1F, 0x64, 0x5A, 0x40 }, "Dave", "Dave Srl" }, { { 0x8C, 0x1F, 0x64, 0x5A, 0x60 }, "KinneyIndust", "Kinney Industries, Inc" }, { { 0x8C, 0x1F, 0x64, 0x5A, 0x70 }, "Rch", "Rch Spa" }, { { 0x8C, 0x1F, 0x64, 0x5A, 0x90 }, "AktiebolagSo", "Aktiebolag Solask Energi" }, { { 0x8C, 0x1F, 0x64, 0x5A, 0xA0 }, "LandisGyrEqu", "Landis+Gyr Equipamentos de Medição Ltda" }, { { 0x8C, 0x1F, 0x64, 0x5A, 0xC0 }, "YUYAMAMFG", "YUYAMA MFG Co.,Ltd" }, + { { 0x8C, 0x1F, 0x64, 0x5A, 0xD0 }, "TAKAHATAPREC", "TAKAHATA PRECISION Co., LTD." }, { { 0x8C, 0x1F, 0x64, 0x5A, 0xE0 }, "SuzhouMotorc", "Suzhou Motorcomm Electronic Technology Co., Ltd" }, { { 0x8C, 0x1F, 0x64, 0x5A, 0xF0 }, "TeqDiligentP", "Teq Diligent Product Solutions Pvt. Ltd." }, { { 0x8C, 0x1F, 0x64, 0x5B, 0x00 }, "Sonel", "Sonel S.A." }, @@ -55264,6 +55780,7 @@ { { 0x8C, 0x1F, 0x64, 0x5E, 0xD0 }, "DEUTAWerke", "DEUTA Werke GmbH" }, { { 0x8C, 0x1F, 0x64, 0x5F, 0x10 }, "HDLink", "HD Link Co., Ltd." }, { { 0x8C, 0x1F, 0x64, 0x5F, 0x20 }, "CMCAppliedTe", "CMC Applied Technology institute" }, + { { 0x8C, 0x1F, 0x64, 0x5F, 0x40 }, "JiangsuYiRon", "Jiangsu Yi Rong Mstar Technology Ltd." }, { { 0x8C, 0x1F, 0x64, 0x5F, 0x50 }, "HongSeok", "HongSeok Ltd." }, { { 0x8C, 0x1F, 0x64, 0x5F, 0x60 }, "ForwardEdgeA", "Forward Edge.AI" }, { { 0x8C, 0x1F, 0x64, 0x5F, 0x70 }, "EagleHarborT", "Eagle Harbor Technologies, Inc." }, @@ -55271,6 +55788,7 @@ { { 0x8C, 0x1F, 0x64, 0x5F, 0xA0 }, "PolCamSp", "PolCam Systems Sp. z o.o." }, { { 0x8C, 0x1F, 0x64, 0x5F, 0xB0 }, "Recom", "Recom Llc." }, { { 0x8C, 0x1F, 0x64, 0x5F, 0xC0 }, "LanceDesign", "Lance Design LLC" }, + { { 0x8C, 0x1F, 0x64, 0x5F, 0xE0 }, "Pneumax", "Pneumax Spa" }, { { 0x8C, 0x1F, 0x64, 0x5F, 0xF0 }, "Dave", "Dave Srl" }, { { 0x8C, 0x1F, 0x64, 0x60, 0x00 }, "AnhuiChaokun", "Anhui Chaokun Testing Equipment Co., Ltd" }, { { 0x8C, 0x1F, 0x64, 0x60, 0x10 }, "Camius", "Camius" }, @@ -55313,10 +55831,12 @@ { { 0x8C, 0x1F, 0x64, 0x63, 0xD0 }, "RaxTechInter", "Rax-Tech International" }, { { 0x8C, 0x1F, 0x64, 0x63, 0xE0 }, "Monnit", "Monnit Corporation" }, { { 0x8C, 0x1F, 0x64, 0x63, 0xF0 }, "PreoIndustri", "Preo Industries Far East Ltd" }, + { { 0x8C, 0x1F, 0x64, 0x64, 0x00 }, "TransportsPu", "Transports Publics Genevois" }, { { 0x8C, 0x1F, 0x64, 0x64, 0x10 }, "biosilver", "biosilver.co.,ltd" }, { { 0x8C, 0x1F, 0x64, 0x64, 0x40 }, "Dave", "Dave Srl" }, { { 0x8C, 0x1F, 0x64, 0x64, 0x70 }, "SeniorGroup", "Senior Group LLC" }, { { 0x8C, 0x1F, 0x64, 0x64, 0x80 }, "Gridpulsecoo", "Gridpulse c.o.o." }, + { { 0x8C, 0x1F, 0x64, 0x64, 0xC0 }, "ACSMotionCon", "ACS Motion Control" }, { { 0x8C, 0x1F, 0x64, 0x64, 0xD0 }, "Newone", "Newone Co.,Ltd." }, { { 0x8C, 0x1F, 0x64, 0x64, 0xE0 }, "NilfiskFood", "Nilfisk Food" }, { { 0x8C, 0x1F, 0x64, 0x64, 0xF0 }, "InvixiumAcce", "Invixium Access Inc" }, @@ -55337,6 +55857,7 @@ { { 0x8C, 0x1F, 0x64, 0x66, 0x20 }, "SuzhouLeamor", "Suzhou Leamore Optronics Co., Ltd." }, { { 0x8C, 0x1F, 0x64, 0x66, 0x30 }, "maltechTechn", "mal-tech Technological Solutions Ltd/CRISP" }, { { 0x8C, 0x1F, 0x64, 0x66, 0x40 }, "Thermoeye", "Thermoeye Inc" }, + { { 0x8C, 0x1F, 0x64, 0x66, 0x80 }, "JohnsonandJo", "Johnson and Johnson Medtech" }, { { 0x8C, 0x1F, 0x64, 0x66, 0xB0 }, "CurruxVision", "Currux Vision LLC" }, { { 0x8C, 0x1F, 0x64, 0x66, 0xC0 }, "LineagePower", "Lineage Power Pvt Ltd.," }, { { 0x8C, 0x1F, 0x64, 0x66, 0xD0 }, "Vt100", "Vt100 Srl" }, @@ -55432,6 +55953,7 @@ { { 0x8C, 0x1F, 0x64, 0x6E, 0xC0 }, "BitTradeOne", "Bit Trade One, Ltd." }, { { 0x8C, 0x1F, 0x64, 0x6E, 0xD0 }, "ElbitAmerica", "Elbit Systems of America" }, { { 0x8C, 0x1F, 0x64, 0x6E, 0xE0 }, "CorticalLabs", "Cortical Labs Pte Ltd" }, + { { 0x8C, 0x1F, 0x64, 0x6F, 0x00 }, "RightTimeSpo", "Right Time Sports LLC" }, { { 0x8C, 0x1F, 0x64, 0x6F, 0x40 }, "Elsist", "Elsist Srl" }, { { 0x8C, 0x1F, 0x64, 0x6F, 0x70 }, "EddyWorks", "EddyWorks Co.,Ltd" }, { { 0x8C, 0x1F, 0x64, 0x6F, 0x80 }, "ProikerTechn", "Proiker Technology Sl" }, @@ -55558,6 +56080,7 @@ { { 0x8C, 0x1F, 0x64, 0x7A, 0xF0 }, "EVisionIndia", "E Vision India Pvt Ltd" }, { { 0x8C, 0x1F, 0x64, 0x7B, 0x00 }, "AxidSystem", "Axid System" }, { { 0x8C, 0x1F, 0x64, 0x7B, 0x10 }, "EAElektroAut", "EA Elektro-Automatik GmbH" }, + { { 0x8C, 0x1F, 0x64, 0x7B, 0x20 }, "Neosem", "Neosem Inc." }, { { 0x8C, 0x1F, 0x64, 0x7B, 0x50 }, "GuanShowTech", "Guan Show Technologe Co., Ltd." }, { { 0x8C, 0x1F, 0x64, 0x7B, 0x60 }, "Keyline", "Keyline S.P.A." }, { { 0x8C, 0x1F, 0x64, 0x7B, 0x70 }, "JamesGBiddle", "James G. Biddle dba Megger" }, @@ -55596,6 +56119,7 @@ { { 0x8C, 0x1F, 0x64, 0x7E, 0x30 }, "Une", "Une Srl" }, { { 0x8C, 0x1F, 0x64, 0x7E, 0x70 }, "robertjuliat", "robert juliat" }, { { 0x8C, 0x1F, 0x64, 0x7E, 0x80 }, "EAElektroAut", "EA Elektro-Automatik GmbH" }, + { { 0x8C, 0x1F, 0x64, 0x7E, 0xA0 }, "AbbottDiagno", "Abbott Diagnostics Technologies AS" }, { { 0x8C, 0x1F, 0x64, 0x7E, 0xC0 }, "Methods2Busi", "Methods2Business B.V." }, { { 0x8C, 0x1F, 0x64, 0x7E, 0xD0 }, "EdingCNC", "Eding CNC bv" }, { { 0x8C, 0x1F, 0x64, 0x7E, 0xE0 }, "OrangePrecis", "Orange Precision Measurement LLC" }, @@ -55615,6 +56139,7 @@ { { 0x8C, 0x1F, 0x64, 0x80, 0x20 }, "DaiichiElect", "Daiichi Electric Industry Co., Ltd" }, { { 0x8C, 0x1F, 0x64, 0x80, 0x30 }, "MOSCAElektro", "MOSCA Elektronik und Antriebstechnik GmbH" }, { { 0x8C, 0x1F, 0x64, 0x80, 0x40 }, "EAElektroAut", "EA Elektro-Automatik GmbH" }, + { { 0x8C, 0x1F, 0x64, 0x80, 0x50 }, "ATALsro", "ATAL s.r.o." }, { { 0x8C, 0x1F, 0x64, 0x80, 0x60 }, "Matrixspace", "Matrixspace" }, { { 0x8C, 0x1F, 0x64, 0x80, 0x70 }, "GiordanoCont", "Giordano Controls Spa" }, { { 0x8C, 0x1F, 0x64, 0x80, 0xC0 }, "ThermifyHold", "Thermify Holdings Ltd" }, @@ -55705,6 +56230,7 @@ { { 0x8C, 0x1F, 0x64, 0x89, 0x00 }, "WonATech", "WonATech Co., Ltd." }, { { 0x8C, 0x1F, 0x64, 0x89, 0x10 }, "Brocereelect", "Brocere electronics corp. ltd." }, { { 0x8C, 0x1F, 0x64, 0x89, 0x20 }, "MDIIndustria", "MDI Industrial" }, + { { 0x8C, 0x1F, 0x64, 0x89, 0x30 }, "PortraitDisp", "Portrait Displays, Inc." }, { { 0x8C, 0x1F, 0x64, 0x89, 0x50 }, "DacomWest", "Dacom West GmbH" }, { { 0x8C, 0x1F, 0x64, 0x89, 0x80 }, "CopperConnec", "Copper Connections Ltd" }, { { 0x8C, 0x1F, 0x64, 0x89, 0x90 }, "AmericanEdge", "American Edge IP" }, @@ -55722,6 +56248,7 @@ { { 0x8C, 0x1F, 0x64, 0x8B, 0x10 }, "Viewpixel", "Viewpixel Pvt. Ltd." }, { { 0x8C, 0x1F, 0x64, 0x8B, 0x20 }, "AbbottDiagno", "Abbott Diagnostics Technologies AS" }, { { 0x8C, 0x1F, 0x64, 0x8B, 0x30 }, "HubbellPower", "Hubbell Power Systems" }, + { { 0x8C, 0x1F, 0x64, 0x8B, 0x40 }, "MYIRElectron", "MYIR Electronics Limited" }, { { 0x8C, 0x1F, 0x64, 0x8B, 0x50 }, "AshtonBentle", "Ashton Bentley Collaboration Spaces" }, { { 0x8C, 0x1F, 0x64, 0x8B, 0x60 }, "AXISSp", "AXIS Sp z o.o." }, { { 0x8C, 0x1F, 0x64, 0x8B, 0x70 }, "DADesign", "DA-Design Oy" }, @@ -55733,6 +56260,7 @@ { { 0x8C, 0x1F, 0x64, 0x8C, 0x40 }, "HermesNetwor", "Hermes Network Inc" }, { { 0x8C, 0x1F, 0x64, 0x8C, 0x50 }, "NextTMicrowa", "NextT Microwave Inc" }, { { 0x8C, 0x1F, 0x64, 0x8C, 0x80 }, "PotterElectr", "Potter Electric Signal Co. LLC" }, + { { 0x8C, 0x1F, 0x64, 0x8C, 0x90 }, "RoboCoreTecn", "RoboCore Tecnologia" }, { { 0x8C, 0x1F, 0x64, 0x8C, 0xA0 }, "YUYAMAMFG", "YUYAMA MFG Co.,Ltd" }, { { 0x8C, 0x1F, 0x64, 0x8C, 0xB0 }, "Chromaviso", "Chromaviso A/S" }, { { 0x8C, 0x1F, 0x64, 0x8C, 0xD0 }, "GuanShowTech", "Guan Show Technologe Co., Ltd." }, @@ -55762,6 +56290,7 @@ { { 0x8C, 0x1F, 0x64, 0x8E, 0xD0 }, "QMTechnologi", "QM Technologies aps" }, { { 0x8C, 0x1F, 0x64, 0x8E, 0xE0 }, "AbbottDiagno", "Abbott Diagnostics Technologies AS" }, { { 0x8C, 0x1F, 0x64, 0x8F, 0x00 }, "Igl", "Igl" }, + { { 0x8C, 0x1F, 0x64, 0x8F, 0x30 }, "EverBotTechn", "EverBot Technology CO., LTD" }, { { 0x8C, 0x1F, 0x64, 0x8F, 0x40 }, "Loadrite", "Loadrite (Auckland) Limited" }, { { 0x8C, 0x1F, 0x64, 0x8F, 0x50 }, "Dave", "Dave Srl" }, { { 0x8C, 0x1F, 0x64, 0x8F, 0x60 }, "IdneoTechnol", "Idneo Technologies S.A.U." }, @@ -55843,6 +56372,7 @@ { { 0x8C, 0x1F, 0x64, 0x97, 0x10 }, "InfrasafeAdv", "Infrasafe/ Advantor Systems" }, { { 0x8C, 0x1F, 0x64, 0x97, 0x20 }, "Federant", "Federant LLC" }, { { 0x8C, 0x1F, 0x64, 0x97, 0x30 }, "DorsettTechn", "Dorsett Technologies Inc" }, + { { 0x8C, 0x1F, 0x64, 0x97, 0x60 }, "JESElectroni", "JES Electronic Systems Private Limited" }, { { 0x8C, 0x1F, 0x64, 0x97, 0x80 }, "PlanetInnova", "Planet Innovation Products Inc." }, { { 0x8C, 0x1F, 0x64, 0x97, 0x90 }, "ArktisRadiat", "Arktis Radiation Detectors" }, { { 0x8C, 0x1F, 0x64, 0x97, 0xC0 }, "MBconnectlin", "MB connect line GmbH Fernwartungssysteme" }, @@ -55867,6 +56397,7 @@ { { 0x8C, 0x1F, 0x64, 0x99, 0xB0 }, "Grossenbache", "Grossenbacher Systeme AG" }, { { 0x8C, 0x1F, 0x64, 0x99, 0xC0 }, "i2A", "i2A Systems Co., Ltd." }, { { 0x8C, 0x1F, 0x64, 0x99, 0xE0 }, "EIDOS", "EIDOS s.r.l." }, + { { 0x8C, 0x1F, 0x64, 0x9A, 0x00 }, "NEOXNetworks", "NEOX Networks" }, { { 0x8C, 0x1F, 0x64, 0x9A, 0x10 }, "PacificSoftw", "Pacific Software Development Co., Ltd." }, { { 0x8C, 0x1F, 0x64, 0x9A, 0x20 }, "LadyBugTechn", "LadyBug Technologies, LLC" }, { { 0x8C, 0x1F, 0x64, 0x9A, 0x30 }, "Fortus", "Fortus" }, @@ -55951,6 +56482,7 @@ { { 0x8C, 0x1F, 0x64, 0xA1, 0xD0 }, "MYIRElectron", "MYIR Electronics Limited" }, { { 0x8C, 0x1F, 0x64, 0xA1, 0xF0 }, "HitachiEnerg", "Hitachi Energy India Limited" }, { { 0x8C, 0x1F, 0x64, 0xA2, 0x00 }, "Intenseye", "Intenseye Inc." }, + { { 0x8C, 0x1F, 0x64, 0xA2, 0x50 }, "PotterElectr", "Potter Electric Signal Company" }, { { 0x8C, 0x1F, 0x64, 0xA2, 0x60 }, "Automatic", "Automatic Pty Ltd" }, { { 0x8C, 0x1F, 0x64, 0xA2, 0x70 }, "NapinoContin", "Napino Continental Vehicle Elctronics Private Limited" }, { { 0x8C, 0x1F, 0x64, 0xA2, 0x80 }, "Monnit", "Monnit Corporation" }, @@ -55972,6 +56504,7 @@ { { 0x8C, 0x1F, 0x64, 0xA3, 0xC0 }, "TalleresdeEs", "Talleres de Escoriaza SAU" }, { { 0x8C, 0x1F, 0x64, 0xA3, 0xE0 }, "HiwinMikrosy", "Hiwin Mikrosystem Corp." }, { { 0x8C, 0x1F, 0x64, 0xA3, 0xF0 }, "ViewSonic", "ViewSonic Corp" }, + { { 0x8C, 0x1F, 0x64, 0xA4, 0x10 }, "GuanShowTech", "Guan Show Technologe Co., Ltd." }, { { 0x8C, 0x1F, 0x64, 0xA4, 0x20 }, "RodgersInstr", "Rodgers Instruments US LLC" }, { { 0x8C, 0x1F, 0x64, 0xA4, 0x40 }, "Rapidev", "Rapidev Pvt Ltd" }, { { 0x8C, 0x1F, 0x64, 0xA4, 0x50 }, "UMeiDahIntLE", "U -Mei-Dah Int'L Enterprise Co.,Ltd." }, @@ -56029,6 +56562,7 @@ { { 0x8C, 0x1F, 0x64, 0xA9, 0xC0 }, "UpstartPower", "Upstart Power" }, { { 0x8C, 0x1F, 0x64, 0xA9, 0xD0 }, "AegexTechnol", "Aegex Technologies LLC Magyarországi Fióktelepe" }, { { 0x8C, 0x1F, 0x64, 0xA9, 0xE0 }, "OptimumInstr", "Optimum Instruments Inc." }, + { { 0x8C, 0x1F, 0x64, 0xA9, 0xF0 }, "DadhwalAiPri", "Dadhwal Ai Private Limited" }, { { 0x8C, 0x1F, 0x64, 0xAA, 0x00 }, "FlextronicsI", "Flextronics International Kft" }, { { 0x8C, 0x1F, 0x64, 0xAA, 0x10 }, "TechFasssro", "Tech Fass s.r.o." }, { { 0x8C, 0x1F, 0x64, 0xAA, 0x30 }, "PeterHuberKa", "Peter Huber Kaeltemaschinenbau SE" }, @@ -56053,12 +56587,15 @@ { { 0x8C, 0x1F, 0x64, 0xAC, 0x30 }, "WavesSystem", "Waves System" }, { { 0x8C, 0x1F, 0x64, 0xAC, 0x40 }, "comelec", "comelec" }, { { 0x8C, 0x1F, 0x64, 0xAC, 0x50 }, "ForeverEngin", "Forever Engineering Systems Pvt. Ltd." }, + { { 0x8C, 0x1F, 0x64, 0xAC, 0x60 }, "StartsFacili", "Starts Facility Service Co.,Ltd" }, { { 0x8C, 0x1F, 0x64, 0xAC, 0x80 }, "Teledatics", "Teledatics Incorporated" }, { { 0x8C, 0x1F, 0x64, 0xAC, 0x90 }, "ShenYangLeSh", "ShenYang LeShun Technology Co.,Ltd" }, { { 0x8C, 0x1F, 0x64, 0xAC, 0xB0 }, "Villari", "Villari B.V." }, { { 0x8C, 0x1F, 0x64, 0xAC, 0xD0 }, "EscapeVeloci", "Escape Velocity Technologies" }, { { 0x8C, 0x1F, 0x64, 0xAC, 0xE0 }, "RayhaanNetwo", "Rayhaan Networks" }, + { { 0x8C, 0x1F, 0x64, 0xAC, 0xF0 }, "Provenrun", "Provenrun" }, { { 0x8C, 0x1F, 0x64, 0xAD, 0x00 }, "Elektrotechn", "Elektrotechnik & Elektronik Oltmann GmbH" }, + { { 0x8C, 0x1F, 0x64, 0xAD, 0x10 }, "HattelandTec", "Hatteland Technology AS" }, { { 0x8C, 0x1F, 0x64, 0xAD, 0x20 }, "YUYAMAMFG", "YUYAMA MFG Co.,Ltd" }, { { 0x8C, 0x1F, 0x64, 0xAD, 0x30 }, "WorkingSetSo", "Working Set Software Solutions" }, { { 0x8C, 0x1F, 0x64, 0xAD, 0x40 }, "FlextronicsI", "Flextronics International Kft" }, @@ -56066,6 +56603,7 @@ { { 0x8C, 0x1F, 0x64, 0xAD, 0x70 }, "Monnit", "Monnit Corporation" }, { { 0x8C, 0x1F, 0x64, 0xAD, 0x80 }, "NovantaIMS", "Novanta IMS" }, { { 0x8C, 0x1F, 0x64, 0xAD, 0x90 }, "VisionSafety", "Vision Systems Safety Tech" }, + { { 0x8C, 0x1F, 0x64, 0xAD, 0xA0 }, "AbilityIntel", "Ability Intelligent Corp." }, { { 0x8C, 0x1F, 0x64, 0xAD, 0xB0 }, "HebeiWeijiEl", "Hebei Weiji Electric Co.,Ltd" }, { { 0x8C, 0x1F, 0x64, 0xAD, 0xC0 }, "MotorProtect", "Motor Protection Electronics" }, { { 0x8C, 0x1F, 0x64, 0xAE, 0x10 }, "YUYAMAMFG", "YUYAMA MFG Co.,Ltd" }, @@ -56198,6 +56736,7 @@ { { 0x8C, 0x1F, 0x64, 0xBA, 0x20 }, "BESOsp", "BESO sp. z o.o." }, { { 0x8C, 0x1F, 0x64, 0xBA, 0x30 }, "DEUTAWERKE", "DEUTA-WERKE GmbH" }, { { 0x8C, 0x1F, 0x64, 0xBA, 0x40 }, "BuckeyeMount", "Buckeye Mountain" }, + { { 0x8C, 0x1F, 0x64, 0xBA, 0x50 }, "CampusGenevo", "Campus Genevois de Haute Horlogerie" }, { { 0x8C, 0x1F, 0x64, 0xBA, 0x60 }, "FMCTechnolog", "FMC Technologies Measurement Solutions Inc" }, { { 0x8C, 0x1F, 0x64, 0xBA, 0x70 }, "iLensysTechn", "iLensys Technologies PVT LTD" }, { { 0x8C, 0x1F, 0x64, 0xBA, 0x80 }, "AvMapsrlu", "AvMap srlu" }, @@ -56217,6 +56756,7 @@ { { 0x8C, 0x1F, 0x64, 0xBB, 0x80 }, "ezDOOR", "ezDOOR, LLC" }, { { 0x8C, 0x1F, 0x64, 0xBB, 0x90 }, "SmartDTechno", "SmartD Technologies Inc" }, { { 0x8C, 0x1F, 0x64, 0xBB, 0xA0 }, "elysia", "elysia GmbH" }, + { { 0x8C, 0x1F, 0x64, 0xBB, 0xB0 }, "SiLCTechnolo", "SiLC Technologies" }, { { 0x8C, 0x1F, 0x64, 0xBB, 0xC0 }, "Liberator", "Liberator Pty Ltd" }, { { 0x8C, 0x1F, 0x64, 0xBB, 0xE0 }, "AirScandbaHe", "AirScan, Inc. dba HemaTechnologies" }, { { 0x8C, 0x1F, 0x64, 0xBB, 0xF0 }, "Retency", "Retency" }, @@ -56225,6 +56765,7 @@ { { 0x8C, 0x1F, 0x64, 0xBC, 0x20 }, "HuzElectroni", "Huz Electronics Ltd" }, { { 0x8C, 0x1F, 0x64, 0xBC, 0x30 }, "FoxIoT", "FoxIoT OÜ" }, { { 0x8C, 0x1F, 0x64, 0xBC, 0x40 }, "EasyNetIndus", "EasyNet Industry (Shenzhen) Co., Ltd" }, + { { 0x8C, 0x1F, 0x64, 0xBC, 0x50 }, "DorletSau", "Dorlet Sau" }, { { 0x8C, 0x1F, 0x64, 0xBC, 0x60 }, "ZiChenTime&F", "Chengdu ZiChen Time&Frequency Technology Co.,Ltd" }, { { 0x8C, 0x1F, 0x64, 0xBC, 0x70 }, "UGUARDNETWOR", "UGUARD NETWORKS TECHNOLOGY Co.,LTD" }, { { 0x8C, 0x1F, 0x64, 0xBC, 0x90 }, "GlTech", "Gl Tech Co.,Ltd" }, @@ -56233,9 +56774,11 @@ { { 0x8C, 0x1F, 0x64, 0xBC, 0xC0 }, "SoundHealth", "Sound Health Systems" }, { { 0x8C, 0x1F, 0x64, 0xBC, 0xD0 }, "ALSE", "A.L.S.E." }, { { 0x8C, 0x1F, 0x64, 0xBC, 0xE0 }, "BESOsp", "BESO sp. z o.o." }, + { { 0x8C, 0x1F, 0x64, 0xBC, 0xF0 }, "ErbaLachemas", "Erba Lachema s.r.o." }, { { 0x8C, 0x1F, 0x64, 0xBD, 0x00 }, "MesaLabs", "Mesa Labs, Inc." }, { { 0x8C, 0x1F, 0x64, 0xBD, 0x20 }, "attocube", "attocube systems AG" }, { { 0x8C, 0x1F, 0x64, 0xBD, 0x30 }, "IOMasterTech", "IO Master Technology" }, + { { 0x8C, 0x1F, 0x64, 0xBD, 0x40 }, "AVEAGroup", "AVEA Group, Inc." }, { { 0x8C, 0x1F, 0x64, 0xBD, 0x50 }, "ProCustomGro", "Pro-Custom Group" }, { { 0x8C, 0x1F, 0x64, 0xBD, 0x60 }, "NOVAProducts", "NOVA Products GmbH" }, { { 0x8C, 0x1F, 0x64, 0xBD, 0x70 }, "UnionElectro", "Union Electronic." }, @@ -56247,6 +56790,7 @@ { { 0x8C, 0x1F, 0x64, 0xBE, 0x50 }, "Blackline", "Blackline Systems Corp." }, { { 0x8C, 0x1F, 0x64, 0xBE, 0x80 }, "Technologies", "Technologies Bacmove Inc." }, { { 0x8C, 0x1F, 0x64, 0xBE, 0xA0 }, "MicrochipTec", "Microchip Technologies Inc" }, + { { 0x8C, 0x1F, 0x64, 0xBE, 0xB0 }, "aelettronica", "aelettronica group srl" }, { { 0x8C, 0x1F, 0x64, 0xBE, 0xD0 }, "GeniusSports", "Genius Sports SS LLC" }, { { 0x8C, 0x1F, 0x64, 0xBE, 0xE0 }, "Sirius", "Sirius LLC" }, { { 0x8C, 0x1F, 0x64, 0xBE, 0xF0 }, "TriumphSEC", "Triumph SEC" }, @@ -56311,6 +56855,7 @@ { { 0x8C, 0x1F, 0x64, 0xC4, 0x40 }, "SyprisElectr", "Sypris Electronics" }, { { 0x8C, 0x1F, 0x64, 0xC4, 0x50 }, "FlextroincsI", "Flextroincs International (Taiwain Ltd" }, { { 0x8C, 0x1F, 0x64, 0xC4, 0x60 }, "InexTechnolo", "Inex Technologies" }, + { { 0x8C, 0x1F, 0x64, 0xC4, 0x80 }, "AKAutomation", "AK Automation" }, { { 0x8C, 0x1F, 0x64, 0xC4, 0xA0 }, "SGiTechnolog", "SGi Technology Group Ltd." }, { { 0x8C, 0x1F, 0x64, 0xC4, 0xC0 }, "LumiplanDuha", "Lumiplan Duhamel" }, { { 0x8C, 0x1F, 0x64, 0xC4, 0xE0 }, "iCEIntellige", "iCE-Intelligent Controlled Environments" }, @@ -56329,6 +56874,7 @@ { { 0x8C, 0x1F, 0x64, 0xC6, 0x10 }, "CeresdateTec", "Beijing Ceresdate Technology Co.,LTD" }, { { 0x8C, 0x1F, 0x64, 0xC6, 0x20 }, "GMI", "GMI Ltd" }, { { 0x8C, 0x1F, 0x64, 0xC6, 0x40 }, "Ajeco", "Ajeco Oy" }, + { { 0x8C, 0x1F, 0x64, 0xC6, 0x50 }, "Headwave", "Headwave" }, { { 0x8C, 0x1F, 0x64, 0xC6, 0x70 }, "Oriux", "Oriux" }, { { 0x8C, 0x1F, 0x64, 0xC6, 0x80 }, "FibermeCommu", "Fiberme Communications Llc" }, { { 0x8C, 0x1F, 0x64, 0xC6, 0xA0 }, "RedPhaseTech", "Red Phase Technologies Limited" }, @@ -56347,6 +56893,7 @@ { { 0x8C, 0x1F, 0x64, 0xC7, 0xD0 }, "GlassonElect", "Glasson Electronics Ltd" }, { { 0x8C, 0x1F, 0x64, 0xC8, 0x00 }, "VECOSEurope", "VECOS Europe B.V." }, { { 0x8C, 0x1F, 0x64, 0xC8, 0x10 }, "TaolinkTechn", "Taolink Technologies Corporation" }, + { { 0x8C, 0x1F, 0x64, 0xC8, 0x20 }, "SekureTrakdb", "SekureTrak Inc. dba TraknProtect" }, { { 0x8C, 0x1F, 0x64, 0xC8, 0x30 }, "PowerElectro", "Power Electronics Espana, S.L." }, { { 0x8C, 0x1F, 0x64, 0xC8, 0x40 }, "Luceor", "Luceor" }, { { 0x8C, 0x1F, 0x64, 0xC8, 0x50 }, "PotterElectr", "Potter Electric Signal Co. LLC" }, @@ -56354,6 +56901,7 @@ { { 0x8C, 0x1F, 0x64, 0xC8, 0xF0 }, "JWFroehlichM", "JW Froehlich Maschinenfabrik GmbH" }, { { 0x8C, 0x1F, 0x64, 0xC9, 0x10 }, "SoehnleIndus", "Soehnle Industrial Solutions GmbH" }, { { 0x8C, 0x1F, 0x64, 0xC9, 0x20 }, "EQEarthquake", "EQ Earthquake Ltd." }, + { { 0x8C, 0x1F, 0x64, 0xC9, 0x50 }, "Lemier", "Lemier" }, { { 0x8C, 0x1F, 0x64, 0xC9, 0x60 }, "SmartDataInt", "Smart Data (Shenzhen) Intelligent System Co., Ltd." }, { { 0x8C, 0x1F, 0x64, 0xC9, 0x70 }, "MagnetPhysik", "Magnet-Physik Dr. Steingroever GmbH" }, { { 0x8C, 0x1F, 0x64, 0xC9, 0x90 }, "VinfastTradi", "Vinfast Trading and Production JSC" }, @@ -56455,14 +57003,17 @@ { { 0x8C, 0x1F, 0x64, 0xD2, 0x30 }, "PLX", "PLX Inc." }, { { 0x8C, 0x1F, 0x64, 0xD2, 0x40 }, "R3IoT", "R3 IoT Ltd." }, { { 0x8C, 0x1F, 0x64, 0xD2, 0x50 }, "therlys", "therlys GmbH" }, + { { 0x8C, 0x1F, 0x64, 0xD2, 0x60 }, "Private", "Private" }, { { 0x8C, 0x1F, 0x64, 0xD2, 0x70 }, "Taiv", "Taiv Inc" }, { { 0x8C, 0x1F, 0x64, 0xD2, 0x80 }, "MapleCloudTe", "MapleCloud Technologies" }, { { 0x8C, 0x1F, 0x64, 0xD2, 0x90 }, "SecureBits", "Secure Bits" }, { { 0x8C, 0x1F, 0x64, 0xD2, 0xA0 }, "AnteusKft", "Anteus Kft." }, + { { 0x8C, 0x1F, 0x64, 0xD2, 0xC0 }, "DEUTAWerke", "DEUTA Werke GmbH" }, { { 0x8C, 0x1F, 0x64, 0xD2, 0xD0 }, "Eskomar", "Eskomar Ltd." }, { { 0x8C, 0x1F, 0x64, 0xD2, 0xF0 }, "Ltec", "Ltec Co.,Ltd" }, { { 0x8C, 0x1F, 0x64, 0xD3, 0x00 }, "FMCTechnolog", "FMC Technologies Measurement Solutions Inc" }, { { 0x8C, 0x1F, 0x64, 0xD3, 0x40 }, "Kronotech", "Kronotech Srl" }, + { { 0x8C, 0x1F, 0x64, 0xD3, 0x50 }, "XianBianguIn", "Xi'an Biangu Information Technology Co., Ltd." }, { { 0x8C, 0x1F, 0x64, 0xD3, 0x80 }, "CuuLongTechn", "Cuu Long Technology And Trading Company Limited" }, { { 0x8C, 0x1F, 0x64, 0xD3, 0xA0 }, "AppliedMater", "Applied Materials" }, { { 0x8C, 0x1F, 0x64, 0xD3, 0xB0 }, "GogoBA", "Gogo BA" }, @@ -56494,8 +57045,11 @@ { { 0x8C, 0x1F, 0x64, 0xD6, 0x20 }, "Alpesrecherc", "Alpes recherche et développement" }, { { 0x8C, 0x1F, 0x64, 0xD6, 0x30 }, "Mobileye", "Mobileye" }, { { 0x8C, 0x1F, 0x64, 0xD6, 0x40 }, "PotterElectr", "Potter Electric Signal Co. LLC" }, + { { 0x8C, 0x1F, 0x64, 0xD6, 0x70 }, "Groundtruth", "Groundtruth Ltd" }, { { 0x8C, 0x1F, 0x64, 0xD6, 0x90 }, "ADiCo", "ADiCo Corporation" }, { { 0x8C, 0x1F, 0x64, 0xD6, 0xC0 }, "Packetalk", "Packetalk LLC" }, + { { 0x8C, 0x1F, 0x64, 0xD6, 0xD0 }, "ViettelHighT", "Viettel High Tech" }, + { { 0x8C, 0x1F, 0x64, 0xD6, 0xF0 }, "ArktronElect", "Arktron Electronics" }, { { 0x8C, 0x1F, 0x64, 0xD7, 0x10 }, "ComputechInt", "Computech International" }, { { 0x8C, 0x1F, 0x64, 0xD7, 0x30 }, "BRSSistemasE", "BRS Sistemas Eletrônicos" }, { { 0x8C, 0x1F, 0x64, 0xD7, 0x40 }, "TexComputer", "Tex Computer Srl" }, @@ -56507,6 +57061,8 @@ { { 0x8C, 0x1F, 0x64, 0xD7, 0xF0 }, "Fiberstoryco", "Fiberstory communications Pvt Ltd" }, { { 0x8C, 0x1F, 0x64, 0xD8, 0x00 }, "Aztek", "Aztek Sa" }, { { 0x8C, 0x1F, 0x64, 0xD8, 0x10 }, "MitsubishiEl", "Mitsubishi Electric India Pvt. Ltd." }, + { { 0x8C, 0x1F, 0x64, 0xD8, 0x20 }, "JarueMicrosy", "Shanghai Jarue Microsystem.CO.,Ltd." }, + { { 0x8C, 0x1F, 0x64, 0xD8, 0x70 }, "ExperioTechP", "Experio Tech Private Limited" }, { { 0x8C, 0x1F, 0x64, 0xD8, 0x80 }, "UniversityGe", "University of Geneva - Department of Particle Physics" }, { { 0x8C, 0x1F, 0x64, 0xD8, 0xA0 }, "BoonArthurEn", "Boon Arthur Engineering Pte Ltd" }, { { 0x8C, 0x1F, 0x64, 0xD8, 0xC0 }, "Smri", "Smri" }, @@ -56526,6 +57082,7 @@ { { 0x8C, 0x1F, 0x64, 0xD9, 0xC0 }, "Relcom", "Relcom, Inc." }, { { 0x8C, 0x1F, 0x64, 0xD9, 0xD0 }, "MitsubishiHe", "Mitsubishi Heavy Industries Thermal Systems, Ltd." }, { { 0x8C, 0x1F, 0x64, 0xD9, 0xE0 }, "WagnerGroup", "Wagner Group GmbH" }, + { { 0x8C, 0x1F, 0x64, 0xDA, 0x00 }, "SensataTechn", "Sensata Technologies Inc." }, { { 0x8C, 0x1F, 0x64, 0xDA, 0x10 }, "HangtengTech", "Hangteng (HK) Technology Co., Limited" }, { { 0x8C, 0x1F, 0x64, 0xDA, 0x40 }, "FoenixCoding", "Foenix Coding Ltd" }, { { 0x8C, 0x1F, 0x64, 0xDA, 0x50 }, "Daom", "Daom" }, @@ -56573,6 +57130,8 @@ { { 0x8C, 0x1F, 0x64, 0xDE, 0xA0 }, "NatronEnergy", "Natron Energy" }, { { 0x8C, 0x1F, 0x64, 0xDE, 0xB0 }, "PXMMarekZupn", "PXM Marek Zupnik spolka komandytowa" }, { { 0x8C, 0x1F, 0x64, 0xDE, 0xD0 }, "PhotonPath", "PhotonPath" }, + { { 0x8C, 0x1F, 0x64, 0xDF, 0x00 }, "Cyberkar", "Cyberkar Systems inc." }, + { { 0x8C, 0x1F, 0x64, 0xDF, 0x20 }, "Lomar", "Lomar Srl" }, { { 0x8C, 0x1F, 0x64, 0xDF, 0x50 }, "ConceptProSu", "Concept Pro Surveillance" }, { { 0x8C, 0x1F, 0x64, 0xDF, 0x60 }, "Micronova", "Micronova srl" }, { { 0x8C, 0x1F, 0x64, 0xDF, 0x80 }, "WittraNetwor", "Wittra Networks AB" }, @@ -56604,10 +57163,12 @@ { { 0x8C, 0x1F, 0x64, 0xE2, 0x10 }, "LGLHTAircraf", "LG-LHT Aircraft Solutions GmbH" }, { { 0x8C, 0x1F, 0x64, 0xE2, 0x30 }, "ChemitoInfot", "Chemito Infotech PVT LTD" }, { { 0x8C, 0x1F, 0x64, 0xE2, 0x40 }, "CometaSas", "Cometa Sas" }, + { { 0x8C, 0x1F, 0x64, 0xE2, 0x50 }, "Heitec", "Heitec Ag" }, { { 0x8C, 0x1F, 0x64, 0xE2, 0x60 }, "HyperSilicon", "HyperSilicon Co.,Ltd" }, { { 0x8C, 0x1F, 0x64, 0xE2, 0x70 }, "EurotronicTe", "Eurotronic Technology GmbH" }, { { 0x8C, 0x1F, 0x64, 0xE2, 0xA0 }, "WhiteboxTech", "Whitebox Technology Hong Kong Ltd" }, { { 0x8C, 0x1F, 0x64, 0xE2, 0xB0 }, "GlotechEximP", "Glotech Exim Private Limited" }, + { { 0x8C, 0x1F, 0x64, 0xE2, 0xC0 }, "KairosWater", "Kairos Water, Inc" }, { { 0x8C, 0x1F, 0x64, 0xE2, 0xD0 }, "RADAElectron", "RADA Electronics Industries Ltd." }, { { 0x8C, 0x1F, 0x64, 0xE2, 0xE0 }, "RADAElectron", "RADA Electronics Industries Ltd." }, { { 0x8C, 0x1F, 0x64, 0xE2, 0xF0 }, "BreasMedical", "Breas Medical AB" }, @@ -56735,6 +57296,7 @@ { { 0x8C, 0x1F, 0x64, 0xEF, 0x80 }, "NorthwestCen", "Northwest Central Indiana Community Partnerships Inc dba Wabash Heartland Innovation Network (WHIN)" }, { { 0x8C, 0x1F, 0x64, 0xEF, 0xB0 }, "Warecube", "Warecube,Inc" }, { { 0x8C, 0x1F, 0x64, 0xEF, 0xD0 }, "NovateraTech", "Novatera(Shenzhen)Technologies Co.,Ltd." }, + { { 0x8C, 0x1F, 0x64, 0xEF, 0xF0 }, "Automata", "Automata GmbH & Co. KG" }, { { 0x8C, 0x1F, 0x64, 0xF0, 0x30 }, "FaustApS", "Faust ApS" }, { { 0x8C, 0x1F, 0x64, 0xF0, 0x40 }, "IoTSecure", "IoTSecure, LLC" }, { { 0x8C, 0x1F, 0x64, 0xF0, 0x50 }, "PrestonIndus", "Preston Industries dba PolyScience" }, @@ -56747,6 +57309,7 @@ { { 0x8C, 0x1F, 0x64, 0xF1, 0x20 }, "CAITRON", "CAITRON GmbH" }, { { 0x8C, 0x1F, 0x64, 0xF1, 0x30 }, "ACSMotionCon", "ACS Motion Control" }, { { 0x8C, 0x1F, 0x64, 0xF1, 0x40 }, "Elektrosil", "Elektrosil GmbH" }, + { { 0x8C, 0x1F, 0x64, 0xF1, 0x60 }, "Schildknecht", "Schildknecht AG" }, { { 0x8C, 0x1F, 0x64, 0xF1, 0x80 }, "NorthernDesi", "Northern Design (Electronics) Ltd" }, { { 0x8C, 0x1F, 0x64, 0xF1, 0x90 }, "Hurrytech", "Hurry-tech" }, { { 0x8C, 0x1F, 0x64, 0xF1, 0xB0 }, "Nextep", "Nextep Co.,Ltd." }, @@ -56823,6 +57386,7 @@ { { 0x8C, 0x1F, 0x64, 0xF8, 0x70 }, "FlyElectroni", "Fly Electronic (Shang Hai) Technology Co.,Ltd" }, { { 0x8C, 0x1F, 0x64, 0xF8, 0x80 }, "LAMTECMessun", "LAMTEC Mess- und Regeltechnik für Feuerungen GmbH & Co. KG" }, { { 0x8C, 0x1F, 0x64, 0xF8, 0xC0 }, "BkLab", "Bk Lab" }, + { { 0x8C, 0x1F, 0x64, 0xF8, 0xE0 }, "ApluxIntelig", "Chengdu Aplux Inteligence Technology Ltd." }, { { 0x8C, 0x1F, 0x64, 0xF9, 0x00 }, "Enfabrica", "Enfabrica" }, { { 0x8C, 0x1F, 0x64, 0xF9, 0x10 }, "Consonance", "Consonance" }, { { 0x8C, 0x1F, 0x64, 0xF9, 0x20 }, "VisionSafety", "Vision Systems Safety Tech" }, @@ -56847,6 +57411,7 @@ { { 0x8C, 0x1F, 0x64, 0xFA, 0xC0 }, "ShowaElectri", "Showa Electric Laboratory co.,ltd." }, { { 0x8C, 0x1F, 0x64, 0xFB, 0x00 }, "MARIAN", "MARIAN GmbH" }, { { 0x8C, 0x1F, 0x64, 0xFB, 0x10 }, "Abb", "Abb" }, + { { 0x8C, 0x1F, 0x64, 0xFB, 0x30 }, "Camius", "Camius" }, { { 0x8C, 0x1F, 0x64, 0xFB, 0x40 }, "ThalesNederl", "Thales Nederland BV" }, { { 0x8C, 0x1F, 0x64, 0xFB, 0x50 }, "BavariaDigit", "Bavaria Digital Technik GmbH" }, { { 0x8C, 0x1F, 0x64, 0xFB, 0x60 }, "Racelogic", "Racelogic Ltd" }, @@ -56861,6 +57426,7 @@ { { 0x8C, 0x1F, 0x64, 0xFC, 0x40 }, "DorletSau", "Dorlet Sau" }, { { 0x8C, 0x1F, 0x64, 0xFC, 0x50 }, "Sumico", "Sumico" }, { { 0x8C, 0x1F, 0x64, 0xFC, 0x60 }, "InvertekDriv", "Invertek Drives Ltd" }, + { { 0x8C, 0x1F, 0x64, 0xFC, 0x80 }, "MetaphaseTec", "Metaphase Technologies" }, { { 0x8C, 0x1F, 0x64, 0xFC, 0xA0 }, "Elektrotechn", "Elektrotechnik & Elektronik Oltmann GmbH" }, { { 0x8C, 0x1F, 0x64, 0xFC, 0xC0 }, "GredmannTaiw", "Gredmann Taiwan Ltd." }, { { 0x8C, 0x1F, 0x64, 0xFC, 0xD0 }, "elbitEWandsi", "elbit systems - EW and sigint - Elisra" }, @@ -56880,12 +57446,14 @@ { { 0x8C, 0x1F, 0x64, 0xFE, 0x20 }, "VUVAnalytics", "VUV Analytics, Inc." }, { { 0x8C, 0x1F, 0x64, 0xFE, 0x30 }, "PowerElectro", "Power Electronics Espana, S.L." }, { { 0x8C, 0x1F, 0x64, 0xFE, 0x50 }, "Truenorth", "Truenorth" }, + { { 0x8C, 0x1F, 0x64, 0xFE, 0x60 }, "Cognicom", "Cognicom, Inc." }, { { 0x8C, 0x1F, 0x64, 0xFE, 0x90 }, "AlzajelModer", "Alzajel Modern Telecommunication" }, { { 0x8C, 0x1F, 0x64, 0xFE, 0xA0 }, "AKON", "AKON Co.,Ltd." }, { { 0x8C, 0x1F, 0x64, 0xFE, 0xB0 }, "ZhejiangSaij", "Zhejiang Saijin Semiiconductor Technology Co., Ltd." }, { { 0x8C, 0x1F, 0x64, 0xFE, 0xC0 }, "Newtec", "Newtec A/S" }, { { 0x8C, 0x1F, 0x64, 0xFE, 0xD0 }, "TelevicRail", "Televic Rail GmbH" }, { { 0x8C, 0x1F, 0x64, 0xFE, 0xE0 }, "LeapInfo", "Leap Info Systems Pvt. Ltd." }, + { { 0x8C, 0x1F, 0x64, 0xFF, 0x20 }, "MitsubishiEl", "Mitsubishi Electric India Pvt. Ltd." }, { { 0x8C, 0x1F, 0x64, 0xFF, 0x30 }, "FuzhouTucsen", "Fuzhou Tucsen Photonics Co.,Ltd" }, { { 0x8C, 0x1F, 0x64, 0xFF, 0x40 }, "SMSgroup", "SMS group GmbH" }, { { 0x8C, 0x1F, 0x64, 0xFF, 0x50 }, "IQTools", "IQ Tools LLC" }, diff -Nru wireshark-4.4.14/epan/packet.c wireshark-4.4.15/epan/packet.c --- wireshark-4.4.14/epan/packet.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/packet.c 2026-04-29 20:10:51.000000000 +0000 @@ -4246,17 +4246,29 @@ } void -increment_dissection_depth(packet_info *pinfo) { - pinfo->dissection_depth++; +increment_dissection_depth_by_n(packet_info *pinfo, unsigned n) { + DISSECTOR_ASSERT_HINT(!ckd_add(&pinfo->dissection_depth, pinfo->dissection_depth, n), + "pinfo->dissection_depth overflowed!"); DISSECTOR_ASSERT(pinfo->dissection_depth < (int)prefs.gui_max_tree_depth); } void -decrement_dissection_depth(packet_info *pinfo) { - pinfo->dissection_depth--; +increment_dissection_depth(packet_info *pinfo) { + increment_dissection_depth_by_n(pinfo, 1); +} + +void +decrement_dissection_depth_by_n(packet_info *pinfo, unsigned n) { + DISSECTOR_ASSERT_HINT(!ckd_sub(&pinfo->dissection_depth, pinfo->dissection_depth, n), + "pinfo->dissection_depth underflowed!"); DISSECTOR_ASSERT(pinfo->dissection_depth >= 0); } +void +decrement_dissection_depth(packet_info *pinfo) { + decrement_dissection_depth_by_n(pinfo, 1); +} + /* * Editor modelines - https://www.wireshark.org/tools/modelines.html * diff -Nru wireshark-4.4.14/epan/packet.h wireshark-4.4.15/epan/packet.h --- wireshark-4.4.14/epan/packet.h 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/packet.h 2026-04-29 20:10:51.000000000 +0000 @@ -950,12 +950,28 @@ WS_DLL_PUBLIC void increment_dissection_depth(packet_info *pinfo); +/** Increment the dissection depth by a value. + * This should be used to limit recursion outside the tree depth checks in + * call_dissector and dissector_try_heuristic. + * @param pinfo Packet Info. + * @param n The value by which to increment the depth + */ + +WS_DLL_PUBLIC void increment_dissection_depth_by_n(packet_info *pinfo, unsigned n); + /** Decrement the dissection depth. * @param pinfo Packet Info. */ WS_DLL_PUBLIC void decrement_dissection_depth(packet_info *pinfo); +/** Decrement the dissection depth by a value. + * @param pinfo Packet Info. + * @param n The value by which to decrement the depth + */ + +WS_DLL_PUBLIC void decrement_dissection_depth_by_n(packet_info *pinfo, unsigned n); + /** @} */ #ifdef __cplusplus diff -Nru wireshark-4.4.14/epan/services-data.c wireshark-4.4.15/epan/services-data.c --- wireshark-4.4.14/epan/services-data.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/services-data.c 2026-04-29 20:10:51.000000000 +0000 @@ -4056,6 +4056,7 @@ { 5313, "rrdp", "Real-time & Reliable Data" }, { 5314, "opalis-rbt-ipc", "" }, { 5315, "hacl-poll", "HA Cluster UDP Polling" }, + { 5319, "roughtime", "Roughtime time synchronization" }, { 5343, "kfserver", "Sculptor Database Server" }, { 5344, "xkotodrcp", "xkoto DRCP" }, { 5349, "stuns", "Session Traversal Utilities for NAT (STUN) port" }, @@ -4795,6 +4796,7 @@ { 9162, "apani3", "" }, { 9163, "apani4", "" }, { 9164, "apani5", "" }, + { 9183, "sirius-agent", "Sirius Configuration Agent" }, { 9191, "sun-as-jpda", "Sun AppSvr JPDA" }, { 9200, "wap-wsp", "WAP connectionless session service" }, { 9201, "wap-wsp-wtp", "WAP session service" }, @@ -5220,6 +5222,7 @@ { 34962, "profinet-rt", "PROFInet RT Unicast" }, { 34963, "profinet-rtm", "PROFInet RT Multicast" }, { 34964, "profinet-cm", "PROFInet Context Manager" }, + { 34965, "profinet-cm-sec", "PROFINET secure connection management and key provisioning" }, { 34980, "ethercat", "EtherCAT Port" }, { 35001, "rt-viewer", "ReadyTech Viewer" }, { 35004, "rt-classmanager", "ReadyTech ClassManager" }, @@ -6079,6 +6082,7 @@ { 4790, "vxlan-gpe", "Generic Protocol Extension for Virtual eXtensible Local Area Network (VXLAN)" }, { 4791, "roce", "IP Routable RocE" }, { 4793, "uet", "Ultra Ethernet Transport" }, + { 4794, "veroce", "veRoCE Transport Protocol" }, { 4803, "notateit-disc", "Notateit Messaging Discovery" }, { 4804, "aja-ntv4-disc", "AJA ntv4 Video System Discovery" }, { 4840, "opcua-udp", "OPC UA Multicast Datagram Protocol" }, @@ -6253,7 +6257,7 @@ { 23294, "5afe-disc", "5AFE SDN Directory discovery" }, { 24322, "hid", "Transport of Human Interface Device data streams" }, { 24577, "bilobit-update", "bilobit Service Update" }, - { 24601, "udpstp", "UDP-based IP-Layer Capacity and performance measurement protocol" }, + { 24601, "udpstp", "UDP-based IP-Layer Capacity and Performance Measurement protocol" }, { 24850, "assoc-disc", "Device Association Discovery" }, { 25954, "bf-game", "Bitfighter game server" }, { 25955, "bf-master", "Bitfighter master server" }, @@ -6266,6 +6270,7 @@ { 33334, "speedtrace-disc", "SpeedTrace TraceAgent Discovery" }, { 33435, "mtrace", "IP Multicast Traceroute" }, { 34567, "edi_service", "dhanalakshmi.org EDI Service" }, + { 34966, "profinet-rt-sec", "PROFINET secure real-time data transfer over UDP (unicast and multicast)" }, { 35355, "altova-lm-disc", "Altova License Management Discovery" }, { 36411, "wlcp", "Wireless LAN Control plane Protocol (WLCP)" }, { 38002, "crescoctrl-disc", "Cresco Controller Discovery" }, diff -Nru wireshark-4.4.14/epan/tvbuff_lz77.c wireshark-4.4.15/epan/tvbuff_lz77.c --- wireshark-4.4.14/epan/tvbuff_lz77.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/tvbuff_lz77.c 2026-04-29 20:10:51.000000000 +0000 @@ -78,6 +78,8 @@ } match_len += 7; } + if (match_len > MAX_INPUT_SIZE) + return false; match_len += 3; for (i = 0; i < match_len; i++) { uint8_t byte; diff -Nru wireshark-4.4.14/epan/tvbuff_rdp.c wireshark-4.4.15/epan/tvbuff_rdp.c --- wireshark-4.4.14/epan/tvbuff_rdp.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/tvbuff_rdp.c 2026-04-29 20:10:51.000000000 +0000 @@ -157,7 +157,8 @@ { 9, 382, 24, 17094304 }, // 101111110 }; - +/* Limits from [MS-RDPEGFX] 3.1.9.1.2 (So failures here are malformed + * packets, not limitations of the implementation.) */ struct _zgfx_context_t{ uint8_t historyBuffer[2500000]; uint32_t historyIndex; @@ -338,6 +339,9 @@ len--; if (!(flags & ZGX_PACKET_COMPRESSED)) { + if (len > 65535) { + return false; + } tvbuff_t *raw = tvb_new_subset_remaining(tvb, 1); zgfx_write_history_buffer_tvb(zgfx, raw, len); diff -Nru wireshark-4.4.14/epan/tvbuff_zlib.c wireshark-4.4.15/epan/tvbuff_zlib.c --- wireshark-4.4.14/epan/tvbuff_zlib.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/tvbuff_zlib.c 2026-04-29 20:10:51.000000000 +0000 @@ -47,6 +47,8 @@ tvb_uncompress_zlib(tvbuff_t *tvb, const int offset, int comprlen) { int err; + /* bytes_out is an unsigned because tvb_new_real_data does not accept + * more than an unsigned. */ unsigned bytes_out = 0; uint8_t *compr; uint8_t *uncompr = NULL; @@ -77,8 +79,11 @@ * Assume that the uncompressed data is at least twice as big as * the compressed size. */ - bufsiz = tvb_captured_length_remaining(tvb, offset) * 2; - bufsiz = CLAMP(bufsiz, TVB_Z_MIN_BUFSIZ, TVB_Z_MAX_BUFSIZ); + if (ckd_mul(&bufsiz, bytes_in, 2)) { + bufsiz = TVB_Z_MAX_BUFSIZ; + } else { + bufsiz = CLAMP(bufsiz, TVB_Z_MIN_BUFSIZ, TVB_Z_MAX_BUFSIZ); + } ws_debug("bufsiz: %u bytes\n", bufsiz); @@ -112,6 +117,19 @@ if (err == Z_OK || err == Z_STREAM_END) { unsigned bytes_pass = bufsiz - strm->avail_out; + // This is an unsigned long, but won't overflow even + // on platforms where that is 32-bit, because bufsize + // is clamped, if we break when it reaches INT_MAX. + if (strm->total_out > INT_MAX) { + // Qt uses signed ints in various classes, so + // the GUI can't really handle anything + ws_debug("overflow, returning what we have"); + ZLIB_PREFIX(inflateEnd)(strm); + g_free(strm); + g_free(strmbuf); + break; + } + ++inflate_passes; if (uncompr == NULL) { @@ -132,6 +150,7 @@ } bytes_out += bytes_pass; + ws_assert(bytes_out == strm->total_out); if (err == Z_STREAM_END) { ZLIB_PREFIX(inflateEnd)(strm); @@ -308,7 +327,7 @@ ws_debug("bytes in: %u\nbytes out: %u\n\n", bytes_in, bytes_out); if (uncompr != NULL) { - uncompr_tvb = tvb_new_real_data(uncompr, bytes_out, bytes_out); + uncompr_tvb = tvb_new_real_data(uncompr, bytes_out, bytes_out); tvb_set_free_cb(uncompr_tvb, g_free); } wmem_free(NULL, compr); diff -Nru wireshark-4.4.14/epan/uat_load.l wireshark-4.4.15/epan/uat_load.l --- wireshark-4.4.14/epan/uat_load.l 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/uat_load.l 2026-04-29 20:10:51.000000000 +0000 @@ -165,6 +165,23 @@ #define DUMP(s) #endif +#define FILL_DEFAULTS() \ + { unsigned colnum = yyextra->colnum; \ + colnum++; \ + while (colnum < yyextra->uat->ncols) { \ + if (!yyextra->uat->default_values) break; \ + const char *default_value = yyextra->uat->default_values[colnum]; \ + if (!default_value) break; \ + yyextra->uat->fields[colnum].cb.set(yyextra->record, default_value, (unsigned) strlen(default_value), yyextra->uat->fields[colnum].cbdata.set, yyextra->uat->fields[colnum].fld_data); \ + ws_log(WS_LOG_DOMAIN, LOG_LEVEL_INFO, "%s:%d: Set %s to %s.", \ + yyextra->uat->filename, yyextra->linenum, yyextra->uat->fields[colnum].name, default_value); \ + colnum++; \ + } \ + if (colnum < yyextra->uat->ncols) { \ + ERROR(("expecting field %s", yyextra->uat->fields[colnum].name)); \ + } \ + } while(0) + /* Modified version of YY_INPUT generated by Flex 2.91 */ #define YY_INPUT(buf,result,max_size) \ if ( yyextra->parse_str ) \ @@ -250,9 +267,18 @@ yyextra->ptrx = g_strdup(""); yyextra->len = 0; - BEGIN END_OF_RECORD; + DUMP("empty->newline"); + + /* + * We've run out of fields. Check to see if we got enough, and + * if not, if we have any default values that we can fill in. + * The empty field for the current column will be filled in below + * in {newline}. + */ + FILL_DEFAULTS(); - yyless((int) yyleng); + BEGIN END_OF_RECORD; + yyless(0); } {quoted_string} { @@ -305,28 +331,8 @@ * values that we can fill in. The field for the current column * will be filled in below in {newline}. */ - unsigned save_colnum = yyextra->colnum; - yyextra->colnum++; - while (yyextra->colnum < yyextra->uat->ncols) { - if (!yyextra->uat->default_values) { - break; - } - const char *default_value = yyextra->uat->default_values[yyextra->colnum]; - if (!default_value) { - break; - } - yyextra->uat->fields[yyextra->colnum].cb.set(yyextra->record, default_value, (unsigned) strlen(default_value), yyextra->uat->fields[yyextra->colnum].cbdata.set, yyextra->uat->fields[yyextra->colnum].fld_data); - ws_log(WS_LOG_DOMAIN, LOG_LEVEL_INFO, "%s:%d: Set %s to %s.", - yyextra->uat->filename, yyextra->linenum, yyextra->uat->fields[yyextra->colnum].name, default_value); - yyextra->colnum++; - } - - if (yyextra->colnum < yyextra->uat->ncols) { - ERROR(("expecting field %s", yyextra->uat->fields[yyextra->colnum].name)); - } + FILL_DEFAULTS(); - yyextra->colnum = save_colnum; - yyextra->linenum++; BEGIN END_OF_RECORD; yyless(0); } diff -Nru wireshark-4.4.14/epan/wslua/wslua_capture_info.c wireshark-4.4.15/epan/wslua/wslua_capture_info.c --- wireshark-4.4.14/epan/wslua/wslua_capture_info.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/wslua/wslua_capture_info.c 2026-04-29 20:10:51.000000000 +0000 @@ -66,7 +66,7 @@ lua_pushstring(L,"CaptureInfo pointer is NULL!"); } else { wtap *wth = fi->wth; - lua_pushfstring(L, "CaptureInfo: file_type_subtype=%d, snapshot_length=%d, file_encap=%d, file_tsprec='%s'", + lua_pushfstring(L, "CaptureInfo: file_type_subtype=%d, snapshot_length=%d, file_encap=%d, file_tsprec=%d", wth->file_type_subtype, wth->snapshot_length, wth->file_encap, wth->file_tsprec); } diff -Nru wireshark-4.4.14/epan/wslua/wslua_dissector.c wireshark-4.4.15/epan/wslua/wslua_dissector.c --- wireshark-4.4.14/epan/wslua/wslua_dissector.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/wslua/wslua_dissector.c 2026-04-29 20:10:51.000000000 +0000 @@ -451,6 +451,10 @@ /* Handle GUID type (assuming it is represented as a string in Lua) */ const char* guid_str = luaL_checkstring(L,WSLUA_ARG_DissectorTable_add_PATTERN); fvalue_t* fval = fvalue_from_literal(type, guid_str, 0, NULL); + if (fval == NULL) { + WSLUA_ARG_ERROR(DissectorTable_add,PATTERN,"invalid GUID literal"); + return 0; + } const e_guid_t* guid = fvalue_get_guid(fval); guid_key gk = {*guid, 0}; /* The dcerpc.uuid table requires its own initializer */ @@ -571,6 +575,10 @@ /* Handle GUID type (assuming it is represented as a string in Lua) */ const char* guid_str = luaL_checkstring(L,WSLUA_ARG_DissectorTable_set_PATTERN); fvalue_t* fval = fvalue_from_literal(type, guid_str, 0, NULL); + if (fval == NULL) { + WSLUA_ARG_ERROR(DissectorTable_set,PATTERN,"invalid GUID literal"); + return 0; + } const e_guid_t* guid = fvalue_get_guid(fval); guid_key gk = {*guid, 0}; /* The dcerpc.uuid table requires its own initializer */ @@ -656,6 +664,10 @@ // Handle GUID type (assuming it is represented as a string in Lua) const char* guid_str = luaL_checkstring(L,WSLUA_ARG_DissectorTable_remove_PATTERN); fvalue_t* fval = fvalue_from_literal(type, guid_str, 0, NULL); + if (fval == NULL) { + WSLUA_ARG_ERROR(DissectorTable_remove,PATTERN,"invalid GUID literal"); + return 0; + } const e_guid_t* guid = fvalue_get_guid(fval); guid_key gk = {*guid, 0}; guids_delete_guid(guid); @@ -754,12 +766,16 @@ } else if ( type == FT_GUID ) { const char* guid_str = luaL_checkstring(L,WSLUA_ARG_DissectorTable_try_PATTERN); fvalue_t* fval = fvalue_from_literal(type, guid_str, 0, NULL); - const e_guid_t* guid = fvalue_get_guid(fval); - guid_key gk = {*guid, 0}; + if (fval == NULL) { + error = "invalid GUID literal"; + } else { + const e_guid_t* guid = fvalue_get_guid(fval); + guid_key gk = {*guid, 0}; - len = dissector_try_guid(dt->table, &gk,tvb->ws_tvb,pinfo->ws_pinfo,ti->tree); - if (len > 0) { - handled = true; + len = dissector_try_guid_new(dt->table, &gk,tvb->ws_tvb,pinfo->ws_pinfo,ti->tree, true, NULL); + if (len > 0) { + handled = true; + } } } else if ( type == FT_UINT32 || type == FT_UINT16 || type == FT_UINT8 || type == FT_UINT24 ) { uint32_t port = wslua_checkuint32(L, WSLUA_ARG_DissectorTable_try_PATTERN); @@ -812,10 +828,14 @@ } else if ( type == FT_GUID ) { const char* guid_str = luaL_checkstring(L,WSLUA_ARG_DissectorTable_get_dissector_PATTERN); fvalue_t* fval = fvalue_from_literal(type, guid_str, 0, NULL); - const e_guid_t* guid = fvalue_get_guid(fval); - guid_key gk = {*guid, 0}; - handle = dissector_get_guid_handle(dt->table,&gk); - } else if ( type == FT_UINT32 || type == FT_UINT16 || type == FT_UINT8 || type == FT_UINT24 ) { + if (fval == NULL) { + WSLUA_ARG_ERROR(DissectorTable_get_dissector,PATTERN,"invalid GUID literal"); + } else { + const e_guid_t* guid = fvalue_get_guid(fval); + guid_key gk = {*guid, 0}; + handle = dissector_get_guid_handle(dt->table,&gk); + } + } else if ( type == FT_UINT8 || type == FT_UINT16 || type == FT_UINT24 || type == FT_UINT32 ) { uint32_t port = wslua_checkuint32(L, WSLUA_ARG_DissectorTable_get_dissector_PATTERN); handle = dissector_get_uint_handle(dt->table,port); } diff -Nru wireshark-4.4.14/epan/wslua/wslua_frame_info.c wireshark-4.4.15/epan/wslua/wslua_frame_info.c --- wireshark-4.4.14/epan/wslua/wslua_frame_info.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/epan/wslua/wslua_frame_info.c 2026-04-29 20:10:51.000000000 +0000 @@ -56,7 +56,7 @@ lua_pushstring(L,"FrameInfo pointer is NULL!"); } else { if (fi->rec) - lua_pushfstring(L, "FrameInfo: rec_type=%u, presence_flags=%d, caplen=%d, len=%d, pkt_encap=%d, block='%p'", + lua_pushfstring(L, "FrameInfo: rec_type=%d, presence_flags=%d, caplen=%d, len=%d, pkt_encap=%d, block='%p'", fi->rec->rec_type, fi->rec->presence_flags, fi->rec->rec_header.packet_header.caplen, fi->rec->rec_header.packet_header.len, fi->rec->rec_header.packet_header.pkt_encap, fi->rec->block); else lua_pushstring(L, "FrameInfo rec pointer is NULL!"); @@ -338,7 +338,7 @@ lua_pushstring(L,"FrameInfo pointer is NULL!"); } else { if (fi->rec && !fi->expired) - lua_pushfstring(L, "FrameInfo: rec_type=%u, presence_flags=%d, caplen=%d, len=%d, pkt_encap=%d, block='%p'", + lua_pushfstring(L, "FrameInfo: rec_type=%d, presence_flags=%d, caplen=%d, len=%d, pkt_encap=%d, block='%p'", fi->rec->rec_type, fi->rec->presence_flags, fi->rec->rec_header.packet_header.caplen, fi->rec->rec_header.packet_header.len, fi->rec->rec_header.packet_header.pkt_encap, fi->rec->block); else lua_pushfstring(L, "FrameInfo has %s", fi->rec?"expired":"null rec pointer"); diff -Nru wireshark-4.4.14/extcap/CMakeLists.txt wireshark-4.4.15/extcap/CMakeLists.txt --- wireshark-4.4.14/extcap/CMakeLists.txt 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/extcap/CMakeLists.txt 2026-04-29 20:10:51.000000000 +0000 @@ -8,7 +8,7 @@ # if(EXTCAP_ANDROIDDUMP_LIBPCAP) - set(ANDROIDDUMP_USE_LIBPCAP 1) + set(ANDROIDDUMP_USE_LIBPCAP 1 PARENT_SCOPE) endif() if(LIBSSH_FOUND) diff -Nru wireshark-4.4.14/extcap/androiddump.c wireshark-4.4.15/extcap/androiddump.c --- wireshark-4.4.14/extcap/androiddump.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/extcap/androiddump.c 2026-04-29 20:10:51.000000000 +0000 @@ -510,7 +510,7 @@ pcap_header.ts.tv_sec = seconds; pcap_header.ts.tv_usec = nanoseconds / 1000; - pcap_dump((u_char *) extcap_dumper.dumper.pcap, &pcap_header, buffer); + pcap_dump((u_char *) extcap_dumper.dumper.pcap, &pcap_header, (uint8_t*)buffer); if (pcap_dump_flush(extcap_dumper.dumper.pcap) == -1) { ws_warning("Write to %s failed: %s", fifo, g_strerror(errno)); } diff -Nru wireshark-4.4.14/extcap/ssh-base.c wireshark-4.4.15/extcap/ssh-base.c --- wireshark-4.4.14/extcap/ssh-base.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/extcap/ssh-base.c 2026-04-29 20:10:51.000000000 +0000 @@ -86,6 +86,12 @@ */ #if LIBSSH_VERSION_INT < SSH_VERSION_INT(0,11,0) level = LOG_LEVEL_INFO; +#elif LIBSSH_VERSION_INT < SSH_VERSION_INT(0,12,1) + if (strncmp(function, "ssh_strict_fopen", strlen("ssh_strict_fopen")) == 0) { + level = LOG_LEVEL_DEBUG; + } else { + level = LOG_LEVEL_WARNING; + } #else level = LOG_LEVEL_WARNING; #endif diff -Nru wireshark-4.4.14/include/jtckdint.h wireshark-4.4.15/include/jtckdint.h --- wireshark-4.4.14/include/jtckdint.h 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/include/jtckdint.h 2026-04-29 20:10:51.000000000 +0000 @@ -398,13 +398,13 @@ __ckd_is_signed(b))) #define __ckd_declare_add(S, T) \ - __ckd_inline char S(void *__res, \ + __ckd_inline char S(volatile void *__res, \ __ckd_uintmax_t __x, \ __ckd_uintmax_t __y, \ char __a_signed, \ char __b_signed) { \ __ckd_uintmax_t __z = __x + __y; \ - *(T *)__res = (T)__z; \ + *(volatile T *)__res = (T)__z; \ char __truncated = 0; \ if (sizeof(T) < sizeof(__ckd_intmax_t)) { \ __truncated = __z != (__ckd_uintmax_t)(T)__z; \ @@ -460,13 +460,13 @@ #endif #define __ckd_declare_sub(S, T) \ - __ckd_inline char S(void *__res, \ + __ckd_inline char S(volatile void *__res, \ __ckd_uintmax_t __x, \ __ckd_uintmax_t __y, \ char __a_signed, \ char __b_signed) { \ __ckd_uintmax_t __z = __x - __y; \ - *(T *)__res = (T)__z; \ + *(volatile T *)__res = (T)__z; \ char __truncated = 0; \ if (sizeof(T) < sizeof(__ckd_intmax_t)) { \ __truncated = __z != (__ckd_uintmax_t)(T)__z; \ @@ -519,7 +519,7 @@ #endif #define __ckd_declare_mul(S, T) \ - __ckd_inline char S(void *__res, \ + __ckd_inline char S(volatile void *__res, \ __ckd_uintmax_t __x, \ __ckd_uintmax_t __y, \ char __a_signed, \ @@ -529,14 +529,14 @@ case 0: { /* u = u * u */ \ __ckd_uintmax_t __z = __x * __y; \ int __o = __x && __z / __x != __y; \ - *(T *)__res = (T)__z; \ + *(volatile T *)__res = (T)__z; \ return __o | (sizeof(T) < sizeof(__z) && \ __z != (__ckd_uintmax_t)*(T *)__res); \ } \ case 1: { /* u = u * s */ \ __ckd_uintmax_t __z = __x * __y; \ int __o = __x && __z / __x != __y; \ - *(T *)__res = (T)__z; \ + *(volatile T *)__res = (T)__z; \ return (__o | (((__ckd_intmax_t)__y < 0) & !!__x) | \ (sizeof(T) < sizeof(__z) && \ __z != (__ckd_uintmax_t)*(T *)__res)); \ @@ -544,7 +544,7 @@ case 2: { /* u = s * u */ \ __ckd_uintmax_t __z = __x * __y; \ int __o = __x && __z / __x != __y; \ - *(T *)__res = (T)__z; \ + *(volatile T *)__res = (T)__z; \ return (__o | (((__ckd_intmax_t)__x < 0) & !!__y) | \ (sizeof(T) < sizeof(__z) && \ __z != (__ckd_uintmax_t)*(T *)__res)); \ @@ -559,14 +559,14 @@ } \ __ckd_uintmax_t __z = __x * __y; \ __o |= __x && __z / __x != __y; \ - *(T *)__res = (T)__z; \ + *(volatile T *)__res = (T)__z; \ return __o | (sizeof(T) < sizeof(__z) && \ __z != (__ckd_uintmax_t)*(T *)__res); \ } \ case 4: { /* s = u * u */ \ __ckd_uintmax_t __z = __x * __y; \ int __o = __x && __z / __x != __y; \ - *(T *)__res = (T)__z; \ + *(volatile T *)__res = (T)__z; \ return (__o | ((__ckd_intmax_t)(__z) < 0) | \ (sizeof(T) < sizeof(__z) && \ __z != (__ckd_uintmax_t)*(T *)__res)); \ @@ -578,7 +578,7 @@ int __o = __t && __p / __t != __x; \ int __n = (__ckd_intmax_t)__y < 0; \ __ckd_uintmax_t __z = __n ? 0 - __p : __p; \ - *(T *)__res = (T)__z; \ + *(volatile T *)__res = (T)__z; \ __ckd_uintmax_t __m = __ckd_sign(__ckd_uintmax_t) - 1; \ return (__o | (__p > __m + __n) | \ (sizeof(T) < sizeof(__z) && \ @@ -591,7 +591,7 @@ int __o = __t && __p / __t != __y; \ int __n = (__ckd_intmax_t)__x < 0; \ __ckd_uintmax_t __z = __n ? 0 - __p : __p; \ - *(T *)__res = (T)__z; \ + *(volatile T *)__res = (T)__z; \ __ckd_uintmax_t __m = __ckd_sign(__ckd_uintmax_t) - 1; \ return (__o | (__p > __m + __n) | \ (sizeof(T) < sizeof(__z) && \ @@ -599,7 +599,7 @@ } \ case 7: { /* s = s * s */ \ __ckd_uintmax_t __z = __x * __y; \ - *(T *)__res = (T)__z; \ + *(volatile T *)__res = (T)__z; \ return (((((__ckd_intmax_t)__y < 0) && \ (__x == __ckd_sign(__ckd_uintmax_t))) || \ (__y && (((__ckd_intmax_t)__z / \ diff -Nru wireshark-4.4.14/include/wireshark.h wireshark-4.4.15/include/wireshark.h --- wireshark-4.4.14/include/wireshark.h 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/include/wireshark.h 2026-04-29 20:10:51.000000000 +0000 @@ -48,6 +48,8 @@ #include #include +#include /* C23/C++26 stdckint.h checked arithmetic */ + #include #include #include diff -Nru wireshark-4.4.14/include/ws_attributes.h wireshark-4.4.15/include/ws_attributes.h --- wireshark-4.4.14/include/ws_attributes.h 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/include/ws_attributes.h 2026-04-29 20:10:51.000000000 +0000 @@ -124,6 +124,17 @@ #define WS_WARN_UNUSED #endif +#if __has_attribute(nonstring) + #define WS_NONSTRING __attribute__((nonstring)) +#elif defined(_MSC_VER) + /* + * MSVC. + */ + #define WS_NONSTRING __pragma(warning(suppress:4295)) +#else + #define WS_NONSTRING +#endif + #ifdef __cplusplus } #endif /* __cplusplus */ diff -Nru wireshark-4.4.14/packaging/debian/changelog wireshark-4.4.15/packaging/debian/changelog --- wireshark-4.4.14/packaging/debian/changelog 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/packaging/debian/changelog 2026-04-29 20:10:51.000000000 +0000 @@ -1,4 +1,4 @@ -wireshark (4.4.14) UNRELEASED; urgency=low +wireshark (4.4.15) UNRELEASED; urgency=low * Self-made package diff -Nru wireshark-4.4.14/packaging/nsis/InstallMSYS2.cmake wireshark-4.4.15/packaging/nsis/InstallMSYS2.cmake --- wireshark-4.4.14/packaging/nsis/InstallMSYS2.cmake 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/packaging/nsis/InstallMSYS2.cmake 2026-04-29 20:10:51.000000000 +0000 @@ -65,7 +65,7 @@ ${MINGW_BIN}/libwinpthread-*.dll ${MINGW_BIN}/libxml2-*.dll ${MINGW_BIN}/libzstd.dll - ${MINGW_BIN}/lua51.dll + ${MINGW_BIN}/lua5[3-9].dll ${MINGW_BIN}/zlib1.dll ) endif() diff -Nru wireshark-4.4.14/packaging/source/git-export-release.sh.in wireshark-4.4.15/packaging/source/git-export-release.sh.in --- wireshark-4.4.14/packaging/source/git-export-release.sh.in 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/packaging/source/git-export-release.sh.in 2026-04-29 20:10:51.000000000 +0000 @@ -44,7 +44,7 @@ # A tarball produced by 'git archive' will have the $Format string # substituted due to the use of 'export-subst' in .gitattributes. # shellcheck disable=SC2016 -COMMIT='2e231b8d9926750a68f69a0ed5f80af3cacfe9c3' +COMMIT='8b505c070d65e18c1f33823c4f3fe78af6034b6d' if [[ $COMMIT != \$F* ]] ; then # This file was extracted from a tarball produced by git archive diff -Nru wireshark-4.4.14/plugins/codecs/amrnb/amrdecode.c wireshark-4.4.15/plugins/codecs/amrnb/amrdecode.c --- wireshark-4.4.14/plugins/codecs/amrnb/amrdecode.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/plugins/codecs/amrnb/amrdecode.c 2026-04-29 20:10:51.000000000 +0000 @@ -232,14 +232,15 @@ return *outputSizeBytes; } - memset(aligned, 0, 32); + memset(aligned, 0, sizeof(aligned)); aligned[0] = mode << 3; - for (unsigned j = 0; j < speech_bits[mode] / 8; ++j) { + unsigned j; + for (j = 0; j < speech_bits[mode] / 8U; ++j) { aligned[1 + j] = get_bits8(in, bit_offset, 8); bit_offset += 8; } - if (speech_bits[mode] % 8) { - aligned[1 + block_size[mode]] = get_bits8(in, bit_offset, speech_bits[mode] % 8); + if (j < block_size[mode]) { + aligned[1 + j] = get_bits8(in, bit_offset, speech_bits[mode] % 8); } /* Padding might be different. */ diff -Nru wireshark-4.4.14/plugins/codecs/iLBC/iLBCdecode.c wireshark-4.4.15/plugins/codecs/iLBC/iLBCdecode.c --- wireshark-4.4.14/plugins/codecs/iLBC/iLBCdecode.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/plugins/codecs/iLBC/iLBCdecode.c 2026-04-29 20:10:51.000000000 +0000 @@ -1,6 +1,8 @@ /* iLBCdecode.c * iLBC codec * + * https://datatracker.ietf.org/doc/html/rfc3952 + * * Wireshark - Network traffic analyzer * By Gerald Combs * Copyright 1998 Gerald Combs @@ -49,8 +51,9 @@ static void codec_iLBC_release(codec_context_t *ctx) { - WebRtcIlbcfix_DecoderFree(((ilbc_ctx_t *)ctx->priv)->ilbc_ctx); - g_free(ctx); + ilbc_ctx_t *dataCtx = (ilbc_ctx_t *)ctx->priv; + WebRtcIlbcfix_DecoderFree(dataCtx->ilbc_ctx); + g_free(dataCtx); } static unsigned @@ -78,16 +81,24 @@ #endif int16_t *dataOut = (int16_t *)outputSamples; ilbc_ctx_t *dataCtx = (ilbc_ctx_t *)ctx->priv; - size_t outputSamplesCount; + size_t outputSamplesCount, outputFramesCount; if (!outputSamples || !outputSamplesSize) { + /* XXX - If the payload size is a multiple of 950 (the GCM of the + * 20 ms and 30 ms payload lengths), we don't know which variant it + * is and the iLBC library doesn't seem to autodetect but uses what + * we initialize as. RFC 3952 3.2 is of no help here, suggesting + * only this algorithm. + * Do we need a codec preference? */ if (0 == inputBytesSize%ILBC_PAYLOAD_LEN_20MS) { /* 20ms packet size = 160 samples = 320 bytes */ - return BLOCKL_20MS*SAMPLE_SIZE; + outputFramesCount = inputBytesSize / ILBC_PAYLOAD_LEN_20MS; + return outputFramesCount*BLOCKL_20MS*SAMPLE_SIZE; } else if (0 == inputBytesSize%ILBC_PAYLOAD_LEN_30MS) { /* 30ms packet size = 240 samples = 480 bytes */ - return BLOCKL_30MS*SAMPLE_SIZE; + outputFramesCount = inputBytesSize / ILBC_PAYLOAD_LEN_30MS; + return outputFramesCount*BLOCKL_30MS*SAMPLE_SIZE; } else { /* unknown packet size */ return 0; diff -Nru wireshark-4.4.14/plugins/codecs/sbc/sbc.c wireshark-4.4.15/plugins/codecs/sbc/sbc.c --- wireshark-4.4.14/plugins/codecs/sbc/sbc.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/plugins/codecs/sbc/sbc.c 2026-04-29 20:10:51.000000000 +0000 @@ -85,10 +85,10 @@ const void *input, size_t inputSizeBytes, void *output, size_t *outputSizeBytes) { - size_t size_in = (size_t) inputSizeBytes; + size_t size_in = inputSizeBytes; size_t size_out = SBC_BUFFER; size_t len; - size_t framelen; + ssize_t framelen; size_t xframe_pos = 0; const uint8_t *data_in = (const uint8_t *) input; uint8_t *data_out = (uint8_t *) output; @@ -96,17 +96,35 @@ uint8_t *i_data; uint8_t tmp; + /* XXX - This should presumably call sbc_parse on the input to set the + * various parameters the first time, then return the value from + * sbc_get_codesize() (uncompressed block size) as the necessary + * output size. See the opus codec. */ if (!output || !outputSizeBytes) { return size_out; } + /* XXX - Why ask libsbc to provide Big Endian output and then always + * byte swap below? That seems wasteful on Little Endian and just wrong + * on Big Endian. sbc_init sets sbc->endian correctly depending on how + * the library was compiled. */ sbc->endian = SBC_BE; *outputSizeBytes = 0; while (xframe_pos < inputSizeBytes) { framelen = sbc_decode(sbc, data_in, size_in, data_out, size_out, &len); + if (framelen <= 0) { + // Error + break; + } xframe_pos += framelen; data_in += framelen; + size_in -= framelen; + if (len > size_out) { + // Not enough room in output (multiple frames?) + break; + } + size_out -= len; *outputSizeBytes += len; for (i_data = data_out; i_data < data_out + len; i_data += 2) { diff -Nru wireshark-4.4.14/resources/freedesktop/org.wireshark.Wireshark.metainfo.xml wireshark-4.4.15/resources/freedesktop/org.wireshark.Wireshark.metainfo.xml --- wireshark-4.4.14/resources/freedesktop/org.wireshark.Wireshark.metainfo.xml 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/resources/freedesktop/org.wireshark.Wireshark.metainfo.xml 2026-04-29 20:10:51.000000000 +0000 @@ -64,6 +64,54 @@ wireshark-dev_at_wireshark.org - + + + https://www.wireshark.org/docs/relnotes/wireshark-4.4.15.html + + + https://www.wireshark.org/docs/relnotes/wireshark-4.4.14.html + + + https://www.wireshark.org/docs/relnotes/wireshark-4.4.13.html + + + https://www.wireshark.org/docs/relnotes/wireshark-4.4.12.html + + + https://www.wireshark.org/docs/relnotes/wireshark-4.4.11.html + + + https://www.wireshark.org/docs/relnotes/wireshark-4.4.10.html + + + https://www.wireshark.org/docs/relnotes/wireshark-4.4.9.html + + + https://www.wireshark.org/docs/relnotes/wireshark-4.4.8.html + + + https://www.wireshark.org/docs/relnotes/wireshark-4.4.7.html + + + https://www.wireshark.org/docs/relnotes/wireshark-4.4.6.html + + + https://www.wireshark.org/docs/relnotes/wireshark-4.4.5.html + + + https://www.wireshark.org/docs/relnotes/wireshark-4.4.4.html + + + https://www.wireshark.org/docs/relnotes/wireshark-4.4.3.html + + + https://www.wireshark.org/docs/relnotes/wireshark-4.4.2.html + + + https://www.wireshark.org/docs/relnotes/wireshark-4.4.1.html + + + https://www.wireshark.org/docs/relnotes/wireshark-4.4.0.html + diff -Nru wireshark-4.4.14/sharkd.c wireshark-4.4.15/sharkd.c --- wireshark-4.4.14/sharkd.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/sharkd.c 2026-04-29 20:10:51.000000000 +0000 @@ -389,6 +389,35 @@ return err; } +void +cf_close(capture_file *cf) +{ + if (cf->state == FILE_CLOSED || cf->state == FILE_READ_PENDING) + return; /* Nothing to do */ + + if (cf->provider.wth) { + wtap_close(cf->provider.wth); + cf->provider.wth = NULL; + } + + /* We have no file open... */ + if (cf->filename != NULL) { + /* If it's a temporary file, remove it. */ + if (cf->is_tempfile) + ws_unlink(cf->filename); + g_free(cf->filename); + cf->filename = NULL; + } + + if (cf->provider.frames != NULL) { + free_frame_data_sequence(cf->provider.frames); + cf->provider.frames = NULL; + } + + /* We have no file open. */ + cf->state = FILE_CLOSED; +} + cf_status_t cf_open(capture_file *cf, const char *fname, unsigned int type, bool is_tempfile, int *err) { @@ -399,7 +428,9 @@ if (wth == NULL) goto fail; - /* The open succeeded. Fill in the information for this file. */ + /* The open succeeded. Close whatever capture file we had open, + and fill in the information for this file. */ + cf_close(cf); cf->provider.wth = wth; cf->f_datalen = 0; /* not used, but set it anyway */ diff -Nru wireshark-4.4.14/sharkd_session.c wireshark-4.4.15/sharkd_session.c --- wireshark-4.4.14/sharkd_session.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/sharkd_session.c 2026-04-29 20:10:51.000000000 +0000 @@ -440,7 +440,7 @@ {"iograph", "filter9", 2, JSMN_STRING, SHARKD_JSON_STRING, SHARKD_OPTIONAL}, {"load", "file", 2, JSMN_STRING, SHARKD_JSON_STRING, SHARKD_MANDATORY}, {"setcomment", "frame", 2, JSMN_PRIMITIVE, SHARKD_JSON_UINTEGER, SHARKD_MANDATORY}, - {"setcomment", "comment", 2, JSMN_STRING, SHARKD_JSON_STRING, SHARKD_OPTIONAL}, + {"setcomment", "comment", 2, JSMN_STRING, SHARKD_JSON_STRING, SHARKD_MANDATORY}, {"setconf", "name", 2, JSMN_STRING, SHARKD_JSON_STRING, SHARKD_MANDATORY}, {"setconf", "value", 2, JSMN_UNDEFINED, SHARKD_JSON_ANY, SHARKD_MANDATORY}, {"tap", "tap0", 2, JSMN_STRING, SHARKD_JSON_STRING, SHARKD_MANDATORY}, @@ -1187,6 +1187,10 @@ return; } + /* The open succeded, and any previous file was closed. Remove any filter + * results that refer to the previous file. */ + g_hash_table_remove_all(filter_table); + TRY { err = sharkd_load_cap_file(); @@ -4233,6 +4237,47 @@ }; static void +sharkd_session_process_add_data_source(struct data_source *src, bool add_description) +{ + tvbuff_t *tvb; + unsigned length; + + if (add_description) { + char *src_name = get_data_source_name(src); + + sharkd_json_value_string("name", src_name); + wmem_free(NULL, src_name); + } + + tvb = get_data_source_tvb(src); + + TRY { + length = tvb_captured_length(tvb); + + if (length != 0) + { + const unsigned char *cp = tvb_get_ptr(tvb, 0, length); + + /* XXX pi.fd->encoding */ + sharkd_json_value_base64("bytes", cp, length); + } + else + { + sharkd_json_value_base64("bytes", (const uint8_t*)"", 0); + } + } CATCH_BOUNDS_AND_DISSECTOR_ERRORS { + /* tvb_captured_length can throw DissectorError. With an + * offset of 0 and a length of the captured length, tvb_get_ptr + * can throw DissectorError or various bounds errors. We have + * to catch it so that the JSON is valid. */ + sharkd_json_value_base64("bytes", (const uint8_t*)"", 0); + } CATCH_ALL { + ws_assert_not_reached(); + } + ENDTRY; +} + +static void sharkd_session_process_frame_cb(epan_dissect_t *edt, proto_tree *tree, struct epan_column_info *cinfo, const GSList *data_src, void *data) { packet_info *pi = &edt->pi; @@ -4322,23 +4367,7 @@ struct data_source *src = (struct data_source *) data_src->data; bool ds_open = false; - tvbuff_t *tvb; - unsigned length; - - tvb = get_data_source_tvb(src); - length = tvb_captured_length(tvb); - - if (length != 0) - { - const unsigned char *cp = tvb_get_ptr(tvb, 0, length); - - /* XXX pi.fd->encoding */ - sharkd_json_value_base64("bytes", cp, length); - } - else - { - sharkd_json_value_base64("bytes", "", 0); - } + sharkd_session_process_add_data_source(src, ds_open); data_src = data_src->next; if (data_src) @@ -4353,27 +4382,7 @@ json_dumper_begin_object(&dumper); - { - char *src_name = get_data_source_name(src); - - sharkd_json_value_string("name", src_name); - wmem_free(NULL, src_name); - } - - tvb = get_data_source_tvb(src); - length = tvb_captured_length(tvb); - - if (length != 0) - { - const unsigned char *cp = tvb_get_ptr(tvb, 0, length); - - /* XXX pi.fd->encoding */ - sharkd_json_value_base64("bytes", cp, length); - } - else - { - sharkd_json_value_base64("bytes", "", 0); - } + sharkd_session_process_add_data_source(src, ds_open); json_dumper_end_object(&dumper); @@ -5155,7 +5164,7 @@ * * Input: * (m) frame - frame number - * (o) comment - user comment + * (m) comment - user comment * * Output object with attributes: * (m) err - error code: 0 succeed @@ -5975,6 +5984,7 @@ dumper.output_file = stdout; + /* XXX - This could be a wmem_map_new_autoreset(wmem_epan_scope(), wmem_file_scope(),...) */ filter_table = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, sharkd_session_filter_free); #ifdef HAVE_MAXMINDDB diff -Nru wireshark-4.4.14/tools/asn2wrs.py wireshark-4.4.15/tools/asn2wrs.py --- wireshark-4.4.14/tools/asn2wrs.py 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/tools/asn2wrs.py 2026-04-29 20:10:51.000000000 +0000 @@ -548,14 +548,14 @@ item_ord = [] item_cyc = [] x = {} # already emitted - #print '# Dependency computation' + #print('# Dependency computation') for t in items: if map_fn(t) in x: - #print 'Continue: %s : %s' % (t, (map_fn(t)) + #print('Continue: %s : %s' % (t, (map_fn(t)))) continue stack = [t] stackx = {t : dependency.get(t, [])[:]} - #print 'Push: %s : %s' % (t, str(stackx[t])) + #print('Push: %s : %s' % (t, str(stackx[t]))) while stack: if stackx[stack[-1]]: # has dependencies d = stackx[stack[-1]].pop(0) @@ -567,18 +567,18 @@ c = [d] + c[0:c.index(d)+1] c.reverse() item_cyc.append(c) - #print 'Cyclic: %s ' % (' -> '.join(c)) + #print('Cyclic: %s ' % (' -> '.join(c))) continue stack.append(d) stackx[d] = dependency.get(d, [])[:] - #print 'Push: %s : %s' % (d, str(stackx[d])) + #print('Push: %s : %s' % (d, str(stackx[d]))) else: - #print 'Pop: %s' % (stack[-1]) + #print('Pop: %s' % (stack[-1])) del stackx[stack[-1]] e = map_fn(stack.pop()) if e in x: continue - #print 'Add: %s' % (e) + #print('Add: %s' % (e)) item_ord.append(e) x[e] = True return (item_ord, item_cyc) @@ -1558,10 +1558,11 @@ break if len(cycle_funcs) > 1: + # The cycle always begins and ends with the same type, so + # subtract one. out += f'''\ // {' -> '.join(cycle_funcs)} - actx->pinfo->dissection_depth += {len(cycle_funcs) - 1}; - increment_dissection_depth(actx->pinfo); + increment_dissection_depth_by_n(actx->pinfo, {len(cycle_funcs) - 1}); ''' if self.conform.get_fn_presence(self.eth_type[tname]['ref'][0]): @@ -1584,9 +1585,10 @@ break if len(cycle_funcs) > 1: + # The cycle always begins and ends with the same type, so + # subtract one, as above out += f'''\ - actx->pinfo->dissection_depth -= {len(cycle_funcs) - 1}; - decrement_dissection_depth(actx->pinfo); + decrement_dissection_depth_by_n(actx->pinfo, {len(cycle_funcs) - 1}); ''' if self.conform.get_fn_presence(self.eth_type[tname]['ref'][0]): @@ -4956,6 +4958,20 @@ t = self.single_type() if t: ectx.eth_dep_add(ident, t) + else: + # It's an OpenType, which means a type field or a variable-type + # value [set] field, and we don't have a constraint that limits + # us to a single type. That means that this is "one whose set of + # values is the complete set of all possible values that can be + # specified using ASN.1." [Rec. ITU-T X.681 14.2] Also see X.680 + # 3.8.57 NOTE 2. + # + # Determining all the possible types that could follow is likely + # impossible at this point and might be very hard even after + # everything is parsed. There *might* be cycles. In a conservative + # approach, just claim that the OpenType depends on itself, which + # will create a cyclical dependency for sure just in case. + ectx.eth_dep_add(ident, ident) def eth_tname(self): t = self.single_type() diff -Nru wireshark-4.4.14/tools/macos-setup-patches/libssh-werror.patch wireshark-4.4.15/tools/macos-setup-patches/libssh-werror.patch --- wireshark-4.4.14/tools/macos-setup-patches/libssh-werror.patch 1970-01-01 00:00:00.000000000 +0000 +++ wireshark-4.4.15/tools/macos-setup-patches/libssh-werror.patch 2026-04-29 20:10:51.000000000 +0000 @@ -0,0 +1,13 @@ +diff --git a/CompilerChecks.cmake b/CompilerChecks.cmake +index 9719e699..ec15fa2a 100644 +--- a/CompilerChecks.cmake ++++ b/CompilerChecks.cmake +@@ -48,7 +48,7 @@ if (UNIX) + add_c_compiler_flag("-Werror=implicit-int" SUPPORTED_COMPILER_FLAGS) + add_c_compiler_flag("-Wint-conversion" SUPPORTED_COMPILER_FLAGS) + add_c_compiler_flag("-Werror=int-conversion" SUPPORTED_COMPILER_FLAGS) +- add_c_compiler_flag("-Werror=unused-variable" SUPPORTED_COMPILER_FLAGS) ++ #add_c_compiler_flag("-Werror=unused-variable" SUPPORTED_COMPILER_FLAGS) + + check_c_compiler_flag("-Wformat" REQUIRED_FLAGS_WFORMAT) + if (REQUIRED_FLAGS_WFORMAT) diff -Nru wireshark-4.4.14/tools/macos-setup.sh wireshark-4.4.15/tools/macos-setup.sh --- wireshark-4.4.14/tools/macos-setup.sh 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/tools/macos-setup.sh 2026-04-29 20:10:51.000000000 +0000 @@ -79,7 +79,7 @@ # CMake is required to do the build - and to build some of the # dependencies. # -CMAKE_VERSION=${CMAKE_VERSION-3.21.4} +CMAKE_VERSION=${CMAKE_VERSION-3.31.12} # # Ninja isn't required, as make is provided with Xcode, but it is @@ -126,7 +126,7 @@ # "QT_VERSION=5.10.1 ./macos-setup.sh" # will build and install with QT 5.10.1. # -QT_VERSION=${QT_VERSION-6.2.4} +QT_VERSION=${QT_VERSION-6.5.3} if [ "$QT_VERSION" ]; then QT_MAJOR_VERSION="$( expr "$QT_VERSION" : '\([0-9][0-9]*\).*' )" @@ -142,8 +142,8 @@ # the optional libraries are required by other optional libraries. # LIBSMI_VERSION=0.4.8 -GNUTLS_VERSION=3.8.10 -GNUTLS_SHA256=2bea4e154794f3f00180fa2a5c51fe8b005ac7a31cd58bd44cdfa7f36ebc3a9b +GNUTLS_VERSION=3.8.12 +GNUTLS_SHA256=a7b341421bfd459acf7a374ca4af3b9e06608dcd7bd792b2bf470bea012b8e51 if [ "$GNUTLS_VERSION" ]; then # # We'll be building GnuTLS, so we may need some additional libraries. @@ -1577,8 +1577,18 @@ $no_build && echo "Skipping installation" && return tar -xf gnutls-$GNUTLS_VERSION.tar.xz cd gnutls-$GNUTLS_VERSION - CFLAGS="$CFLAGS $VERSION_MIN_FLAGS $SDKFLAGS" CXXFLAGS="$CXXFLAGS $VERSION_MIN_FLAGS $SDKFLAGS" LDFLAGS="$LDFLAGS $VERSION_MIN_FLAGS $SDKFLAGS" \ - ./configure "${CONFIGURE_OPTS[@]}" --with-included-unistring --disable-guile + CFLAGS="$CFLAGS $VERSION_MIN_FLAGS $SDKFLAGS -DCRAU_MAYBE_UNUSED=\"__attribute__((__unused__))\"" CXXFLAGS="$CXXFLAGS $VERSION_MIN_FLAGS $SDKFLAGS" LDFLAGS="$LDFLAGS $VERSION_MIN_FLAGS $SDKFLAGS" \ + ./configure "${CONFIGURE_OPTS[@]}" \ + --enable-shared --disable-static \ + --with-included-unistring \ + --disable-crypto-auditing \ + --disable-cxx \ + --disable-doc \ + --disable-libdane \ + --disable-manpages \ + --without-idn \ + --with-brotli=no \ + --with-zstd=no make "${MAKE_BUILD_OPTS[@]}" $DO_MAKE_INSTALL cd .. @@ -2059,6 +2069,7 @@ $no_build && echo "Skipping installation" && return xzcat libssh-$LIBSSH_VERSION.tar.xz | tar xf - cd "libssh-$LIBSSH_VERSION" + patch -p1 < "${topdir}/tools/macos-setup-patches/libssh-werror.patch" mkdir build cd build "${DO_CMAKE[@]}" -DWITH_GCRYPT=1 .. @@ -2301,6 +2312,8 @@ if [ "$BCG729_VERSION" -a ! -f bcg729-$BCG729_VERSION-done ] ; then echo "Downloading, building, and installing bcg729:" [ -f bcg729-$BCG729_VERSION.tar.gz ] || curl "${CURL_REMOTE_NAME_OPTS[@]}" https://gitlab.linphone.org/BC/public/bcg729/-/archive/$BCG729_VERSION/bcg729-$BCG729_VERSION.tar.gz + # Alternate URL in case gitlab.linphone.org is down. + # [ -f bcg729-$BCG729_VERSION.tar.gz ] || curl "${CURL_REMOTE_NAME_OPTS[@]}" https://sources.voidlinux.org/bcg729-$BCG729_VERSION/bcg729-$BCG729_VERSION.tar.gz $no_build && echo "Skipping installation" && return gzcat bcg729-$BCG729_VERSION.tar.gz | tar xf - cd bcg729-$BCG729_VERSION @@ -2574,8 +2587,8 @@ tar -xf "falco-libs-$FALCO_LIBS_VERSION.tar.gz" mv "libs-$FALCO_LIBS_VERSION" "falco-libs-$FALCO_LIBS_VERSION" cd "falco-libs-$FALCO_LIBS_VERSION" - patch -p1 < "${topdir}/tools/macos-setup-patches/falco-uthash_h-install.patch" - patch -p1 < "${topdir}/tools/macos-setup-patches/falco-include-dirs.patch" + patch -p1 < "${topdir}/tools/macos-setup-patches/falco-uthash_h-install.patch" + patch -p1 < "${topdir}/tools/macos-setup-patches/falco-include-dirs.patch" mkdir build_dir cd build_dir "${DO_CMAKE[@]}" -DBUILD_SHARED_LIBS=ON -DMINIMAL_BUILD=ON -DCREATE_TEST_TARGETS=OFF \ diff -Nru wireshark-4.4.14/tools/make-version.py wireshark-4.4.15/tools/make-version.py --- wireshark-4.4.14/tools/make-version.py 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/tools/make-version.py 2026-04-29 20:10:51.000000000 +0000 @@ -44,8 +44,8 @@ # If the text "$Format" is still present, it means that # git archive did not replace the $Format string, which # means that this not a git archive. -GIT_EXPORT_SUBST_H = '2e231b8d9926750a68f69a0ed5f80af3cacfe9c3' -GIT_EXPORT_SUBST_D = 'tag: v4.4.14, refs/merge-requests/23702/head, refs/keep-around/2e231b8d9926750a68f69a0ed5f80af3cacfe9c3' +GIT_EXPORT_SUBST_H = '8b505c070d65e18c1f33823c4f3fe78af6034b6d' +GIT_EXPORT_SUBST_D = 'tag: v4.4.15, refs/merge-requests/24674/head, refs/keep-around/8b505c070d65e18c1f33823c4f3fe78af6034b6d, refs/environments/windows-package/deployments/3453, refs/environments/windows-package/deployments/3452' IS_GIT_ARCHIVE = not GIT_EXPORT_SUBST_H.startswith('$Format') diff -Nru wireshark-4.4.14/tools/msys2-setup.sh wireshark-4.4.15/tools/msys2-setup.sh --- wireshark-4.4.14/tools/msys2-setup.sh 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/tools/msys2-setup.sh 2026-04-29 20:10:51.000000000 +0000 @@ -78,6 +78,7 @@ ${PACKAGE_PREFIX}-libsmi \ ${PACKAGE_PREFIX}-libssh \ ${PACKAGE_PREFIX}-libxml2 \ + ${PACKAGE_PREFIX}-lua \ ${PACKAGE_PREFIX}-lz4 \ ${PACKAGE_PREFIX}-minizip \ ${PACKAGE_PREFIX}-ninja \ diff -Nru wireshark-4.4.14/tools/rpm-setup.sh wireshark-4.4.15/tools/rpm-setup.sh --- wireshark-4.4.14/tools/rpm-setup.sh 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/tools/rpm-setup.sh 2026-04-29 20:10:51.000000000 +0000 @@ -351,8 +351,10 @@ add_package ADDITIONAL_LIST libsmi-devel || echo "Optional package libsmi-devel is unavailable" -add_package ADDITIONAL_LIST opencore-amr-devel || -echo "Optional package opencore-amr-devel is unavailable" >&2 +# opencore-amr-devel: RHEL/CentOS, Fedora +# libopencore-amr-devel: OpenSUSE +add_package ADDITIONAL_LIST opencore-amr-devel || add_package ADDITIONAL_LIST libopencore-amr-devel || +echo "Optional package opencore-amr-devel|libopencore-amr-devel is unavailable" >&2 ACTUAL_LIST=$BASIC_LIST diff -Nru wireshark-4.4.14/tools/update-appdata.py wireshark-4.4.15/tools/update-appdata.py --- wireshark-4.4.14/tools/update-appdata.py 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/tools/update-appdata.py 2026-04-29 20:10:51.000000000 +0000 @@ -49,7 +49,7 @@ raise try: - ver_m = re.match('v(\d+\.\d+)\.(\d+)rc0.*', cur_rc0) + ver_m = re.match(r'v(\d+\.\d+)\.(\d+)rc0.*', cur_rc0) maj_min = ver_m.group(1) next_micro = ver_m.group(2) except Exception: diff -Nru wireshark-4.4.14/ui/qt/models/timeline_delegate.cpp wireshark-4.4.15/ui/qt/models/timeline_delegate.cpp --- wireshark-4.4.14/ui/qt/models/timeline_delegate.cpp 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/ui/qt/models/timeline_delegate.cpp 2026-04-29 20:10:51.000000000 +0000 @@ -49,7 +49,8 @@ if (tree) { QAbstractProxyModel * proxy = qobject_cast(tree->model()); if (proxy && proxy->sourceModel()) { - QModelIndex indexStart = proxy->mapFromSource(proxy->sourceModel()->index(0, span_px.colStart)); + QModelIndex sourceIndex = proxy->mapToSource(index); + QModelIndex indexStart = proxy->mapFromSource(sourceIndex.siblingAtColumn(span_px.colStart)); int colStart = -1; int start_px = 0; if (indexStart.isValid()) { @@ -58,7 +59,7 @@ } int colDuration = -1; int column_px = start_px; - QModelIndex indexDuration = proxy->mapFromSource(proxy->sourceModel()->index(0, span_px.colDuration)); + QModelIndex indexDuration = proxy->mapFromSource(sourceIndex.siblingAtColumn(span_px.colDuration)); if (indexDuration.isValid()) { colDuration = indexDuration.column(); column_px += tree->columnWidth(colDuration); diff -Nru wireshark-4.4.14/ui/qt/rtp_stream_dialog.cpp wireshark-4.4.15/ui/qt/rtp_stream_dialog.cpp --- wireshark-4.4.14/ui/qt/rtp_stream_dialog.cpp 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/ui/qt/rtp_stream_dialog.cpp 2026-04-29 20:10:51.000000000 +0000 @@ -84,10 +84,10 @@ class RtpStreamTreeWidgetItem : public QTreeWidgetItem { public: - RtpStreamTreeWidgetItem(QTreeWidget *tree, rtpstream_info_t *stream_info) : + RtpStreamTreeWidgetItem(QTreeWidget *tree, rtpstream_info_t *stream_info, bool tod) : QTreeWidgetItem(tree, rtp_stream_type_), stream_info_(stream_info), - tod_(0) + tod_(tod) { drawData(); } @@ -592,7 +592,7 @@ // Add any missing items while (cur_stream && cur_stream->data && to_insert_count) { rtpstream_info_t *stream_info = gxx_list_data(rtpstream_info_t*, cur_stream); - RtpStreamTreeWidgetItem *rsti = new RtpStreamTreeWidgetItem(ui->streamTreeWidget, stream_info); + RtpStreamTreeWidgetItem *rsti = new RtpStreamTreeWidgetItem(ui->streamTreeWidget, stream_info, ui->todCheckBox->isChecked()); cur_stream = gxx_list_next(cur_stream); to_insert_count--; diff -Nru wireshark-4.4.14/ui/qt/utils/wireshark_zip_helper.cpp wireshark-4.4.15/ui/qt/utils/wireshark_zip_helper.cpp --- wireshark-4.4.14/ui/qt/utils/wireshark_zip_helper.cpp 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/ui/qt/utils/wireshark_zip_helper.cpp 2026-04-29 20:10:51.000000000 +0000 @@ -86,6 +86,7 @@ return false; QMap cleanPaths; + QString canonicalDir = QFileInfo(di.path()).canonicalFilePath(); for (unsigned int cnt = 0; cnt < nmbr; cnt++) { @@ -112,6 +113,13 @@ continue; } +#ifndef _WIN32 + /* Reject paths outside the extraction root, to prevent directory traversal attacks on Posix systems */ + if (!QFileInfo(fileInZip).absoluteFilePath().startsWith(canonicalDir + "/")) { + continue; + } +#endif + if (di.exists()) { #ifdef _WIN32 diff -Nru wireshark-4.4.14/ui/qt/widgets/follow_stream_text.cpp wireshark-4.4.15/ui/qt/widgets/follow_stream_text.cpp --- wireshark-4.4.14/ui/qt/widgets/follow_stream_text.cpp 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/ui/qt/widgets/follow_stream_text.cpp 2026-04-29 20:10:51.000000000 +0000 @@ -31,7 +31,13 @@ setMouseTracking(true); // setMaximumBlockCount(1); QTextDocument *text_doc = document(); + /* https://qt-project.atlassian.net/browse/QTBUG-715 + * Zooming a Q[Plain]TextEdit uses the text edit's font, not + * the document's default font. Set both. (#21137) + * XXX - Should we pass true to monospaceFont so as to default + * to the zoomed size? (Cf. #13992) */ text_doc->setDefaultFont(mainApp->monospaceFont()); + setFont(mainApp->monospaceFont()); metainfo_fg_ = ColorUtils::alphaBlend(palette().windowText(), palette().window(), 0.35); } diff -Nru wireshark-4.4.14/ui/text_import.c wireshark-4.4.15/ui/text_import.c --- wireshark-4.4.14/ui/text_import.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/ui/text_import.c 2026-04-29 20:10:51.000000000 +0000 @@ -81,6 +81,8 @@ #include #include #include +#include +#include #include #include @@ -170,6 +172,7 @@ /* This is where we store the packet currently being built */ static uint8_t *packet_buf; +static Buffer prefix_buf; static uint32_t curr_offset; static uint32_t packet_start; static bool offset_warned; @@ -448,7 +451,6 @@ int proto_length = 0; int ip_length = 0; int eth_trailer_length = 0; - int prefix_index = 0; int i, padding_length; if (curr_offset > 0) { @@ -457,6 +459,8 @@ /* Is direction indication on with an inbound packet? */ bool isOutbound = has_direction && (direction == PACK_FLAGS_DIRECTION_OUTBOUND); + ws_buffer_clean(&prefix_buf); + /* Compute packet length */ prefix_length = 0; if (hdr_export_pdu) { @@ -480,9 +484,6 @@ } if (hdr_ethernet) { prefix_length += (int)sizeof(HDR_ETHERNET); } - /* Make room for dummy header */ - memmove(&packet_buf[prefix_length], packet_buf, curr_offset); - if (hdr_ethernet) { /* Pad trailer */ if (prefix_length + curr_offset < 60) { @@ -501,8 +502,7 @@ memcpy(HDR_ETHERNET.src_addr, hdr_eth_src_addr, 6); } HDR_ETHERNET.ethertype = g_htons(hdr_ethernet_proto); - memcpy(&packet_buf[prefix_index], &HDR_ETHERNET, sizeof(HDR_ETHERNET)); - prefix_index += (int)sizeof(HDR_ETHERNET); + ws_buffer_append(&prefix_buf, (uint8_t*)&HDR_ETHERNET, sizeof(HDR_ETHERNET)); } /* Write IP header */ @@ -523,8 +523,7 @@ cksum_vector[0].ptr = (uint8_t *)&HDR_IP; cksum_vector[0].len = sizeof(HDR_IP); HDR_IP.hdr_checksum = in_cksum(cksum_vector, 1); - memcpy(&packet_buf[prefix_index], &HDR_IP, sizeof(HDR_IP)); - prefix_index += (int)sizeof(HDR_IP); + ws_buffer_append(&prefix_buf, (uint8_t*)&HDR_IP, sizeof(HDR_IP)); /* initialize pseudo header for checksum calculation */ pseudoh.src_addr = HDR_IP.src_addr; @@ -550,8 +549,7 @@ HDR_IPv6.ip6_ctlun.ip6_un1.ip6_un1_nxt = (uint8_t) hdr_ip_proto; HDR_IPv6.ip6_ctlun.ip6_un1.ip6_un1_hlim = 32; - memcpy(&packet_buf[prefix_index], &HDR_IPv6, sizeof(HDR_IPv6)); - prefix_index += (int)sizeof(HDR_IPv6); + ws_buffer_append(&prefix_buf, (uint8_t*)&HDR_IPv6, sizeof(HDR_IPv6)); /* initialize pseudo ipv6 header for checksum calculation */ pseudoh6.src_addr6 = HDR_IPv6.ip6_src; @@ -576,11 +574,10 @@ cksum_vector[0].ptr = (uint8_t *)&pseudoh; cksum_vector[0].len = sizeof(pseudoh); } cksum_vector[1].ptr = (uint8_t *)&HDR_UDP; cksum_vector[1].len = sizeof(HDR_UDP); - cksum_vector[2].ptr = &packet_buf[prefix_length]; cksum_vector[2].len = curr_offset; + cksum_vector[2].ptr = packet_buf; cksum_vector[2].len = curr_offset; HDR_UDP.checksum = in_cksum(cksum_vector, 3); - memcpy(&packet_buf[prefix_index], &HDR_UDP, sizeof(HDR_UDP)); - prefix_index += (int)sizeof(HDR_UDP); + ws_buffer_append(&prefix_buf, (uint8_t*)&HDR_UDP, sizeof(HDR_UDP)); } /* Write TCP header */ @@ -609,11 +606,10 @@ cksum_vector[0].ptr = (uint8_t *)&pseudoh; cksum_vector[0].len = sizeof(pseudoh); } cksum_vector[1].ptr = (uint8_t *)&HDR_TCP; cksum_vector[1].len = sizeof(HDR_TCP); - cksum_vector[2].ptr = &packet_buf[prefix_length]; cksum_vector[2].len = curr_offset; + cksum_vector[2].ptr = packet_buf; cksum_vector[2].len = curr_offset; HDR_TCP.checksum = in_cksum(cksum_vector, 3); - memcpy(&packet_buf[prefix_index], &HDR_TCP, sizeof(HDR_TCP)); - prefix_index += (int)sizeof(HDR_TCP); + ws_buffer_append(&prefix_buf, (uint8_t*)&HDR_TCP, sizeof(HDR_TCP)); if (isOutbound) { tcp_in_seq_num = g_ntohl(tcp_in_seq_num) + curr_offset; tcp_in_seq_num = g_htonl(tcp_in_seq_num); @@ -646,7 +642,7 @@ } padding_length = number_of_padding_bytes(curr_offset); for (i=0; ipayload); HDR_EXPORT_PDU.tag_type = g_htons(EXP_PDU_TAG_DISSECTOR_NAME); HDR_EXPORT_PDU.payload_len = g_htons(payload_len); - memcpy(&packet_buf[prefix_index], &HDR_EXPORT_PDU, sizeof(HDR_EXPORT_PDU)); - prefix_index += sizeof(HDR_EXPORT_PDU); - memcpy(&packet_buf[prefix_index], info_p->payload, payload_len); - prefix_index += payload_len; + ws_buffer_append(&prefix_buf, (uint8_t*)&HDR_EXPORT_PDU, sizeof(HDR_EXPORT_PDU)); + ws_buffer_append(&prefix_buf, (uint8_t*)info_p->payload, payload_len); /* Add end-of-options tag */ - memset(&packet_buf[prefix_index], 0x00, 4); - } - - /* Write Ethernet trailer */ - if (hdr_ethernet && eth_trailer_length > 0) { - memset(&packet_buf[prefix_length+curr_offset], 0, eth_trailer_length); + ws_buffer_assure_space(&prefix_buf, 4); + memset(ws_buffer_end_ptr(&prefix_buf), 0x00, 4); + ws_buffer_increase_length(&prefix_buf, 4); } HDR_TCP.seq_num = g_ntohl(HDR_TCP.seq_num) + curr_offset; @@ -698,7 +687,9 @@ int err; char *err_info; - memset(&rec, 0, sizeof rec); + ws_assert(prefix_length == (int)ws_buffer_length(&prefix_buf)); + + wtap_rec_init(&rec); if (info_p->encapsulation == WTAP_ENCAP_SYSTEMD_JOURNAL) { rec.rec_type = REC_TYPE_SYSTEMD_JOURNAL_EXPORT; @@ -728,7 +719,15 @@ } } - if (!wtap_dump(info_p->wdh, &rec, packet_buf, &err, &err_info)) { + ws_buffer_append(&prefix_buf, packet_buf, curr_offset); + /* Write Ethernet trailer */ + if (hdr_ethernet && eth_trailer_length > 0) { + ws_buffer_assure_space(&prefix_buf, eth_trailer_length); + memset(ws_buffer_end_ptr(&prefix_buf), 0, eth_trailer_length); + ws_buffer_increase_length(&prefix_buf, eth_trailer_length); + } + + if (!wtap_dump(info_p->wdh, &rec, ws_buffer_start_ptr(&prefix_buf), &err, &err_info)) { report_cfile_write_failure(info_p->import_text_filename, info_p->output_filename, err, err_info, info_p->num_packets_read, @@ -1146,9 +1145,14 @@ } void parse_seqno(const unsigned char* start_field, const unsigned char* end_field) { - char* buf = (char*) g_alloca(end_field - start_field + 1); - (void) g_strlcpy(buf, start_field, end_field - start_field + 1); - seqno = g_ascii_strtoull(buf, NULL, 10); + /* Note the start and end are from g_match_info_fetch_named_pos(); the end + * position is the byte after the final byte of the match, so no adding 1. + */ + if (!ws_buftou64(start_field, end_field - start_field, NULL, &seqno)) { + const char* errstr = g_strerror(errno); + report_warning("seqno parsing failed (%s)", errstr); + ws_warning("seqno parsing failed for input packet %d (%s).", info_p->num_packets_read, errstr); + } } void flush_packet(void) { @@ -1579,6 +1583,12 @@ /* Get input parameters. */ info_p = info; + if (info_p->max_frame_length > WTAP_MAX_PACKET_SIZE_STANDARD) { + /* Our callers should guarantee this. */ + report_failure("max frame length too large (%u > %u)", info_p->max_frame_length, WTAP_MAX_PACKET_SIZE_STANDARD); + return WS_EXIT_INIT_FAILED; + } + /* Dummy headers */ hdr_ethernet = false; hdr_ip = false; @@ -1713,9 +1723,9 @@ info->num_packets_read = 0; info->num_packets_written = 0; - packet_buf = (uint8_t *)g_malloc(sizeof(HDR_ETHERNET) + sizeof(HDR_IP) + - sizeof(HDR_SCTP) + sizeof(HDR_DATA_CHUNK) + - sizeof(HDR_EXPORT_PDU) + WTAP_MAX_PACKET_SIZE_STANDARD); + packet_buf = (uint8_t *)g_malloc(WTAP_MAX_PACKET_SIZE_STANDARD); + + ws_buffer_init(&prefix_buf, 2048); if (!packet_buf) { @@ -1754,6 +1764,7 @@ ret = WS_EXIT_INVALID_OPTION; } g_free(packet_buf); + ws_buffer_free(&prefix_buf); return ret; } diff -Nru wireshark-4.4.14/wiretap/CMakeLists.txt wireshark-4.4.15/wiretap/CMakeLists.txt --- wireshark-4.4.14/wiretap/CMakeLists.txt 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/wiretap/CMakeLists.txt 2026-04-29 20:10:51.000000000 +0000 @@ -178,7 +178,7 @@ PREFIX "lib" COMPILE_DEFINITIONS "WS_BUILD_DLL" LINK_FLAGS "${WS_LINK_FLAGS}" - VERSION "15.0.14" SOVERSION 15 + VERSION "15.0.15" SOVERSION 15 FOLDER "DLLs" INSTALL_RPATH "${LIBRARY_INSTALL_RPATH}" ) diff -Nru wireshark-4.4.14/wiretap/k12.c wireshark-4.4.15/wiretap/k12.c --- wireshark-4.4.14/wiretap/k12.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/wiretap/k12.c 2026-04-29 20:10:51.000000000 +0000 @@ -200,6 +200,14 @@ #define K12_FILE_HDR_RECORD_COUNT_2 0x2C #define K12_FILE_BLOB_LEN 16 + /* + * Where the next unknown 16 bytes are stuffed to the file. + * Following the file header, they appear every 8192 bytes, + * starting right after the file header, so if the file offset + * relative to the file header is a multiple of 8192, the + * 16-byte blob is there. + */ +#define K12_RECORD_SIZE 8192 typedef struct { uint32_t file_len; @@ -1155,13 +1163,10 @@ return true; } -static void k12_dump_src_setting(void *k _U_, void *v, void *p) { - k12_src_desc_t* src_desc = (k12_src_desc_t*)v; - wtap_dumper *wdh = (wtap_dumper *)p; +static bool k12_dump_src_setting(k12_src_desc_t *src_desc, wtap_dumper *wdh, int *err, char **err_info) { uint32_t len; unsigned offset; unsigned i; - int errxxx; /* dummy */ union { uint8_t buffer[8192]; @@ -1245,6 +1250,15 @@ break; } + size_t total_len = (size_t)offset + obj.record.name_len + obj.record.stack_len; + + if (total_len > K12_RECORD_SIZE) { + *err = WTAP_ERR_UNWRITABLE_REC_DATA; + *err_info = ws_strdup_printf("k12: source descriptor record length %zu > %u", + total_len, K12_RECORD_SIZE); + return false; + } + memcpy(obj.buffer + offset, src_desc->input_name, obj.record.name_len); @@ -1260,7 +1274,7 @@ obj.record.name_len = g_htons(obj.record.name_len); obj.record.stack_len = g_htons(obj.record.stack_len); - k12_dump_record(wdh,len,obj.buffer, &errxxx); /* fwrite errs ignored: see k12_dump below */ + return k12_dump_record(wdh,len,obj.buffer, err); } static bool k12_dump(wtap_dumper *wdh, const wtap_rec *rec, @@ -1301,12 +1315,16 @@ if (k12->num_of_records == 0) { k12_t* file_data = (k12_t*)pseudo_header->k12.stuff; - /* XXX: We'll assume that any fwrite errors in k12_dump_src_setting will */ - /* repeat during the final k12_dump_record at the end of k12_dump */ - /* (and thus cause an error return from k12_dump). */ - /* (I don't see a reasonably clean way to handle any fwrite errors */ - /* encountered in k12_dump_src_setting). */ - g_hash_table_foreach(file_data->src_by_id,k12_dump_src_setting,wdh); + GHashTableIter iter; + void *value; + k12_src_desc_t *src_desc; + g_hash_table_iter_init(&iter, file_data->src_by_id); + while (g_hash_table_iter_next(&iter, NULL, &value)) { + src_desc = (k12_src_desc_t*)value; + if (!k12_dump_src_setting(src_desc, wdh, err, err_info)) { + return false; + } + } } obj.record.len = 0x20 + rec->rec_header.packet_header.caplen; obj.record.len += (obj.record.len % 4) ? 4 - obj.record.len % 4 : 0; diff -Nru wireshark-4.4.14/wiretap/netxray.c wireshark-4.4.15/wiretap/netxray.c --- wireshark-4.4.14/wiretap/netxray.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/wiretap/netxray.c 2026-04-29 20:10:51.000000000 +0000 @@ -1635,6 +1635,9 @@ * doesn't see it. */ packet_size = pletoh16(&hdr.old_hdr.len); + if (packet_size < padding) { + padding = packet_size; + } rec->rec_header.packet_header.caplen = packet_size - padding; rec->rec_header.packet_header.len = rec->rec_header.packet_header.caplen; } else { @@ -1651,6 +1654,9 @@ * doesn't see it. */ packet_size = pletoh16(&hdr.hdr_1_x.incl_len); + if (packet_size < padding) { + padding = packet_size; + } rec->rec_header.packet_header.caplen = packet_size - padding; rec->rec_header.packet_header.len = pletoh16(&hdr.hdr_1_x.orig_len) - padding; } diff -Nru wireshark-4.4.14/wiretap/toshiba.c wireshark-4.4.15/wiretap/toshiba.c --- wireshark-4.4.14/wiretap/toshiba.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/wiretap/toshiba.c 2026-04-29 20:10:51.000000000 +0000 @@ -14,6 +14,8 @@ #include #include +#include + /* This module reads the output of the 'snoop' command in the Toshiba * TR-600 and TR-650 "Compact" ISDN Routers. You can telnet to the * router and run 'snoop' on the different channels, and at different @@ -91,7 +93,7 @@ static bool toshiba_seek_read(wtap *wth, int64_t seek_off, wtap_rec *rec, Buffer *buf, int *err, char **err_info); static bool parse_single_hex_dump_line(char* rec, uint8_t *buf, - unsigned byte_offset); + unsigned byte_offset, unsigned remaining_groups); static bool parse_toshiba_packet(FILE_T fh, wtap_rec *rec, Buffer *buf, int *err, char **err_info); @@ -343,7 +345,9 @@ } /* Make sure we have enough room for the packet */ - ws_buffer_assure_space(buf, pkt_len); + /* Round up because the format writes in groups of 2 bytes (4 hex). */ + unsigned rounded_len = WS_ROUNDUP_2(pkt_len); + ws_buffer_assure_space(buf, rounded_len); pd = ws_buffer_start_ptr(buf); /* Calculate the number of hex dump lines, each @@ -358,7 +362,7 @@ } return false; } - if (!parse_single_hex_dump_line(line, pd, i * 16)) { + if (!parse_single_hex_dump_line(line, pd, i * 16, rounded_len/2 - i * 8)) { *err = WTAP_ERR_BAD_FILE; *err_info = g_strdup("toshiba: hex dump not valid"); return false; @@ -372,11 +376,10 @@ 0123456789012345678901234567890123456789012345 0000 : FF03 003D C000 0008 2145 0000 3A12 6500 ...=....!E..:.e. 0010 : 003F 11E6 58CF C11A 8897 A401 0804 0400 .?..X........... -0020 : 0100 01 ... +0020 : 0100 0100 .... */ #define START_POS 7 -#define HEX_LENGTH ((8 * 4) + 7) /* eight clumps of 4 bytes with 7 inner spaces */ /* Take a string representing one line from a hex dump and converts the * text to binary data. We check the printed offset with the offset @@ -388,12 +391,26 @@ * Returns true if good hex dump, false if bad. */ static bool -parse_single_hex_dump_line(char* rec, uint8_t *buf, unsigned byte_offset) { +parse_single_hex_dump_line(char* rec, uint8_t *buf, unsigned byte_offset, unsigned remaining_groups) { - int pos, i; + unsigned pos, i; char *s; unsigned long value; - uint16_t word_value; + uint16_t word_value; + unsigned hex_len; + + if (remaining_groups > 8) { + remaining_groups = 8; + } + + /* Samples of the format show that it always writes groups of 4 hex + * characters; when the number of bytes in the packet is odd, 00 is + * placed at the end of the last group, so there should be 4 bytes + * plus a space for each group except the last can end with '\0'. */ + hex_len = remaining_groups*5 - 1; + if (strlen(rec) < START_POS + hex_len) { + return false; + } /* Get the byte_offset directly from the record */ rec[4] = '\0'; @@ -411,14 +428,14 @@ * Then read the eight sets of hex bytes */ - for (pos = START_POS; pos < START_POS + HEX_LENGTH; pos++) { + for (pos = START_POS; pos < START_POS + hex_len; pos++) { if (rec[pos] == ' ') { rec[pos] = '0'; } } pos = START_POS; - for (i = 0; i < 8; i++) { + for (i = 0; i < remaining_groups; i++) { rec[pos+4] = '\0'; word_value = (uint16_t) strtoul(&rec[pos], NULL, 16); diff -Nru wireshark-4.4.14/wsutil/buffer.c wireshark-4.4.15/wsutil/buffer.c --- wireshark-4.4.14/wsutil/buffer.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/wsutil/buffer.c 2026-04-29 20:10:51.000000000 +0000 @@ -143,6 +143,8 @@ { ws_assert(buffer); buffer->first_free += bytes; + /* Did the caller remember to call ws_buffer_assure_space first? */ + ws_assert(buffer->first_free <= buffer->allocated); } #endif diff -Nru wireshark-4.4.14/wsutil/str_util.c wireshark-4.4.15/wsutil/str_util.c --- wireshark-4.4.14/wsutil/str_util.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/wsutil/str_util.c 2026-04-29 20:10:51.000000000 +0000 @@ -863,7 +863,11 @@ * adds at least another 128 bytes, which is more than enough \ * for one more character plus a terminating '\0'. \ */ \ - fmtbuf_len *= 2; \ + if (ckd_mul(&fmtbuf_len, fmtbuf_len, 2)) { \ + ws_debug("overflow!"); \ + FMTBUF_ENDSTR; \ + return fmtbuf; \ + } \ fmtbuf = (char *)wmem_realloc(allocator, fmtbuf, fmtbuf_len); \ } diff -Nru wireshark-4.4.14/wsutil/strtoi.c wireshark-4.4.15/wsutil/strtoi.c --- wireshark-4.4.14/wsutil/strtoi.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/wsutil/strtoi.c 2026-04-29 20:10:51.000000000 +0000 @@ -292,6 +292,162 @@ return ws_basestrtou(str, endptr, cint, 16); } +bool ws_basebuftou64(const uint8_t* buf, size_t len, const uint8_t** endptr, uint64_t* cint, int base) +{ + /* This code is dervied from the g_parse_long_long code from GLib + * which itself is derived from the strtol(3) code from GNU libc + * (and, thus, GNUlib), both released under the GNU Lesser General + * Public License v 2.1, opting to apply the terms of the ordinarly + * GNU General Public License, version 2, as allowed under section + * 3 of that license. + * + * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald + * Copyright (C) 1991,92,94,95,96,97,98,99,2000,01,02 + * Free Software Foundation, Inc. + */ + const uint8_t *save; + const uint8_t *end = buf; + const uint8_t *hex_x = NULL; + uint64_t val, cutoff, cutlim; + unsigned char c; + bool overflow = false; + + ws_assert(cint); + + if (!buf) { +#ifdef WS_ASSERT_ENABLED + ws_warn_badarg("!buf"); +#endif + errno = EINVAL; + return false; + } + + if (buf[0] == '\0' || buf[0] == '-' || buf[0] == '+') { + /* + * Unsigned numbers don't have a sign. + */ + *cint = 0; + if (endptr != NULL) + *endptr = buf; + errno = EINVAL; + return false; + } + + if (len == 0 || base == 1 || base > 36) { + *cint = 0; + if (endptr != NULL) + *endptr = buf; + errno = EINVAL; + return false; + } + + /* Skip white space (we could not) */ + while (g_ascii_isspace(*end)) { + ++end; + if (--len == 0) { + *cint = 0; + if (endptr != NULL) + *endptr = buf; + errno = EINVAL; + return false; + } + } + + if (*end == '0') { + if ((len > 1) && (base == 0 || base == 16) && g_ascii_toupper(end[1]) == 'X') { + hex_x = &end[1]; + end += 2; + len -= 2; + base = 16; + } else if (base == 0) { + base = 8; + } + } else if (base == 0) { + base = 10; + } + + save = end; + cutoff = UINT64_MAX / base; + cutlim = UINT64_MAX % base; + + val = 0; + for (; len; --len) { + c = *end; + if (c >= '0' && c <= '9') { + c -= '0'; + } else if (g_ascii_isalpha(c)) { + c = g_ascii_toupper(c) - 'A' + 10; + } else { + break; + } + if (c >= base) { + break; + } + end++; + /* Check for overflow */ + if (val > cutoff || (val == cutoff && c > cutlim)) { + overflow = true; + if (endptr == NULL) { + /* If we don't care about the end, just stop */ + *cint = UINT64_MAX; + errno = ERANGE; + return false; + } + } else { + val *= base; + val += c; + } + } + + if (end == save) { + /* no conversion. We call that failure, except for the + * corner case of base 0 or 16 and starting with "0x", + * which converts to 0 and first invalid is the "x". */ + *cint = 0; + if (endptr != NULL) { + if (hex_x) { + *endptr = hex_x; + return true; + } + *endptr = buf; + } + errno = EINVAL; + return false; + } + + if (len && endptr == NULL) { + *cint = 0; + errno = EINVAL; + return false; + } + + if (endptr != NULL) { + /* This can point one past the end if fully converted; that is legal + * in C, but cannot be dereferenced. The caller should have enough + * information to know not to dereference it in that case. */ + *endptr = end; + } + + if (G_UNLIKELY(overflow)) { + *cint = UINT64_MAX; + errno = ERANGE; + return false; + } + + *cint = val; + return true; +} + +bool ws_buftou64(const uint8_t* buf, size_t len, const uint8_t** endptr, uint64_t* cint) +{ + return ws_basebuftou64(buf, len, endptr, cint, 10); +} + +bool ws_hexbuftou64(const uint8_t* buf, size_t len, const uint8_t** endptr, uint64_t* cint) +{ + return ws_basebuftou64(buf, len, endptr, cint, 16); +} + /* * Editor modelines - https://www.wireshark.org/tools/modelines.html * diff -Nru wireshark-4.4.14/wsutil/strtoi.h wireshark-4.4.15/wsutil/strtoi.h --- wireshark-4.4.14/wsutil/strtoi.h 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/wsutil/strtoi.h 2026-04-29 20:10:51.000000000 +0000 @@ -88,6 +88,76 @@ WS_DLL_PUBLIC bool ws_basestrtou8 (const char* str, const char** endptr, uint8_t* cint, int base); WS_DLL_PUBLIC bool ws_basestrtou (const char* str, const char** endptr, unsigned* cint, int base); +/* + * @brief Convert a counted string (not necessarily null terminated, of the + * given length) in the specified base to an unsigned 64-bit integer, with + * error checks. + * + * @param buf The string buffer to convert + * @param len The length of the string + * @param endptr A pointer that will store a pointer to the first invalid + * character in str, allowing a number to be parsed even if there is trailing + * whitespace. If NULL, then the string is assumed to contain only valid + * characters (or it will error out). + * @param cint The converted integer + * @param base The base for the integer; 0 means "if it begins with 0x, + * it's hex, otherwise if it begins with 0, it's octal, otherwise it's + * decimal". + * @return true if the conversion succeeds, false otherwise. + * On error, errno is set to EINVAL for unrecognized input and ERANGE + * if the resulting number does not fit in the type. + * + * @note This is useful when a string representation of an integer is not + * null-terminated and also cannot be modified to insert a NULL (e.g., + * a const uint8_t* from packet data), avoiding having to copy the string. + * This does not allow a sign, neither '+' nor '-', prefixing the string, + * unlike strtoull and g_ascii_strtoull. (The latter allow a negative sign + * and cast to unsigned in the normal way.) + */ +WS_DLL_PUBLIC bool ws_basebuftou64(const uint8_t* buf, size_t len, const uint8_t** endptr, uint64_t* cint, int base); + +/* + * @brief Convert a counted decimal string (not necessarily null terminated, + * of the given length) to an unsigned 64-bit integer, with error checks. + * + * @param buf The string buffer to convert + * @param len The length of the string + * @param endptr A pointer that will store a pointer to the first invalid + * character in str, allowing a number to be parsed even if there is trailing + * whitespace. If NULL, then the string is assumed to contain only valid + * characters (or it will error out). + * @param cint The converted integer + * @return true if the conversion succeeds, false otherwise. + * On error, errno is set to EINVAL for unrecognized input and ERANGE + * if the resulting number does not fit in the type. + * + * @note This does not allow a sign, neither '+' nor '-', prefixing the string, + * unlike strtoull and g_ascii_strtoull. (The latter allow a negative sign + * and cast to unsigned in the normal way.) + */ +WS_DLL_PUBLIC bool ws_buftou64(const uint8_t* buf, size_t len, const uint8_t** endptr, uint64_t* cint); + +/* + * @brief Convert a counted hexadecimal string (not necessarily null terminated, + * of the given length) to an unsigned 64-bit integer, with error checks. + * + * @param buf The string buffer to convert + * @param len The length of the string + * @param endptr A pointer that will store a pointer to the first invalid + * character in str, allowing a number to be parsed even if there is trailing + * whitespace. If NULL, then the string is assumed to contain only valid + * characters (or it will error out). + * @param cint The converted integer + * @return true if the conversion succeeds, false otherwise. + * On error, errno is set to EINVAL for unrecognized input and ERANGE + * if the resulting number does not fit in the type. + * + * @note This does not allow a sign, neither '+' nor '-', prefixing the string, + * unlike strtoull and g_ascii_strtoull. (The latter allow a negative sign + * and cast to unsigned in the normal way.) + */ +WS_DLL_PUBLIC bool ws_hexbuftou64(const uint8_t* buf, size_t len, const uint8_t** endptr, uint64_t* cint); + #ifdef __cplusplus } #endif /* __cplusplus */ diff -Nru wireshark-4.4.14/wsutil/test_wsutil.c wireshark-4.4.15/wsutil/test_wsutil.c --- wireshark-4.4.14/wsutil/test_wsutil.c 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/wsutil/test_wsutil.c 2026-04-29 20:10:51.000000000 +0000 @@ -836,6 +836,140 @@ g_test_trap_assert_stderr("/bin/ls: unrecognized option: z\n"); } +#include + +static void +test_uint64(const uint8_t *str, size_t len, const uint8_t *end, int base, bool result, uint64_t value, int err) +{ + uint64_t cint; + const uint8_t *endp; + int error; + + errno = 0; + bool res = ws_basebuftou64(str, len, end ? &endp : NULL, &cint, base); + error = errno; + + g_assert_true(res == result); + g_assert_cmpstr(g_strerror(error), ==, g_strerror(err)); + if (base == 16) { + g_assert_cmphex(cint, ==, value); + } else { + g_assert_cmpuint(cint, ==, value); + } + if (end) { + g_assert_true(endp == end); + } +} + +static void test_ws_basebuftou64(void) +{ + WS_NONSTRING const uint8_t teststr[7] = "00123\0004"; + + /* Leading zeroes are fine when base 10 or 16 is specified. */ + test_uint64(teststr, 5, NULL, 10, true, 123, 0); + test_uint64(teststr, 5, NULL, 16, true, 0x123, 0); + + /* But means octal when base 0 is specified. */ + test_uint64(teststr, 5, NULL, 8, true, 83, 0); + test_uint64(teststr, 5, NULL, 0, true, 83, 0); + + /* Truncating before the NULL truncates. */ + test_uint64(teststr, 4, NULL, 10, true, 12, 0); + + /* Including the NULL or later results in false. */ + test_uint64(teststr, 6, NULL, 10, false, 0, EINVAL); + test_uint64(teststr, 7, NULL, 10, false, 0, EINVAL); + + /* UINT64_MAX is the largest value that can be returned. */ + WS_NONSTRING uint8_t uintmaxstr[20] = "18446744073709551615"; + test_uint64(uintmaxstr, 20, NULL, 10, true, UINT64_MAX, 0); + uintmaxstr[19]++; + test_uint64(uintmaxstr, 20, NULL, 10, false, UINT64_MAX, ERANGE); + + /* No trailing whitespace when end is NULL. */ + uintmaxstr[19] = ' '; + test_uint64(uintmaxstr, 20, NULL, 10, false, 0, EINVAL); + + /* No signs allowed. */ + test_uint64((const uint8_t*)"-1", 2, NULL, 10, false, 0, EINVAL); + test_uint64((const uint8_t*)"+1", 2, NULL, 10, false, 0, EINVAL); + + /* This is allowed to break early when end is NULL */ + WS_NONSTRING const uint8_t longstr[30] = "123456789012345678901234567890"; + test_uint64(longstr, 30, NULL, 10, false, UINT64_MAX, ERANGE); +} + +static void test_ws_basebuftou64_end(void) +{ + WS_NONSTRING const uint8_t teststr[7] = "00123\0004"; + + /* Leading zeroes are fine when base 10 or 16 is specified. */ + test_uint64(teststr, 5, &teststr[5], 10, true, 123, 0); + test_uint64(teststr, 5, &teststr[5], 16, true, 0x123, 0); + + /* But means octal when base 0 is specified. */ + test_uint64(teststr, 5, &teststr[5], 8, true, 83, 0); + test_uint64(teststr, 5, &teststr[5], 0, true, 83, 0); + + /* Truncating before the NULL truncates. */ + test_uint64(teststr, 4, &teststr[4], 10, true, 12, 0); + + /* Including the NULL or later results in true, pointing to it. */ + test_uint64(teststr, 6, &teststr[5], 10, true, 123, 0); + test_uint64(teststr, 7, &teststr[5], 10, true, 123, 0); + + /* UINT64_MAX is the largest value that can be returned. */ + WS_NONSTRING uint8_t uintmaxstr[20] = "18446744073709551615"; + /* Yes, we can point to this address (C standard 6.5.6), so long as + * we don't dereference. &uintmaxstr[20] should be legal (6.5.3.2), + * though Coverity has sometimes complained. */ + test_uint64(uintmaxstr, 20, uintmaxstr + 20, 10, true, UINT64_MAX, 0); + uintmaxstr[19]++; + test_uint64(uintmaxstr, 20, uintmaxstr + 20, 10, false, UINT64_MAX, ERANGE); + + /* Trailing whitespace is OK when end is specified. */ + uintmaxstr[19] = ' '; + test_uint64(uintmaxstr, 20, &uintmaxstr[19], 10, true, UINT64_MAX/10, 0); + + /* No signs allowed. */ + test_uint64((const uint8_t*)"-1", 2, NULL, 10, false, 0, EINVAL); + test_uint64((const uint8_t*)"+1", 2, NULL, 10, false, 0, EINVAL); + + /* Go all the way to the end for very long strings when end != NULL */ + WS_NONSTRING const uint8_t longstr[30] = "123456789012345678901234567890"; + test_uint64(longstr, 30, longstr + 30, 10, false, UINT64_MAX, ERANGE); +} + +static void test_ws_hexbuftou64(void) +{ + WS_NONSTRING uint8_t hexstr[13] = "0x1234abcdefg"; + + /* Not decimal */ + test_uint64(hexstr, 8, NULL, 10, false, 0, EINVAL); + test_uint64(&hexstr[2], 8, NULL, 10, false, 0, EINVAL); + + /* Specifying base 16 works with or without the 0x */ + test_uint64(hexstr, 12, NULL, 16, true, 0x1234abcdef, 0); + test_uint64(&hexstr[2], 10, NULL, 16, true, 0x1234abcdef, 0); + + /* But base 0 only works with the prefix. */ + test_uint64(hexstr, 12, NULL, 0, true, 0x1234abcdef, 0); + test_uint64(&hexstr[2], 12, NULL, 0, false, 0, EINVAL); + + /* Upper case is also fine. */ + hexstr[1] = 'X'; + hexstr[6] = 'A'; + test_uint64(hexstr, 12, NULL, 16, true, 0x1234abcdef, 0); + + /* The tricky edge case "0X" doesn't work with a NULL end. */ + test_uint64(hexstr, 2, NULL, 16, false, 0, EINVAL); + test_uint64(hexstr, 2, NULL, 0, false, 0, EINVAL); + + /* But it does with a non-NULL end, returning 0 and pointing end to x. */ + test_uint64(hexstr, 2, &hexstr[1], 16, true, 0, 0); + test_uint64(hexstr, 2, &hexstr[1], 0, true, 0, 0); +} + int main(int argc, char **argv) { int ret; @@ -886,6 +1020,10 @@ g_test_add_func("/ws_getopt/optional1", test_getopt_optional_argument1); g_test_add_func("/ws_getopt/opterr1", test_getopt_opterr1); + g_test_add_func("/strtoi/basebuftou64", test_ws_basebuftou64); + g_test_add_func("/strtoi/basebuftou64_end", test_ws_basebuftou64_end); + g_test_add_func("/strtoi/hexbuftou64", test_ws_hexbuftou64); + ret = g_test_run(); return ret; diff -Nru wireshark-4.4.14/wsutil/wmem/wmem_array.h wireshark-4.4.15/wsutil/wmem/wmem_array.h --- wireshark-4.4.14/wsutil/wmem/wmem_array.h 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/wsutil/wmem/wmem_array.h 2026-04-29 20:10:51.000000000 +0000 @@ -37,13 +37,11 @@ WS_DLL_PUBLIC wmem_array_t * wmem_array_sized_new(wmem_allocator_t *allocator, size_t elem_size, - unsigned alloc_count) -G_GNUC_MALLOC; + unsigned alloc_count); WS_DLL_PUBLIC wmem_array_t * -wmem_array_new(wmem_allocator_t *allocator, const size_t elem_size) -G_GNUC_MALLOC; +wmem_array_new(wmem_allocator_t *allocator, const size_t elem_size); WS_DLL_PUBLIC void diff -Nru wireshark-4.4.14/wsutil/wmem/wmem_interval_tree.h wireshark-4.4.15/wsutil/wmem/wmem_interval_tree.h --- wireshark-4.4.14/wsutil/wmem/wmem_interval_tree.h 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/wsutil/wmem/wmem_interval_tree.h 2026-04-29 20:10:51.000000000 +0000 @@ -44,8 +44,7 @@ WS_DLL_PUBLIC wmem_itree_t * -wmem_itree_new(wmem_allocator_t *allocator) -G_GNUC_MALLOC; +wmem_itree_new(wmem_allocator_t *allocator); /** Returns true if the tree is empty (has no nodes). */ diff -Nru wireshark-4.4.14/wsutil/wmem/wmem_list.h wireshark-4.4.15/wsutil/wmem/wmem_list.h --- wireshark-4.4.14/wsutil/wmem/wmem_list.h 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/wsutil/wmem/wmem_list.h 2026-04-29 20:10:51.000000000 +0000 @@ -101,8 +101,7 @@ WS_DLL_PUBLIC wmem_list_t * -wmem_list_new(wmem_allocator_t *allocator) -G_GNUC_MALLOC; +wmem_list_new(wmem_allocator_t *allocator); WS_DLL_PUBLIC void diff -Nru wireshark-4.4.14/wsutil/wmem/wmem_map.h wireshark-4.4.15/wsutil/wmem/wmem_map.h --- wireshark-4.4.14/wsutil/wmem/wmem_map.h 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/wsutil/wmem/wmem_map.h 2026-04-29 20:10:51.000000000 +0000 @@ -56,8 +56,7 @@ WS_DLL_PUBLIC wmem_map_t * wmem_map_new(wmem_allocator_t *allocator, - GHashFunc hash_func, GEqualFunc eql_func) -G_GNUC_MALLOC; + GHashFunc hash_func, GEqualFunc eql_func); /** Creates a map with two allocator scopes. The base structure lives in the * metadata scope, and the map data lives in the data scope. Every time free_all @@ -74,8 +73,7 @@ WS_DLL_PUBLIC wmem_map_t * wmem_map_new_autoreset(wmem_allocator_t *metadata_scope, wmem_allocator_t *data_scope, - GHashFunc hash_func, GEqualFunc eql_func) -G_GNUC_MALLOC; + GHashFunc hash_func, GEqualFunc eql_func); /** Inserts a value into the map. * diff -Nru wireshark-4.4.14/wsutil/wmem/wmem_multimap.h wireshark-4.4.15/wsutil/wmem/wmem_multimap.h --- wireshark-4.4.14/wsutil/wmem/wmem_multimap.h 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/wsutil/wmem/wmem_multimap.h 2026-04-29 20:10:51.000000000 +0000 @@ -61,8 +61,7 @@ WS_DLL_PUBLIC wmem_multimap_t * wmem_multimap_new(wmem_allocator_t *allocator, - GHashFunc hash_func, GEqualFunc eql_func) -G_GNUC_MALLOC; + GHashFunc hash_func, GEqualFunc eql_func); /** Creates a multimap with two allocator scopes. The base structure lives in the * metadata scope, and the map data lives in the data scope. Every time free_all @@ -79,8 +78,7 @@ WS_DLL_PUBLIC wmem_multimap_t * wmem_multimap_new_autoreset(wmem_allocator_t *metadata_scope, wmem_allocator_t *data_scope, - GHashFunc hash_func, GEqualFunc eql_func) -G_GNUC_MALLOC; + GHashFunc hash_func, GEqualFunc eql_func); /** Retrieves a list of the keys inside the multimap * diff -Nru wireshark-4.4.14/wsutil/wmem/wmem_strbuf.h wireshark-4.4.15/wsutil/wmem/wmem_strbuf.h --- wireshark-4.4.14/wsutil/wmem/wmem_strbuf.h 2026-02-25 17:40:04.000000000 +0000 +++ wireshark-4.4.15/wsutil/wmem/wmem_strbuf.h 2026-04-29 20:10:51.000000000 +0000 @@ -53,26 +53,22 @@ WS_DLL_PUBLIC wmem_strbuf_t * -wmem_strbuf_new_sized(wmem_allocator_t *allocator, size_t alloc_size) -G_GNUC_MALLOC; +wmem_strbuf_new_sized(wmem_allocator_t *allocator, size_t alloc_size); WS_DLL_PUBLIC wmem_strbuf_t * -wmem_strbuf_new(wmem_allocator_t *allocator, const char *str) -G_GNUC_MALLOC; +wmem_strbuf_new(wmem_allocator_t *allocator, const char *str); #define wmem_strbuf_create(allocator) \ wmem_strbuf_new(allocator, "") WS_DLL_PUBLIC wmem_strbuf_t * -wmem_strbuf_new_len(wmem_allocator_t *allocator, const char *str, size_t len) -G_GNUC_MALLOC; +wmem_strbuf_new_len(wmem_allocator_t *allocator, const char *str, size_t len); WS_DLL_PUBLIC wmem_strbuf_t * -wmem_strbuf_dup(wmem_allocator_t *allocator, const wmem_strbuf_t *strbuf) -G_GNUC_MALLOC; +wmem_strbuf_dup(wmem_allocator_t *allocator, const wmem_strbuf_t *strbuf); WS_DLL_PUBLIC void