media-session: sanitize device names as well

See #827
This commit is contained in:
Wim Taymans 2021-03-04 12:45:35 +01:00
parent 184bdbeb4c
commit 1642e5220f
3 changed files with 40 additions and 7 deletions

View file

@ -294,7 +294,7 @@ static int v4l2_update_device_props(struct device *dev)
{
struct pw_properties *p = dev->props;
const char *s, *d;
char temp[32];
char temp[32], tmp[1024];
int i;
if ((s = pw_properties_get(p, SPA_KEY_DEVICE_NAME)) == NULL) {
@ -305,7 +305,9 @@ static int v4l2_update_device_props(struct device *dev)
}
}
}
pw_properties_setf(p, PW_KEY_DEVICE_NAME, "v4l2_device.%s", s);
pw_properties_set(p, PW_KEY_DEVICE_NAME,
sm_media_session_sanitize_name(tmp, sizeof(tmp),
'_', "v4l2_device.%s", s));
for (i = 2; i <= 99; i++) {
if ((d = pw_properties_get(p, PW_KEY_DEVICE_NAME)) == NULL)
@ -314,7 +316,9 @@ static int v4l2_update_device_props(struct device *dev)
if (v4l2_find_device(dev->impl, SPA_ID_INVALID, d) == NULL)
break;
pw_properties_setf(p, PW_KEY_DEVICE_NAME, "v4l2_device.%s.%d", s, i);
pw_properties_set(p, PW_KEY_DEVICE_NAME,
sm_media_session_sanitize_name(tmp, sizeof(tmp),
'_', "v4l2_device.%s.%d", s, i));
}
if (i == 99)
return -EEXIST;