]> git.alsa-project.org Git - alsa-lib.git/commitdiff
ucm: Assure the user input card name not to exceed max size of card long name
authorMengdong Lin <mengdong.lin@linux.intel.com>
Wed, 18 Jan 2017 03:52:35 +0000 (11:52 +0800)
committerTakashi Iwai <tiwai@suse.de>
Wed, 18 Jan 2017 10:55:13 +0000 (11:55 +0100)
Users can load a card's UCM configuration file by giving the card short
name or long name, which should not exceed the maximum card long name
defined by the kernel. The kernel uses an 80-character buffer to store
the card long name.

Signed-off-by: Mengdong Lin <mengdong.lin@linux.intel.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
src/ucm/parser.c
src/ucm/ucm_local.h

index f520abc59a5c1402f2fdfe4c36bcf72b0b729325..f61201a68488d29b77d99d9f9eb2ea98eb730124 100644 (file)
@@ -1335,6 +1335,12 @@ static int load_master_config(const char *card_name, snd_config_t **cfg)
        char *env = getenv(ALSA_CONFIG_UCM_VAR);
        int err;
 
+       if (strnlen(card_name, MAX_CARD_LONG_NAME) == MAX_CARD_LONG_NAME) {
+               uc_error("error: invalid card name %s (at most %d chars)\n",
+                        card_name, MAX_CARD_LONG_NAME - 1);
+               return -EINVAL;
+       }
+
        snprintf(filename, sizeof(filename)-1,
                "%s/%s/%s.conf", env ? env : ALSA_USE_CASE_DIR,
                card_name, card_name);
index 6d3302f9bc07e49a298179219d8346def2ef8e74..e41aafa4fa49d1674c75a95ecf1c2aa592215216 100644 (file)
@@ -41,6 +41,7 @@
 #include "use-case.h"
 
 #define MAX_FILE               256
+#define MAX_CARD_LONG_NAME     80
 #define ALSA_USE_CASE_DIR      ALSA_CONFIG_DIR "/ucm"
 
 #define SEQUENCE_ELEMENT_TYPE_CDEV     1