summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJaroslav Kysela <perex@perex.cz>2022-10-18 15:53:40 +0200
committerJaroslav Kysela <perex@perex.cz>2022-10-18 15:53:52 +0200
commit4633d35171724642fe5884e48bafba7c0151db07 (patch)
tree571ff5fedba9cac610f75b7a773d648b538dcd7e
parent9253f08fb784ad6a8b67b63e64732cb2f5694b6a (diff)
downloadalsa-lib-4633d35171724642fe5884e48bafba7c0151db07.tar.gz
control: eld - skip trailing spaces
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
-rw-r--r--src/control/eld.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/control/eld.c b/src/control/eld.c
index 9be9605f..b7bf779f 100644
--- a/src/control/eld.c
+++ b/src/control/eld.c
@@ -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_value_t value = {0};
unsigned char *eld;
- unsigned int l;
+ unsigned int l, spc;
char *s, c;
int ret, valid;
@@ -82,20 +82,23 @@ int __snd_pcm_info_eld_fixup(snd_pcm_info_t * info)
return 0;
}
s = alloca(l + 1);
- s[l] = '\0';
/* sanitize */
valid = 0;
+ spc = 0;
while (l > 0) {
l--;
c = eld[20 + l];
- if (c < ' ' || c >= 0x7f) {
+ if (c <= ' ' || c >= 0x7f) {
s[l] = ' ';
} else {
valid += !!isalnum(c);
s[l] = c;
+ if (spc == 0)
+ spc = l + 1;
}
}
if (valid > 3) {
+ s[spc] = '\0';
snd_strlcpy((char *)info->name, s, sizeof(info->name));
} else {
__present: