summaryrefslogtreecommitdiff
path: root/media-video/pipewire/files/pipewire-0.3.36-fix-crash-uaf-media-session.patch
blob: 6080ff4fd7abdbe86144e5729d58b1f563f2fea9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
https://gitlab.freedesktop.org/pipewire/pipewire/-/commit/39c8ed4f62172026036281691cd3b67b469a8629

From 39c8ed4f62172026036281691cd3b67b469a8629 Mon Sep 17 00:00:00 2001
From: Pauli Virtanen <pav@iki.fi>
Date: Thu, 16 Sep 2021 19:18:52 +0300
Subject: [PATCH] media-session: don't use-after-free if linking node removed

Should fix an ASAN crash.
---
 src/examples/media-session/policy-node.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/examples/media-session/policy-node.c b/src/examples/media-session/policy-node.c
index d83613d0b..e273434fa 100644
--- a/src/examples/media-session/policy-node.c
+++ b/src/examples/media-session/policy-node.c
@@ -869,6 +869,7 @@ static int link_nodes(struct node *node, struct node *peer)
 	struct pw_properties *props;
 	struct node *output, *input;
 	int res;
+	uint32_t node_id = node->id;
 
 	pw_log_debug(NAME " %p: link nodes %d %d remix:%d", impl,
 			node->id, peer->id, !node->dont_remix);
@@ -902,7 +903,7 @@ static int link_nodes(struct node *node, struct node *peer)
 
 	if (impl->linking_node_removed) {
 		impl->linking_node_removed = false;
-		pw_log_info("linking node %d was removed", node->id);
+		pw_log_info("linking node %d was removed", node_id);
 		return -ENOENT;
 	}
 	node->linking = false;
-- 
GitLab