From a173aeca9d6a32c89dae47c31256dfb916bf4aaa Mon Sep 17 00:00:00 2001 From: Christian Richter Date: Thu, 9 Nov 2006 13:09:10 +0000 Subject: [PATCH] Fixed segfault when no misdn.conf exists, reported by Igor Neves, thanks. git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@47359 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- channels/chan_misdn.c | 7 +++++-- channels/misdn/chan_misdn_config.h | 2 +- channels/misdn_config.c | 6 ++++-- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/channels/chan_misdn.c b/channels/chan_misdn.c index 4f2fac4423..e1302a5fb1 100644 --- a/channels/chan_misdn.c +++ b/channels/chan_misdn.c @@ -4121,8 +4121,11 @@ int load_module(void) return 0; } - - misdn_cfg_init(max_ports); + if (misdn_cfg_init(max_ports)<0) { + ast_log(LOG_ERROR, "Unable to initialize mISDN Config System\n"); + return 0; + } + g_config_initialized=1; misdn_debug = (int *)malloc(sizeof(int) * (max_ports+1)); diff --git a/channels/misdn/chan_misdn_config.h b/channels/misdn/chan_misdn_config.h index db007f57df..d36686cc0d 100644 --- a/channels/misdn/chan_misdn_config.h +++ b/channels/misdn/chan_misdn_config.h @@ -85,7 +85,7 @@ enum misdn_cfg_method { }; /* you must call misdn_cfg_init before any other function of this header file */ -void misdn_cfg_init(int max_ports); +int misdn_cfg_init(int max_ports); void misdn_cfg_reload(void); void misdn_cfg_destroy(void); diff --git a/channels/misdn_config.c b/channels/misdn_config.c index 689c8c7c79..cc0a0fa9b2 100644 --- a/channels/misdn_config.c +++ b/channels/misdn_config.c @@ -727,7 +727,7 @@ void misdn_cfg_destroy (void) ast_mutex_destroy(&config_mutex); } -void misdn_cfg_init (int this_max_ports) +int misdn_cfg_init (int this_max_ports) { char config[] = "misdn.conf"; char *cat, *p; @@ -737,7 +737,7 @@ void misdn_cfg_init (int this_max_ports) if (!(cfg = AST_LOAD_CFG(config))) { ast_log(LOG_WARNING,"no misdn.conf ?\n"); - return; + return -1; } misdn_cfg_lock(); @@ -783,4 +783,6 @@ void misdn_cfg_init (int this_max_ports) misdn_cfg_unlock(); AST_DESTROY_CFG(cfg); + + return 0; } -- 2.47.2