pipewire/src
Wim Taymans 8ed6fe5edf security: fix infinite loop via MSG_PEEK on mismatched NetJack2 packets
Memory Safety: High

When netjack2_recv_data() receives a packet that doesn't match the
expected data_stream or id, it logs "not our packet" and continues the
loop. However, since the previous recv() used MSG_PEEK, the packet is
not consumed from the socket buffer. This causes the loop to spin
indefinitely on the same mismatched packet, consuming 100% CPU.

A remote attacker on the same network can trigger this by sending a
single crafted NetJack2 packet with a mismatched stream or id field,
causing a denial of service on the audio processing thread.

Fix by consuming (discarding) the mismatched packet with a non-peeking
recv() before continuing the loop.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-27 12:31:09 +02:00
..
daemon filter-chain: update virtual surround with convolver2 2026-04-21 17:03:55 +02:00
examples impl-node: accept more node.passive values 2026-03-12 17:25:36 +01:00
gst gst: fix crop height typo in pipewiresink do_send_buffer 2026-04-21 20:19:24 +01:00
modules security: fix infinite loop via MSG_PEEK on mismatched NetJack2 packets 2026-04-27 12:31:09 +02:00
pipewire conf: avoid overflow in pw_strv_insert_at 2026-04-27 12:15:32 +02:00
tests stream: return -EIO when doing get_time in != STREAMING 2026-02-12 12:26:33 +01:00
tools spa: add and use spa_overflow macros 2026-04-24 15:55:35 +02:00
meson.build meson.build: fix compile with -Dexamples=disabled 2023-11-28 10:18:25 +00:00