Commit graph

7723 commits

Author SHA1 Message Date
Wim Taymans
39ac8cf996 filter-chain: improve docs about LADSPA 2026-04-28 11:32:53 +02:00
Wim Taymans
b2790f610c debug: demote some info log to debug 2026-04-28 09:50:02 +02:00
Wim Taymans
5faf043f6c roc-source: handle some errors better 2026-04-27 18:44:04 +02:00
Wim Taymans
c889edf172 roc-source: start/stop receiving in streaming/pause
Only start receiving packets when we are streaming.

Otherwise the ROC source will start receiving and queueing packets and
consume a lot of memory while we don't read the packets from the queue.

Likewise, stop receiving packets when we pause.

Fixes #5250
2026-04-27 18:29:39 +02:00
Wim Taymans
ebe9b087ad security: replace strcat with bounds-explicit memcpy in pulse utils
Memory Safety: Low

Although the preceding length check ensures the strcat is safe, using
strcat makes the bounds guarantee implicit. Replace with memcpy using
the already-computed length, making the bounded copy explicit and
avoiding a redundant scan of the destination string.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-27 16:14:23 +02:00
Wim Taymans
1ebbd9d7bc security: replace strcpy with memcpy using known lengths in pw-dump
Memory Safety: Low

The strcpy() calls here operate on buffers that are correctly sized,
but using strcpy obscures the bounds guarantee and forces redundant
strlen() calls to compute pointer offsets. Replace with memcpy()
using the lengths already computed for the allocation, making the
bounds safety explicit and avoiding repeated string scanning.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-27 16:13:52 +02:00
Wim Taymans
d456be1943 security: fix strcpy into fixed-size buffer in netjack2 driver
Memory Safety: Low

strcpy() into the fixed-size params.type[8] buffer has no bounds
checking. While the current literal string "params" fits exactly,
this pattern is fragile and would silently overflow if the string
were ever changed. Use snprintf() with sizeof() for bounds safety,
consistent with how params.name and params.follower_name are
handled on the lines immediately following.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-27 16:13:34 +02:00
Wim Taymans
9b845f4415 security: fix unsafe atoi() on network RTSP status code
Input Validation: Medium

atoi() on network-received data returns 0 on parse failure, which is
indistinguishable from a valid "0" input. It also accepts negative
values and does not detect overflow. Replace with strtol() and
validate that the status code is in the valid HTTP/RTSP range
(100-599) to prevent protocol state confusion from malformed
responses.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-27 16:13:14 +02:00
Wim Taymans
ca0fa1e4e1 security: fix missing NULL check after strdup in module-raop-discover
Memory Safety: Medium

strdup() can return NULL on allocation failure. The return value was
used without checking, which would cause a NULL pointer dereference
(crash) when the name is later compared with spa_streq(). Add a NULL
check and free the partially-allocated struct on failure.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-27 16:12:47 +02:00
Wim Taymans
15c32c66f0 security: fix command injection via system() in pw-container
Input Validation: High

system() passes its argument to /bin/sh -c, which interprets shell
metacharacters (;, |, &&, $(), etc.). If pw-container is invoked by
another program with untrusted input, this allows arbitrary command
execution. Replace with fork()+execvp() which executes the command
directly without shell interpretation, and passes all remaining
arguments to the child process.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-27 16:12:26 +02:00
Wim Taymans
67f1e3a889 combine-stream: add combine.mode = monitor
Add a monitor mode that creates an Audio/Source combining audio from the
monitor ports of all Audio/Sink nodes. This allows capturing everything
that is being played back across all sinks into a single source.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-27 13:36:35 +02:00
Wim Taymans
87ee525b01 security: limit RTSP content-length and check allocation in RAOP client
Input Validation / Memory Safety: Medium

The RTSP client used for RAOP/AirPlay communication accepted arbitrarily
large Content-Length values from the remote server without any upper
bound. A malicious or compromised AirPlay server could specify a very
large Content-Length, causing the client to allocate unbounded memory
and potentially exhaust system resources (denial of service).

Additionally, the return value of pw_array_add() was not checked. If
the allocation failed, the subsequent memcpy would dereference a NULL
pointer, causing a crash.

