From: Jeff Peeler Date: Mon, 17 Aug 2009 16:34:56 +0000 (+0000) Subject: Fix segfault when reloading chan_misdn. X-Git-Tag: 1.4.26.2~4^2~25 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d924b5349e06953c5e799bd291156ae3910e6cc3;p=thirdparty%2Fasterisk.git Fix segfault when reloading chan_misdn. If more ports were specified than configured in misdn.conf a reload would crash asterisk. The problem was the unconfigured port was using data from the previously configured port. When the data for an unconfigured port was freed a crash would result from the double free. (closes issue #12113) Reported by: agupta Patches: bug12113.patch uploaded by jpeeler (license 325) git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@212498 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/channels/misdn_config.c b/channels/misdn_config.c index 1cbd190212..9d947f726a 100644 --- a/channels/misdn_config.c +++ b/channels/misdn_config.c @@ -1001,6 +1001,11 @@ static void _build_port_config (struct ast_variable *v, char *cat) } for (i = 0; i < (max_ports + 1); ++i) { + if (i > 0 && cfg_for_ports[0]) { + /* default category, will populate the port_cfg with additional port + categories in subsequent calls to this function */ + memset(cfg_tmp, 0, sizeof(cfg_tmp)); + } if (cfg_for_ports[i]) { memcpy(port_cfg[i], cfg_tmp, sizeof(cfg_tmp)); }