control: eld - skip trailing spaces

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
This commit is contained in:
Jaroslav Kysela 2022-10-18 15:53:40 +02:00
parent 9253f08fb7
commit 4633d35171

View file

@ -47,7 +47,7 @@ int __snd_pcm_info_eld_fixup(snd_pcm_info_t * info)
snd_ctl_elem_info_t cinfo = {0}; snd_ctl_elem_info_t cinfo = {0};
snd_ctl_elem_value_t value = {0}; snd_ctl_elem_value_t value = {0};
unsigned char *eld; unsigned char *eld;
unsigned int l; unsigned int l, spc;
char *s, c; char *s, c;
int ret, valid; int ret, valid;
@ -82,20 +82,23 @@ int __snd_pcm_info_eld_fixup(snd_pcm_info_t * info)
return 0; return 0;
} }
s = alloca(l + 1); s = alloca(l + 1);
s[l] = '\0';
/* sanitize */ /* sanitize */
valid = 0; valid = 0;
spc = 0;
while (l > 0) { while (l > 0) {
l--; l--;
c = eld[20 + l]; c = eld[20 + l];
if (c < ' ' || c >= 0x7f) { if (c <= ' ' || c >= 0x7f) {
s[l] = ' '; s[l] = ' ';
} else { } else {
valid += !!isalnum(c); valid += !!isalnum(c);
s[l] = c; s[l] = c;
if (spc == 0)
spc = l + 1;
} }
} }
if (valid > 3) { if (valid > 3) {
s[spc] = '\0';
snd_strlcpy((char *)info->name, s, sizeof(info->name)); snd_strlcpy((char *)info->name, s, sizeof(info->name));
} else { } else {
__present: __present: