pipewire/src
Wim Taymans 42c0df1a47 security: fix stack exhaustion via unbounded alloca in pulse-server
Memory Safety: Medium

Several functions in the PulseAudio protocol implementation use alloca()
to allocate arrays of port_info, profile_info, or dict_item structs
based on counts derived from card parameters or client property lists.
These counts have no upper bounds, so a card object with a very large
number of parameters or a client sending many properties can cause
alloca() to exhaust the stack, resulting in a stack overflow crash.

Add a MAX_ALLOCA_SIZE (64KB) limit and check element counts before each
alloca() call. If the requested allocation exceeds the limit, the
function returns -ENOMEM instead of crashing.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-07-01 16:46:00 +02:00
..
daemon conf: disable portal.rt for pipewire and pipewire-pulse 2026-06-15 12:53:48 +02:00
examples stream: Make capability device IDs an JSON object 2026-01-22 16:08:19 +00:00
gst gst: fix crop height typo in pipewiresink do_send_buffer 2026-04-22 10:18:20 +02:00
modules security: fix stack exhaustion via unbounded alloca in pulse-server 2026-07-01 16:46:00 +02:00
pipewire impl-node: trigger a graph recalc on active node with driver 2026-06-25 14:22:34 +02:00
tests treewide: make more file descriptors cloexec 2026-05-08 14:53:01 +02:00
tools pw-cat: send midi as-is by default 2026-05-25 11:26:32 +02:00
meson.build meson.build: fix compile with -Dexamples=disabled 2023-11-28 10:18:25 +00:00