summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJaroslav Kysela <perex@perex.cz>2021-11-12 15:59:28 +0100
committerJaroslav Kysela <perex@perex.cz>2021-11-12 16:00:59 +0100
commit050f18c525d44f3edbdd14bff189e40e45cc8b89 (patch)
tree23be4b2236905f0f392203adf1e4d8a5ec703f43
parentea5481296f281625ef6517208ebf6e41b5fd838c (diff)
downloadalsa-lib-050f18c525d44f3edbdd14bff189e40e45cc8b89.tar.gz
ucm: fix parsing of the internal hexadecimal card identifier
Too many code was removed. Fixes: f547b2e3 ("conf: introduce safe_strtol_base()") Fixes: https://github.com/alsa-project/alsa-lib/issues/188 Signed-off-by: Jaroslav Kysela <perex@perex.cz>
-rw-r--r--src/ucm/utils.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/ucm/utils.c b/src/ucm/utils.c
index 33802a38..5f61e2a2 100644
--- a/src/ucm/utils.c
+++ b/src/ucm/utils.c
@@ -811,6 +811,7 @@ void uc_mgr_card_close(snd_use_case_mgr_t *uc_mgr)
*/
const char *uc_mgr_alibcfg_by_device(snd_config_t **top, const char *name)
{
+ char buf[5];
long card_num;
snd_config_t *config;
snd_use_case_mgr_t *uc_mgr;
@@ -818,6 +819,8 @@ const char *uc_mgr_alibcfg_by_device(snd_config_t **top, const char *name)
if (strncmp(name, "_ucm", 4) || strlen(name) < 12 || name[8] != '.')
return NULL;
+ strncpy(buf, name + 4, 4);
+ buf[4] = '\0';
err = safe_strtol_base(name, &card_num, 16);
if (err < 0 || card_num < 0 || card_num > 0xffff)
return NULL;