From 6e19d9add7926b6c60224eab00e866284ea4f61f Mon Sep 17 00:00:00 2001 From: Mathieu Rene Date: Tue, 24 Feb 2009 21:27:35 +0000 Subject: [PATCH] Fix span index issues git-svn-id: http://svn.openzap.org/svn/openzap/trunk@670 a93c3328-9c30-0410-af19-c9cd2b2d52af --- libs/freetdm/src/zap_io.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/libs/freetdm/src/zap_io.c b/libs/freetdm/src/zap_io.c index daaf1061cb..e83bcf3759 100644 --- a/libs/freetdm/src/zap_io.c +++ b/libs/freetdm/src/zap_io.c @@ -839,7 +839,7 @@ zap_status_t zap_channel_open_any(uint32_t span_id, zap_direction_t direction, z uint32_t span_max; if (span_id) { - if (span_id >= globals.span_index) { + if (span_id > globals.span_index || !globals.span[span_id]) { zap_log(ZAP_LOG_CRIT, "SPAN NOT DEFINED!\n"); *zchan = NULL; return ZAP_FAIL; @@ -1047,9 +1047,16 @@ zap_status_t zap_channel_open(uint32_t span_id, uint32_t chan_id, zap_channel_t if (span_id < ZAP_MAX_SPANS_INTERFACE && chan_id < ZAP_MAX_CHANNELS_SPAN) { zap_channel_t *check; + + if (span_id > globals.span_index || !globals.span[span_id]) { + zap_log(ZAP_LOG_ERROR, "SPAN NOT DEFINED!\n"); + *zchan = NULL; + goto done; + } if (globals.spans[span_id]->channel_request) { zap_log(ZAP_LOG_ERROR, "Individual channel selection not implemented on this span.\n"); + *zchan = NULL; goto done; } @@ -1057,6 +1064,7 @@ zap_status_t zap_channel_open(uint32_t span_id, uint32_t chan_id, zap_channel_t if (zap_test_flag(check, ZAP_CHANNEL_SUSPENDED) || !zap_test_flag(check, ZAP_CHANNEL_READY) || (status = zap_mutex_trylock(check->mutex)) != ZAP_SUCCESS) { + *zchan = NULL; goto done; }