diff options
author | Jaroslav Kysela <perex@perex.cz> | 2022-10-18 15:53:40 +0200 |
---|---|---|
committer | Jaroslav Kysela <perex@perex.cz> | 2022-10-18 15:53:52 +0200 |
commit | 4633d35171724642fe5884e48bafba7c0151db07 (patch) | |
tree | 571ff5fedba9cac610f75b7a773d648b538dcd7e | |
parent | 9253f08fb784ad6a8b67b63e64732cb2f5694b6a (diff) | |
download | alsa-lib-4633d35171724642fe5884e48bafba7c0151db07.tar.gz |
control: eld - skip trailing spaces
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
-rw-r--r-- | src/control/eld.c | 9 |
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: |