mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-04 13:30:12 -05:00
pulse-server: Make sure we don't send null name and description
We can't send a null name or description because that makes clients crash.
This commit is contained in:
parent
026e3882d2
commit
bdbd3e3f2e
1 changed files with 26 additions and 22 deletions
|
|
@ -4050,20 +4050,23 @@ static int fill_sink_info(struct client *client, struct message *m,
|
||||||
uint32_t flags;
|
uint32_t flags;
|
||||||
struct card_info card_info = CARD_INFO_INIT;
|
struct card_info card_info = CARD_INFO_INIT;
|
||||||
struct device_info dev_info = DEVICE_INFO_INIT(PW_DIRECTION_OUTPUT);
|
struct device_info dev_info = DEVICE_INFO_INIT(PW_DIRECTION_OUTPUT);
|
||||||
|
size_t size;
|
||||||
|
|
||||||
if (!object_is_sink(o) || info == NULL || info->props == NULL)
|
if (!object_is_sink(o) || info == NULL || info->props == NULL)
|
||||||
return -ENOENT;
|
return -ENOENT;
|
||||||
|
|
||||||
if ((name = spa_dict_lookup(info->props, PW_KEY_NODE_NAME)) != NULL) {
|
name = spa_dict_lookup(info->props, PW_KEY_NODE_NAME);
|
||||||
size_t size = strlen(name) + 10;
|
if ((desc = spa_dict_lookup(info->props, PW_KEY_NODE_DESCRIPTION)) == NULL)
|
||||||
|
desc = name ? name : "Unknown";
|
||||||
|
if (name == NULL)
|
||||||
|
name = "unknown";
|
||||||
|
|
||||||
|
size = strlen(name) + 10;
|
||||||
monitor_name = alloca(size);
|
monitor_name = alloca(size);
|
||||||
if (object_is_source(o))
|
if (object_is_source(o))
|
||||||
snprintf(monitor_name, size, "%s", name);
|
snprintf(monitor_name, size, "%s", name);
|
||||||
else
|
else
|
||||||
snprintf(monitor_name, size, "%s.monitor", name);
|
snprintf(monitor_name, size, "%s.monitor", name);
|
||||||
}
|
|
||||||
if ((desc = spa_dict_lookup(info->props, PW_KEY_NODE_DESCRIPTION)) == NULL)
|
|
||||||
desc = name;
|
|
||||||
|
|
||||||
if ((str = spa_dict_lookup(info->props, PW_KEY_MODULE_ID)) != NULL)
|
if ((str = spa_dict_lookup(info->props, PW_KEY_MODULE_ID)) != NULL)
|
||||||
module_id = (uint32_t)atoi(str);
|
module_id = (uint32_t)atoi(str);
|
||||||
|
|
@ -4188,24 +4191,25 @@ static int fill_source_info(struct client *client, struct message *m,
|
||||||
uint32_t flags;
|
uint32_t flags;
|
||||||
struct card_info card_info = CARD_INFO_INIT;
|
struct card_info card_info = CARD_INFO_INIT;
|
||||||
struct device_info dev_info = DEVICE_INFO_INIT(PW_DIRECTION_INPUT);
|
struct device_info dev_info = DEVICE_INFO_INIT(PW_DIRECTION_INPUT);
|
||||||
|
size_t size;
|
||||||
|
|
||||||
is_monitor = object_is_monitor(o);
|
is_monitor = object_is_monitor(o);
|
||||||
if ((!object_is_source(o) && !is_monitor) || info == NULL || info->props == NULL)
|
if ((!object_is_source(o) && !is_monitor) || info == NULL || info->props == NULL)
|
||||||
return -ENOENT;
|
return -ENOENT;
|
||||||
|
|
||||||
if ((name = spa_dict_lookup(info->props, PW_KEY_NODE_NAME)) != NULL) {
|
name = spa_dict_lookup(info->props, PW_KEY_NODE_NAME);
|
||||||
size_t size = strlen(name) + 10;
|
if ((desc = spa_dict_lookup(info->props, PW_KEY_NODE_DESCRIPTION)) == NULL)
|
||||||
|
desc = name ? name : "Unknown";
|
||||||
|
if (name == NULL)
|
||||||
|
name = "unknown";
|
||||||
|
|
||||||
|
size = strlen(name) + 10;
|
||||||
monitor_name = alloca(size);
|
monitor_name = alloca(size);
|
||||||
snprintf(monitor_name, size, "%s.monitor", name);
|
snprintf(monitor_name, size, "%s.monitor", name);
|
||||||
}
|
|
||||||
if ((desc = spa_dict_lookup(info->props, PW_KEY_NODE_DESCRIPTION)) != NULL) {
|
size = strlen(desc) + 20;
|
||||||
size_t size = strlen(desc) + 20;
|
|
||||||
monitor_desc = alloca(size);
|
monitor_desc = alloca(size);
|
||||||
snprintf(monitor_desc, size, "Monitor of %s", desc);
|
snprintf(monitor_desc, size, "Monitor of %s", desc);
|
||||||
} else {
|
|
||||||
desc = name;
|
|
||||||
monitor_desc = monitor_name;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((str = spa_dict_lookup(info->props, PW_KEY_MODULE_ID)) != NULL)
|
if ((str = spa_dict_lookup(info->props, PW_KEY_MODULE_ID)) != NULL)
|
||||||
module_id = (uint32_t)atoi(str);
|
module_id = (uint32_t)atoi(str);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue