From 593132e4349e065c8d841d48d1b3367f898eddde Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Wed, 29 Apr 2026 13:21:21 +0200 Subject: [PATCH] security: fix error path resource leaks in netjack2 manager Fix handle_follower_available to properly clean up on all error paths after the follower has been added to the list. Add missing NULL checks for pw_properties_copy and check the netjack2_init return value. Co-Authored-By: Claude Opus 4.7 --- src/modules/module-netjack2-manager.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/modules/module-netjack2-manager.c b/src/modules/module-netjack2-manager.c index ee918de92..540a67702 100644 --- a/src/modules/module-netjack2-manager.c +++ b/src/modules/module-netjack2-manager.c @@ -982,10 +982,16 @@ static int handle_follower_available(struct impl *impl, struct nj2_session_param follower->sink.direction = PW_DIRECTION_INPUT; follower->sink.props = pw_properties_copy(impl->sink_props); + if (follower->source.props == NULL || follower->sink.props == NULL) { + res = -errno; + pw_log_error("can't create properties: %m"); + goto cleanup; + } + if ((res = parse_audio_info(follower->source.props, &follower->source.info)) < 0 || (res = parse_audio_info(follower->sink.props, &follower->sink.info)) < 0) { pw_log_error("can't parse format: %s", spa_strerror(res)); - return res; + goto cleanup; } follower->source.n_audio = pw_properties_get_uint32(follower->source.props, @@ -1117,7 +1123,10 @@ static int handle_follower_available(struct impl *impl, struct nj2_session_param peer->send_volume = &follower->sink.volume; peer->recv_volume = &follower->source.volume; peer->quantum_limit = impl->quantum_limit; - netjack2_init(peer); + if ((res = netjack2_init(peer)) < 0) { + pw_log_error("can't init peer: %s", spa_strerror(res)); + goto cleanup; + } int bufsize = SPA_MIN((size_t)NETWORK_MAX_LATENCY * (peer->params.mtu + (size_t)follower->period_size * sizeof(float) *