From: Christian Richter Date: Thu, 9 Nov 2006 13:09:10 +0000 (+0000) Subject: Fixed segfault when no misdn.conf exists, reported by Igor Neves, thanks. X-Git-Tag: 1.2.14~75 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a173aeca9d6a32c89dae47c31256dfb916bf4aaa;p=thirdparty%2Fasterisk.git 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 --- 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; }