On Wed, Jan 21, 2026 at 09:46:11PM -0300, Matheus Polkorny wrote:
> Hello,
> 
> I will prepare an upload of Wireshark for trixie

Hi,

I’ve imported the upstream patches to fix CVE-2026-0959,
CVE-2026-0961, and CVE-2026-0962 for trixie.

The wireshark.debdiff is attached for review. If this looks good to you,
Samuel can proceed with the upload.

The merge request is available at:
https://salsa.debian.org/debian/wireshark/-/merge_requests/6
-- 
Thanks,
Polkorny
diff -Nru wireshark-4.4.7/debian/changelog wireshark-4.4.7/debian/changelog
--- wireshark-4.4.7/debian/changelog    2025-06-10 11:45:06.000000000 -0300
+++ wireshark-4.4.7/debian/changelog    2026-01-21 21:07:15.000000000 -0300
@@ -1,3 +1,16 @@
+wireshark (4.4.7-1+deb13u1) trixie-security; urgency=medium
+
+  * Team upload.
+  * d/patches:
+    - CVE-2026-0959.patch: Import Upstream patch to fix CVE-2026-0959
+    - CVE-2026-0961.patch: Import Upstream patch to fix CVE-2026-0961
+    - CVE-2026-0962.patch: Import Upstream patch to fix CVE-2026-0962
+    - Refresh patches:
+        0001-tools-Use-esnacc-instead-of-snacc-in-asn2deb.patch
+        0004-Use-packaged-JS-and-CSS-resources-instead-of-pulling.patch
+
+ -- Matheus Polkorny <[email protected]>  Wed, 21 Jan 2026 21:07:15 -0300
+
 wireshark (4.4.7-1) unstable; urgency=medium
 
   * Upload to unstable (Closes: #1107515)
diff -Nru 
wireshark-4.4.7/debian/patches/0001-tools-Use-esnacc-instead-of-snacc-in-asn2deb.patch
 
wireshark-4.4.7/debian/patches/0001-tools-Use-esnacc-instead-of-snacc-in-asn2deb.patch
--- 
wireshark-4.4.7/debian/patches/0001-tools-Use-esnacc-instead-of-snacc-in-asn2deb.patch
      2025-06-10 11:45:06.000000000 -0300
+++ 
wireshark-4.4.7/debian/patches/0001-tools-Use-esnacc-instead-of-snacc-in-asn2deb.patch
      2026-01-21 21:07:15.000000000 -0300
@@ -1,4 +1,3 @@
-From 6f7831516648cf70cb76d12a4b05c041279d40ba Mon Sep 17 00:00:00 2001
 From: Balint Reczey <[email protected]>
 Date: Mon, 21 Oct 2024 12:27:09 +0200
 Subject: [PATCH] tools: Use esnacc instead of snacc in asn2deb
@@ -12,7 +11,7 @@
  3 files changed, 5 insertions(+), 5 deletions(-)
 
 diff --git a/doc/man_pages/asn2deb.adoc b/doc/man_pages/asn2deb.adoc
-index e02844ccf6..f043d27a89 100644
+index e02844c..f043d27 100644
 --- a/doc/man_pages/asn2deb.adoc
 +++ b/doc/man_pages/asn2deb.adoc
 @@ -33,7 +33,7 @@ asn2deb - Create a Debian package for BER monitoring from 
ASN.1
@@ -34,7 +33,7 @@
  == COPYING
  
 diff --git a/packaging/debian/control b/packaging/debian/control
-index de03518dcf..d5a51c1eb1 100644
+index 0c713b9..13987ae 100644
 --- a/packaging/debian/control
 +++ b/packaging/debian/control
 @@ -125,7 +125,7 @@ Package: wireshark-dev
@@ -47,7 +46,7 @@
  Description: network traffic analyzer - development tools
   Wireshark is a network "sniffer" - a tool that captures and analyzes
 diff --git a/tools/asn2deb b/tools/asn2deb
-index 926d34e2e5..7f0bbc78ef 100755
+index 926d34e..7f0bbc7 100755
 --- a/tools/asn2deb
 +++ b/tools/asn2deb
 @@ -4,7 +4,7 @@
@@ -68,6 +67,3 @@
  
  Package: wireshark-asn1-%s
  Architecture: all
--- 
-2.43.0
-
diff -Nru 
wireshark-4.4.7/debian/patches/0004-Use-packaged-JS-and-CSS-resources-instead-of-pulling.patch
 
wireshark-4.4.7/debian/patches/0004-Use-packaged-JS-and-CSS-resources-instead-of-pulling.patch
--- 
wireshark-4.4.7/debian/patches/0004-Use-packaged-JS-and-CSS-resources-instead-of-pulling.patch
      2025-06-10 11:45:06.000000000 -0300
+++ 
wireshark-4.4.7/debian/patches/0004-Use-packaged-JS-and-CSS-resources-instead-of-pulling.patch
      2026-01-21 21:07:15.000000000 -0300
@@ -4,9 +4,11 @@
  https://gitlab.com/wireshark/wireshark/-/issues/19013#note_1682959548
 
 ---
- ipmap.html | 20 +++++---------------
- 1 file changed, 5 insertions(+), 15 deletions(-)
+ resources/share/wireshark/ipmap.html | 31 ++++++++++++++++---------------
+ 1 file changed, 16 insertions(+), 15 deletions(-)
 
+diff --git a/resources/share/wireshark/ipmap.html 
b/resources/share/wireshark/ipmap.html
+index fa8b542..b3f7b67 100644
 --- a/resources/share/wireshark/ipmap.html
 +++ b/resources/share/wireshark/ipmap.html
 @@ -2,15 +2,9 @@
@@ -28,7 +30,7 @@
  <!--
  <link rel="stylesheet" 
href="https://unpkg.com/[email protected]/dist/leaflet-measure.css";
      
integrity="sha512-wgiKVjb46JxgnGNL6xagIy2+vpqLQmmHH7fWD/BnPzouddSmbRTf6xatWIRbH2Rgr2F+tLtCZKbxnhm5Xz0BcA=="
-@@ -43,12 +37,14 @@
+@@ -43,12 +37,14 @@ html, body {
  .range-control-input { padding: 0; width: 130px; }
  .range-control-input, .range-control-label { vertical-align: middle; }
  </style>
@@ -49,7 +51,7 @@
  <!--
  <script src="https://unpkg.com/[email protected]/dist/leaflet-measure.js";
      
integrity="sha512-ovh6EqS7MUI3QjLWBM7CY8Gu8cSM5x6vQofUMwKGbHVDPSAS2lmNv6Wq5es5WCz1muyojQxcc8rA3CvVjD2Z+A=="
-@@ -372,6 +368,11 @@
+@@ -372,6 +368,11 @@ function loadData(data) {
  <input type="file" id="file-picker" accept=".json,.html"></label>
  <p id="error-message"></p>
  </div>
diff -Nru wireshark-4.4.7/debian/patches/CVE-2026-0959.patch 
wireshark-4.4.7/debian/patches/CVE-2026-0959.patch
--- wireshark-4.4.7/debian/patches/CVE-2026-0959.patch  1969-12-31 
21:00:00.000000000 -0300
+++ wireshark-4.4.7/debian/patches/CVE-2026-0959.patch  2026-01-21 
21:07:15.000000000 -0300
@@ -0,0 +1,57 @@
+From: John Thacker <[email protected]>
+Date: Sat, 10 Jan 2026 08:33:35 -0500
+Subject: ieee80211: Avoid using a fixed array for multi-link per-STA
+ subelements
+
+Since this processes to the end of the TVB, there might be more than 16.
+Simplify the logic and only test for a set link_id in one place. This
+also gets rid of a possible use of an uninitialized value on error.
+
+Fix #20939, OSS-Fuzz 474458885
+---
+ epan/dissectors/packet-ieee80211.c | 12 ++----------
+ 1 file changed, 2 insertions(+), 10 deletions(-)
+
+diff --git a/epan/dissectors/packet-ieee80211.c 
b/epan/dissectors/packet-ieee80211.c
+index 6ed3b47..89bea94 100644
+--- a/epan/dissectors/packet-ieee80211.c
++++ b/epan/dissectors/packet-ieee80211.c
+@@ -28301,7 +28301,7 @@ dissect_multi_link(tvbuff_t *tvb, packet_info *pinfo 
_U_, proto_tree *tree,
+   uint8_t multi_link_type = multi_link_control & 0x0007;
+   uint16_t present = multi_link_control >> 4;
+   int elt = 0, hf_index;
+-  int local_link_ids[16];
++  wmem_strbuf_t *link_id_list = wmem_strbuf_create(pinfo->pool);
+ 
+   control = proto_tree_add_item(tree, hf_ieee80211_eht_multi_link_control, 
tvb,
+                                 offset, 2, ENC_LITTLE_ENDIAN);
+@@ -28590,9 +28590,6 @@ dissect_multi_link(tvbuff_t *tvb, packet_info *pinfo 
_U_, proto_tree *tree,
+                                            multi_link_type, &link_id);
+ 
+       offset += overhead; /* Account for the overhead in the subelt */
+-      if (link_id != -1) {
+-        local_link_ids[elt] = link_id;
+-      }
+       break;
+     case 221:
+       /* Add an expert info saying there are none so far? */
+@@ -28603,18 +28600,13 @@ dissect_multi_link(tvbuff_t *tvb, packet_info *pinfo 
_U_, proto_tree *tree,
+       break;
+     }
+     if (link_id != -1) {
++      wmem_strbuf_append_printf(link_id_list, (elt == 0) ? "%d" : "_%d", 
link_id);
+       elt++;
+     }
+   }
+   proto_tree_add_uint(tree, hf_index, tvb, 0, 0, elt);
+ 
+   if (elt) {
+-    wmem_strbuf_t *link_id_list = wmem_strbuf_new_sized(pinfo->pool, elt * 2);
+-    for (int i = 0; i < elt; i++) {
+-      if (local_link_ids[i] != -1) {
+-        wmem_strbuf_append_printf(link_id_list, (i == 0) ? "%d" : "_%d", 
local_link_ids[i]);
+-      }
+-    }
+     proto_tree_add_string(tree, hf_ieee80211_eht_multi_link_link_id_list, tvb,
+                           0, 0, link_id_list->str);
+   }
diff -Nru wireshark-4.4.7/debian/patches/CVE-2026-0961.patch 
wireshark-4.4.7/debian/patches/CVE-2026-0961.patch
--- wireshark-4.4.7/debian/patches/CVE-2026-0961.patch  1969-12-31 
21:00:00.000000000 -0300
+++ wireshark-4.4.7/debian/patches/CVE-2026-0961.patch  2026-01-21 
21:07:15.000000000 -0300
@@ -0,0 +1,28 @@
+From: Darius Davis <[email protected]>
+Date: Mon, 1 Dec 2025 17:47:28 +1000
+Subject: BLF: Validate length of uncompressed segments.
+
+When a container's data is not compressed, its actual length should equal the
+length of the data stored in the file.
+
+Fixes #20880.
+---
+ wiretap/blf.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/wiretap/blf.c b/wiretap/blf.c
+index 0075936..528ccb0 100644
+--- a/wiretap/blf.c
++++ b/wiretap/blf.c
+@@ -793,6 +793,11 @@ blf_pull_logcontainer_into_memory(blf_params_t *params, 
blf_log_container_t *con
+     }
+ 
+     if (container->compression_method == BLF_COMPRESSION_NONE) {
++        if (data_length != container->real_length) {
++            *err = WTAP_ERR_BAD_FILE;
++            *err_info = ws_strdup("blf_pull_logcontainer_into_memory: 
uncompressed data has wrong length");
++            return false;
++        }
+         unsigned char* buf = g_try_malloc((size_t)container->real_length);
+         if (buf == NULL) {
+             *err = WTAP_ERR_INTERNAL;
diff -Nru wireshark-4.4.7/debian/patches/CVE-2026-0962.patch 
wireshark-4.4.7/debian/patches/CVE-2026-0962.patch
--- wireshark-4.4.7/debian/patches/CVE-2026-0962.patch  1969-12-31 
21:00:00.000000000 -0300
+++ wireshark-4.4.7/debian/patches/CVE-2026-0962.patch  2026-01-21 
21:07:15.000000000 -0300
@@ -0,0 +1,136 @@
+From: Gerald Combs <[email protected]>
+Date: Mon, 12 Jan 2026 17:01:48 -0800
+Subject: SOME/IP-SD: Fix a buffer overflow
+
+Make sure we don't write past the end of our option port array. Make our
+option count unsigned.
+
+Fixes #20945
+
+(cherry picked from commit 55ec8b3db4968c97115f014fb5974206cdf57454)
+
+Conflicts:
+       epan/dissectors/packet-someip-sd.c
+---
+ epan/dissectors/packet-someip-sd.c | 30 ++++++++++++++++++------------
+ 1 file changed, 18 insertions(+), 12 deletions(-)
+
+diff --git a/epan/dissectors/packet-someip-sd.c 
b/epan/dissectors/packet-someip-sd.c
+index 1a348d3..b36a2fc 100644
+--- a/epan/dissectors/packet-someip-sd.c
++++ b/epan/dissectors/packet-someip-sd.c
+@@ -269,6 +269,7 @@ static expert_field ei_someipsd_option_unknown;
+ static expert_field ei_someipsd_option_wrong_length;
+ static expert_field ei_someipsd_L4_protocol_unsupported;
+ static expert_field ei_someipsd_config_string_malformed;
++static expert_field ei_someipsd_too_many_options;
+ 
+ /*** prototypes ***/
+ void proto_register_someip_sd(void);
+@@ -301,13 +302,13 @@ someip_sd_register_ports(uint32_t opt_index, uint32_t 
opt_num, uint32_t option_c
+ }
+ 
+ static void
+-dissect_someip_sd_pdu_option_configuration(tvbuff_t *tvb, packet_info *pinfo, 
proto_tree *tree, uint32_t offset, uint32_t length, int optionnum) {
++dissect_someip_sd_pdu_option_configuration(tvbuff_t *tvb, packet_info *pinfo, 
proto_tree *tree, uint32_t offset, uint32_t length, unsigned optionnum) {
+     uint32_t        offset_orig = offset;
+     const uint8_t  *config_string;
+     proto_item     *ti;
+     proto_tree     *subtree;
+ 
+-    tree = proto_tree_add_subtree_format(tree, tvb, offset, length, 
ett_someip_sd_option, NULL, "%d: Configuration Option", optionnum);
++    tree = proto_tree_add_subtree_format(tree, tvb, offset, length, 
ett_someip_sd_option, NULL, "%u: Configuration Option", optionnum);
+ 
+     /* Add common fields */
+     proto_tree_add_item(tree, hf_someip_sd_option_length, tvb, offset, 2, 
ENC_BIG_ENDIAN);
+@@ -344,8 +345,8 @@ dissect_someip_sd_pdu_option_configuration(tvbuff_t *tvb, 
packet_info *pinfo, pr
+ }
+ 
+ static void
+-dissect_someip_sd_pdu_option_loadbalancing(tvbuff_t *tvb, packet_info *pinfo 
_U_, proto_tree *tree, uint32_t offset, uint32_t length, int optionnum) {
+-    tree = proto_tree_add_subtree_format(tree, tvb, offset, length, 
ett_someip_sd_option, NULL, "%d: Load Balancing Option", optionnum);
++dissect_someip_sd_pdu_option_loadbalancing(tvbuff_t *tvb, packet_info *pinfo 
_U_, proto_tree *tree, uint32_t offset, uint32_t length, unsigned optionnum) {
++    tree = proto_tree_add_subtree_format(tree, tvb, offset, length, 
ett_someip_sd_option, NULL, "%u: Load Balancing Option", optionnum);
+ 
+     /* Add common fields */
+     proto_tree_add_item(tree, hf_someip_sd_option_length, tvb, offset, 2, 
ENC_BIG_ENDIAN);
+@@ -364,7 +365,7 @@ dissect_someip_sd_pdu_option_loadbalancing(tvbuff_t *tvb, 
packet_info *pinfo _U_
+ }
+ 
+ static void
+-dissect_someip_sd_pdu_option_ipv4(tvbuff_t *tvb, packet_info *pinfo, 
proto_tree *tree, uint32_t offset, uint32_t length, int optionnum, uint32_t 
option_ports[]) {
++dissect_someip_sd_pdu_option_ipv4(tvbuff_t *tvb, packet_info *pinfo, 
proto_tree *tree, uint32_t offset, uint32_t length, unsigned optionnum, 
uint32_t option_ports[]) {
+     uint8_t             type = 255;
+     const char         *description = NULL;
+     uint32_t            l4port = 0;
+@@ -377,7 +378,7 @@ dissect_someip_sd_pdu_option_ipv4(tvbuff_t *tvb, 
packet_info *pinfo, proto_tree
+ 
+     type = tvb_get_uint8(tvb, offset + 2);
+     description = val_to_str(type, sd_option_type, "(Unknown Option: %d)");
+-    tree = proto_tree_add_subtree_format(tree, tvb, offset, length, 
ett_someip_sd_option, &ti_top, "%d: %s Option", optionnum, description);
++    tree = proto_tree_add_subtree_format(tree, tvb, offset, length, 
ett_someip_sd_option, &ti_top, "%u: %s Option", optionnum, description);
+ 
+     if (length != SD_OPTION_IPV4_LENGTH) {
+         expert_add_info(pinfo, ti_top, &ei_someipsd_option_wrong_length);
+@@ -418,7 +419,7 @@ dissect_someip_sd_pdu_option_ipv4(tvbuff_t *tvb, 
packet_info *pinfo, proto_tree
+ }
+ 
+ static void
+-dissect_someip_sd_pdu_option_ipv6(tvbuff_t *tvb, packet_info *pinfo, 
proto_tree *tree, uint32_t offset, uint32_t length, int optionnum, uint32_t 
option_ports[]) {
++dissect_someip_sd_pdu_option_ipv6(tvbuff_t *tvb, packet_info *pinfo, 
proto_tree *tree, uint32_t offset, uint32_t length, unsigned optionnum, 
uint32_t option_ports[]) {
+     uint8_t             type = 255;
+     const char         *description = NULL;
+     uint32_t            l4port = 0;
+@@ -431,7 +432,7 @@ dissect_someip_sd_pdu_option_ipv6(tvbuff_t *tvb, 
packet_info *pinfo, proto_tree
+     type = tvb_get_uint8(tvb, offset + 2);
+     description = val_to_str(type, sd_option_type, "(Unknown Option: %d)");
+ 
+-    tree = proto_tree_add_subtree_format(tree, tvb, offset, length, 
ett_someip_sd_option, &ti_top, "%d: %s Option", optionnum, description);
++    tree = proto_tree_add_subtree_format(tree, tvb, offset, length, 
ett_someip_sd_option, &ti_top, "%u: %s Option", optionnum, description);
+ 
+     if (length != SD_OPTION_IPV6_LENGTH) {
+         expert_add_info(pinfo, ti_top, &ei_someipsd_option_wrong_length);
+@@ -471,11 +472,11 @@ dissect_someip_sd_pdu_option_ipv6(tvbuff_t *tvb, 
packet_info *pinfo, proto_tree
+ }
+ 
+ static void
+-dissect_someip_sd_pdu_option_unknown(tvbuff_t *tvb, packet_info *pinfo, 
proto_tree *tree, uint32_t offset, uint32_t length, int optionnum) {
++dissect_someip_sd_pdu_option_unknown(tvbuff_t *tvb, packet_info *pinfo, 
proto_tree *tree, uint32_t offset, uint32_t length, unsigned optionnum) {
+     uint32_t            len = 0;
+     proto_item         *ti;
+ 
+-    tree = proto_tree_add_subtree_format(tree, tvb, offset, length, 
ett_someip_sd_option, &ti, "%d: %s Option", optionnum,
++    tree = proto_tree_add_subtree_format(tree, tvb, offset, length, 
ett_someip_sd_option, &ti, "%u: %s Option", optionnum,
+         val_to_str_const(tvb_get_uint8(tvb, offset + 2), sd_option_type, 
"Unknown"));
+ 
+     expert_add_info(pinfo, ti, &ei_someipsd_option_unknown);
+@@ -500,7 +501,7 @@ static int
+ dissect_someip_sd_pdu_options(tvbuff_t *tvb, packet_info *pinfo, proto_tree 
*tree, proto_item *ti, uint32_t offset_orig, uint32_t length, uint32_t 
option_ports[], unsigned *option_count) {
+     uint16_t            real_length = 0;
+     uint8_t             option_type = 0;
+-    int                 optionnum = 0;
++    unsigned            optionnum = 0;
+     tvbuff_t           *subtvb = NULL;
+ 
+     uint32_t            offset = offset_orig;
+@@ -511,7 +512,11 @@ dissect_someip_sd_pdu_options(tvbuff_t *tvb, packet_info 
*pinfo, proto_tree *tre
+     }
+ 
+     while (tvb_bytes_exist(tvb, offset, SD_OPTION_MINLENGTH)) {
+-        ws_assert(optionnum >= 0 && optionnum < SD_MAX_NUM_OPTIONS);
++        if (optionnum >= SD_MAX_NUM_OPTIONS) {
++            expert_add_info(pinfo, ti, &ei_someipsd_too_many_options);
++            return offset;
++        }
++
+         option_ports[optionnum] = 0;
+ 
+         real_length = tvb_get_ntohs(tvb, offset) + 3;
+@@ -1290,6 +1295,7 @@ proto_register_someip_sd(void) {
+         { &ei_someipsd_option_wrong_length,{ "someipsd.option_wrong_length", 
PI_MALFORMED, PI_ERROR, "SOME/IP-SD Option length is incorrect!", EXPFILL } },
+         { &ei_someipsd_L4_protocol_unsupported,{ 
"someipsd.L4_protocol_unsupported", PI_MALFORMED, PI_ERROR, "SOME/IP-SD 
Unsupported Layer 4 Protocol!", EXPFILL } },
+         { &ei_someipsd_config_string_malformed,{ 
"someipsd.config_string_malformed", PI_MALFORMED, PI_ERROR, "SOME/IP-SD 
Configuration String malformed!", EXPFILL } },
++        { &ei_someipsd_too_many_options,{ "someipsd.too_many_options", 
PI_MALFORMED, PI_ERROR, "SOME/IP-SD Too many options!", EXPFILL } },
+     };
+ 
+     /* Register Protocol, Fields, ETTs, Expert Info, Taps, Dissector */
diff -Nru wireshark-4.4.7/debian/patches/series 
wireshark-4.4.7/debian/patches/series
--- wireshark-4.4.7/debian/patches/series       2025-06-10 11:45:06.000000000 
-0300
+++ wireshark-4.4.7/debian/patches/series       2026-01-21 21:07:15.000000000 
-0300
@@ -1,3 +1,6 @@
 0001-tools-Use-esnacc-instead-of-snacc-in-asn2deb.patch
 09_idl2wrs.patch
 0004-Use-packaged-JS-and-CSS-resources-instead-of-pulling.patch
+CVE-2026-0959.patch
+CVE-2026-0961.patch
+CVE-2026-0962.patch

Attachment: signature.asc
Description: PGP signature

Reply via email to