From 4e370151b05c9ed4222e62a782528bb6a2f0bf69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Barnab=C3=A1s=20P=C5=91cze?= Date: Wed, 31 May 2023 23:40:09 +0200 Subject: [PATCH] pipewire: introspect: do not leave `spa_param_info`s uninitialized `pw_reallocarray()` leaves the newly allocated storage (if any) uninitialized, so fill the bytes of the new `spa_param_info` objects with zeros in `pw_{node,port,device}_info_merge()` to avoid handing out pointers to uninitialized storage. --- src/pipewire/introspect.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/pipewire/introspect.c b/src/pipewire/introspect.c index 47f8f658b..098a442b4 100644 --- a/src/pipewire/introspect.c +++ b/src/pipewire/introspect.c @@ -212,6 +212,7 @@ struct pw_node_info *pw_node_info_merge(struct pw_node_info *info, } info->n_params = n_params; for (; i < info->n_params; i++) { + spa_zero(info->params[i]); info->params[i].id = update->params[i].id; info->params[i].flags = update->params[i].flags; info->params[i].user = 1; @@ -285,6 +286,7 @@ struct pw_port_info *pw_port_info_merge(struct pw_port_info *info, } info->n_params = n_params; for (; i < info->n_params; i++) { + spa_zero(info->params[i]); info->params[i].id = update->params[i].id; info->params[i].flags = update->params[i].flags; info->params[i].user = 1; @@ -448,6 +450,7 @@ struct pw_device_info *pw_device_info_merge(struct pw_device_info *info, } info->n_params = n_params; for (; i < info->n_params; i++) { + spa_zero(info->params[i]); info->params[i].id = update->params[i].id; info->params[i].flags = update->params[i].flags; info->params[i].user = 1;