From: Takashi Iwai Date: Tue, 25 Apr 2006 15:32:23 +0000 (+0200) Subject: Fix the error path of snd_pcm_hook_add_conf() X-Git-Tag: v1.0.12rc1~22 X-Git-Url: https://git.alsa-project.org/?a=commitdiff_plain;h=9123203f8d2fd3cbed64a59bdf7bd3fc4576b55c;p=alsa-lib.git Fix the error path of snd_pcm_hook_add_conf() Fixed the segfault in the error path of snd_pcm_hook_add_conf() (calling invalid install_func pointer). Also, added the missing snd_dlclose() to release the handle properly. --- diff --git a/src/pcm/pcm_hooks.c b/src/pcm/pcm_hooks.c index 86799877..ef44c02b 100644 --- a/src/pcm/pcm_hooks.c +++ b/src/pcm/pcm_hooks.c @@ -397,16 +397,18 @@ static int snd_pcm_hook_add_conf(snd_pcm_t *pcm, snd_config_t *root, snd_config_ _err: if (type) snd_config_delete(type); - if (err >= 0 && args && snd_config_get_string(args, &str) >= 0) { - err = snd_config_search_definition(root, "hook_args", str, &args); - if (err < 0) { - SNDERR("unknown hook_args %s", str); - } else { - err = install_func(pcm, args); + if (err >= 0) { + if (args && snd_config_get_string(args, &str) >= 0) { + err = snd_config_search_definition(root, "hook_args", str, &args); + if (err < 0) + SNDERR("unknown hook_args %s", str); + else + err = install_func(pcm, args); snd_config_delete(args); - } - } else - err = install_func(pcm, args); + } else + err = install_func(pcm, args); + snd_dlclose(h); + } if (err < 0) return err; return 0;