diff options
author | markster <markster@f38db490-d61c-443f-a65b-d21fe96a405b> | 2005-02-13 07:45:40 +0000 |
---|---|---|
committer | markster <markster@f38db490-d61c-443f-a65b-d21fe96a405b> | 2005-02-13 07:45:40 +0000 |
commit | 3594e72d6669fa6588cc8aa49d5b345ab3f23536 (patch) | |
tree | fc22900d1233667b6c051d3eadfada88efd5db4c /channels/chan_h323.c | |
parent | c896e2bfb9639c3d8aeda60ec0900e9f71596f38 (diff) |
Add additional sanity checks (bug #3548)
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@5016 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels/chan_h323.c')
-rwxr-xr-x | channels/chan_h323.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/channels/chan_h323.c b/channels/chan_h323.c index 3756dc940..812e932fb 100755 --- a/channels/chan_h323.c +++ b/channels/chan_h323.c @@ -366,7 +366,8 @@ static struct oh323_peer *build_peer(char *name, struct ast_variable *v) } else { ast_mutex_unlock(&peerl.lock); peer = (struct oh323_peer*)malloc(sizeof(struct oh323_peer)); - memset(peer, 0, sizeof(struct oh323_peer)); + if (peer) + memset(peer, 0, sizeof(struct oh323_peer)); } if (peer) { if (!found) { @@ -468,7 +469,7 @@ static int oh323_digit(struct ast_channel *c, char digit) ast_rtp_senddigit(p->rtp, digit); } /* If in-band DTMF is desired, send that */ - if (p->dtmfmode & H323_DTMF_INBAND) { + if (p && (p->dtmfmode & H323_DTMF_INBAND)) { h323_send_tone(p->cd.call_token, digit); } return 0; @@ -632,9 +633,9 @@ static struct ast_frame *oh323_rtp_read(struct oh323_pvt *pvt) ast_set_write_format(pvt->owner, pvt->owner->writeformat); } /* Do in-band DTMF detection */ - if (pvt->dtmfmode & H323_DTMF_INBAND) { + if ((pvt->dtmfmode & H323_DTMF_INBAND) && pvt->vad) { f = ast_dsp_process(pvt->owner,pvt->vad,f); - if (f->frametype == AST_FRAME_DTMF) { + if (f &&(f->frametype == AST_FRAME_DTMF)) { ast_log(LOG_DEBUG, "Received in-band digit %c.\n", f->subclass); } } @@ -857,11 +858,11 @@ static struct oh323_pvt *oh323_alloc(int callid) if ((pvt->cd).call_token == NULL) { (pvt->cd).call_token = (char *)malloc(128); } - memset((char *)(pvt->cd).call_token, 0, 128); if (!pvt->cd.call_token) { ast_log(LOG_ERROR, "Not enough memory to alocate call token\n"); return NULL; } + memset((char *)(pvt->cd).call_token, 0, 128); pvt->cd.call_reference = callid; pvt->bridge = bridging; pvt->dtmfmode = dtmfmode; |