[svn-commits] tilghman: trunk r104974 - /trunk/channels/chan_vpb.cc
SVN commits to the Digium repositories
svn-commits at lists.digium.com
Thu Feb 28 08:42:32 CST 2008
Author: tilghman
Date: Thu Feb 28 08:42:32 2008
New Revision: 104974
URL: http://svn.digium.com/view/asterisk?view=rev&rev=104974
Log:
Fix crash when configuration does not match hardware detection.
(closes issue #12096)
Reported by: mmickan
Patches:
chan_vpb.cc.diff uploaded by mmickan (license 400)
Modified:
trunk/channels/chan_vpb.cc
Modified: trunk/channels/chan_vpb.cc
URL: http://svn.digium.com/view/asterisk/trunk/channels/chan_vpb.cc?view=diff&rev=104974&r1=104973&r2=104974
==============================================================================
--- trunk/channels/chan_vpb.cc (original)
+++ trunk/channels/chan_vpb.cc Thu Feb 28 08:42:32 2008
@@ -2706,6 +2706,18 @@
int bal3 = -1;
char * callerid = NULL;
+ int num_cards = 0;
+ try {
+ num_cards = vpb_get_num_cards();
+ } catch (VpbException e) {
+ ast_log(LOG_ERROR, "No Voicetronix cards detected\n");
+ return AST_MODULE_LOAD_DECLINE;
+ }
+
+ int ports_per_card[num_cards];
+ for (int i = 0; i < num_cards; ++i)
+ ports_per_card[i] = vpb_get_ports_per_card(i);
+
cfg = ast_config_load(config, config_flags);
/* We *must* have a config file otherwise stop immediately */
@@ -2768,6 +2780,11 @@
UseNativeBridge = atoi(v->value);
} else if (strcasecmp(v->name, "channel") == 0) {
int channel = atoi(v->value);
+ if (board >= num_cards || board < 0 || channel < 0 || channel >= ports_per_card[board]) {
+ ast_log(LOG_ERROR, "Invalid board/channel (%d/%d) for channel '%s'\n", board, channel, v->value);
+ error = AST_MODULE_LOAD_FAILURE;
+ goto done;
+ }
tmp = mkif(board, channel, mode, got_gain, txgain, rxgain, txswgain, rxswgain, bal1, bal2, bal3, callerid, echo_cancel,group,callgroup,pickupgroup);
if (tmp) {
if (first_channel) {
More information about the svn-commits
mailing list