Add a 64KB limit on Content-Length (more than sufficient for RTSP
control messages) and check the pw_array_add return value.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-27 13:30:36 +02:00
hackerman-kl
74b6f237d1 milan-avb: mvu certification number Disclamer to avoid any confusion 2026-04-27 10:56:44 +00:00
hackerman-kl
30711940c4 milan-avb: aecp: route VENDOR_UNIQUE_COMMAND through msg_info table 2026-04-27 10:56:44 +00:00
hackerman-kl
a16f3d704e milan-avb: aecp-vendor-unique-milan-v12: dispatch via per-cmd table per Milan v1.2 Section 5.4.4 2026-04-27 10:56:44 +00:00
hackerman-kl
deeea620f6 milan-avb: aecp-aem: GET_AS_PATH placeholder per IEEE 1722.1-2021 Section 7.4.41 2026-04-27 10:56:44 +00:00
hackerman-kl
df1605a333 milan-avb: entity-model: advertise VENDOR_UNIQUE_SUPPORTED in capabilities 2026-04-27 10:56:44 +00:00
hackerman-kl
d8b9a0f5ab milan-avb: aecp-aem: GET_STREAM_INFO CDL excludes 12-octet AVTPDU common 2026-04-27 10:56:44 +00:00
hackerman-kl
c967b39f18 milan-avb: avdecc: drop dead debug gate around avb_log_state 2026-04-27 10:56:44 +00:00
hackerman-kl
9c0007173b milan-avb: stream: wire Milan Section 5.4.5 stream counters, TX heartbeat, and MAX_TRANSIT_TIME plumbing 2026-04-27 10:56:44 +00:00
hackerman-kl
16d793db38 milan-avb: acmp: fixing the missing stream deactivate 2026-04-27 10:56:44 +00:00
hackerman-kl
de17f14da4 milan-avb: introducing GET_AS_PATH and GET/SET_MAX_TRANSIT 2026-04-27 10:56:44 +00:00
hackerman-kl
197bab7931 milan-avb: hook stream output to MSRP listener_observed + add max_transit_time_ns 2026-04-27 10:56:44 +00:00
hackerman-kl
a5fbeef6f8 milan-avb: add AVDECC stream_format decoder in aecp-aem.h 2026-04-27 10:56:44 +00:00
hackerman-kl
d9f8bacc76 milan-avb: AEM non-success replies preserve command payload size 2026-04-27 10:56:44 +00:00
hackerman-kl
25e3556050 milan-avb: ACMP status use the status of the FSM rather than the connection count to decide if bound or not 2026-04-27 10:56:44 +00:00
hackerman-kl
52c6c0a0cf milan-avb: GET_STREAM_INFO: fixing the bound state according tol the ACMP status 2026-04-27 10:56:44 +00:00
hackerman-kl
0bf4864d84 milan-avb: move teh descriptor FAM at the end of the structure to avoid overflow 2026-04-27 10:56:44 +00:00
hackerman-kl
4d33f57325 milan-avb: msrp: add debug msrp_talker back 2026-04-27 10:56:44 +00:00
hackerman-kl
ce42b7c1da milan-avb: msrp: mark listener stream-info dirty on TA/TF registrar change 2026-04-27 10:56:44 +00:00
hackerman-kl
995def4927 milan-avb: msrp: log notify_* at info level by default 2026-04-27 10:56:44 +00:00
hackerman-kl
76e7806251 milan-avb: cmd-get-set-stream-info: treat LV registrar as still registering 2026-04-27 10:56:44 +00:00
hackerman-kl
9f81c82100 milan-avb: avdecc: drive periodic timer at 100 ms 2026-04-27 10:56:44 +00:00
hackerman-kl
df62776308 milan-avb: mrp: set vector lva bit on outgoing LeaveAll frames 2026-04-27 10:56:44 +00:00
hackerman-kl
5c9a06c03d milan-avb: mrp: registrar treats RX_IN as a registration event 2026-04-27 10:56:44 +00:00
hackerman-kl
3b820add3b milan-avb: acmp-milan-v12: 'tmr_delay no saved packet' to debug, it may
happen
2026-04-27 10:56:44 +00:00
hackerman-kl
0572e41b65 milan-avb: acmp-milan-v12: 'no timer' not at warning, debug 2026-04-27 10:56:44 +00:00
hackerman-kl
0080739830 milan-avb: meson: register new module-avb sources 2026-04-27 10:56:44 +00:00
hackerman-kl
e46f2487fb milan-avb: aecp-vendor-unique-milan-v12: add Milan MVU handler 2026-04-27 10:56:44 +00:00
hackerman-kl
8bcdc2896c milan-avb: cmd-get-as-path: add command handler stub 2026-04-27 10:56:44 +00:00
hackerman-kl
2f4dbe3ca7 milan-avb: cmd-audio-mappings: add command handler stub 2026-04-27 10:56:44 +00:00
hackerman-kl
d9f224b122 milan-avb: cmd-start-stop-streaming: add command handler 2026-04-27 10:56:44 +00:00
hackerman-kl
6bf27b6c4e milan-avb: cmd-get-set-stream-info: add command handler 2026-04-27 10:56:44 +00:00
hackerman-kl
99c9248a17 milan-avb: cmd-get-counters: add header 2026-04-27 10:56:44 +00:00
hackerman-kl
6cc669e4e2 milan-avb: stream: Milan listener registrar and stream-output prep 2026-04-27 10:56:44 +00:00
hackerman-kl
d139b97a28 milan-avb: es-builder: allocate Milan wrapper for stream descriptors 2026-04-27 10:56:44 +00:00
hackerman-kl
e9e271ec30 milan-avb: aecp: dispatch Milan MVU vendor-unique commands 2026-04-27 10:56:44 +00:00
hackerman-kl
363418bee2 milan-avb: aecp-aem: stream-info dirty tracking and unsolicited counters 2026-04-27 10:56:44 +00:00
hackerman-kl
7f558a1a3b milan-avb: aecp-aem-state: add interface counters and descriptor storage 2026-04-27 10:56:44 +00:00
hackerman-kl
38f3cdf7cf milan-avb: aecp-aem: Milan flags_ex bitfield refactor 2026-04-27 10:56:44 +00:00