From 9123203f8d2fd3cbed64a59bdf7bd3fc4576b55c Mon Sep 17 00:00:00 2001 From: Takashi Iwai Date: Tue, 25 Apr 2006 17:32:23 +0200 Subject: [PATCH] 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. --- src/pcm/pcm_hooks.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) 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; -- 2.47.1