From: Takashi Iwai Date: Thu, 30 Apr 2015 12:38:25 +0000 (+0200) Subject: namehint: Fix bad free with invalid iface name X-Git-Tag: v1.1.0~78 X-Git-Url: https://git.alsa-project.org/?a=commitdiff_plain;h=46d98392d0f832e46693c8c06b4927a5eb6f4b28;p=alsa-lib.git namehint: Fix bad free with invalid iface name 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 --- diff --git a/src/control/namehint.c b/src/control/namehint.c index 6c04143a..b3e646eb 100644 --- a/src/control/namehint.c +++ b/src/control/namehint.c @@ -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) {