]> git.alsa-project.org Git - alsa-lib.git/commitdiff
namehint: Fix bad free with invalid iface name
authorTakashi Iwai <tiwai@suse.de>
Thu, 30 Apr 2015 12:38:25 +0000 (14:38 +0200)
committerTakashi Iwai <tiwai@suse.de>
Thu, 30 Apr 2015 12:38:25 +0000 (14:38 +0200)
Due to the uninitialized field before the error path, passing an
invalid iface argument may result in a bad free() call.  Initialize
the fields properly beforehand.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
src/control/namehint.c

index 6c04143a185c027fa5310939cb1c5050fe13cda4..b3e646eb10af5da9ee6b77aa433deb2b41e6f9e6 100644 (file)
@@ -562,6 +562,8 @@ int snd_device_name_hint(int card, const char *iface, void ***hints)
        list.list = NULL;
        list.count = list.allocated = 0;
        list.siface = iface;
+       list.show_all = 0;
+       list.cardname = NULL;
        if (strcmp(iface, "card") == 0)
                list.iface = SND_CTL_ELEM_IFACE_CARD;
        else if (strcmp(iface, "pcm") == 0)
@@ -581,8 +583,6 @@ int snd_device_name_hint(int card, const char *iface, void ***hints)
                goto __error;
        }
 
-       list.show_all = 0;
-       list.cardname = NULL;
        if (snd_config_search(local_config, "defaults.namehint.showall", &conf) >= 0)
                list.show_all = snd_config_get_bool(conf) > 0;
        if (card >= 0) {