From 8718878490016dbc64c36bc25e695672debf79d3 Mon Sep 17 00:00:00 2001 From: Tilghman Lesher Date: Fri, 7 Mar 2008 06:54:47 +0000 Subject: Merged revisions 106552 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r106552 | tilghman | 2008-03-07 00:36:33 -0600 (Fri, 07 Mar 2008) | 6 lines Safely use the strncat() function. (closes issue #11958) Reported by: norman Patches: 20080209__bug11958.diff.txt uploaded by Corydon76 (license 14) ........ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@106553 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- channels/chan_misdn.c | 8 ++++---- channels/chan_sip.c | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) (limited to 'channels') diff --git a/channels/chan_misdn.c b/channels/chan_misdn.c index 252b00438..f94f2527b 100644 --- a/channels/chan_misdn.c +++ b/channels/chan_misdn.c @@ -2384,12 +2384,12 @@ static int misdn_digit_end(struct ast_channel *ast, char digit, unsigned int dur switch (p->state ) { case MISDN_CALLING: if (strlen(bc->infos_pending) < sizeof(bc->infos_pending) - 1) - strncat(bc->infos_pending, buf, sizeof(bc->infos_pending) - 1); + strncat(bc->infos_pending, buf, sizeof(bc->infos_pending) - strlen(bc->infos_pending) - 1); break; case MISDN_CALLING_ACKNOWLEDGE: ast_copy_string(bc->info_dad, buf, sizeof(bc->info_dad)); if (strlen(bc->dad) < sizeof(bc->dad) - 1) - strncat(bc->dad, buf, sizeof(bc->dad) - 1); + strncat(bc->dad, buf, sizeof(bc->dad) - strlen(bc->dad) - 1); ast_copy_string(p->ast->exten, bc->dad, sizeof(p->ast->exten)); misdn_lib_send_event( bc, EVENT_INFORMATION); break; @@ -4112,7 +4112,7 @@ cb_events(enum event_e event, struct misdn_bchannel *bc, void *user_data) ast_copy_string(bc->info_dad, bc->keypad, sizeof(bc->info_dad)); } - strncat(bc->dad,bc->info_dad, sizeof(bc->dad) - 1); + strncat(bc->dad,bc->info_dad, sizeof(bc->dad) - strlen(bc->dad) - 1); ast_copy_string(ch->ast->exten, bc->dad, sizeof(ch->ast->exten)); /* Check for Pickup Request first */ @@ -4186,7 +4186,7 @@ cb_events(enum event_e event, struct misdn_bchannel *bc, void *user_data) misdn_cfg_get(0, MISDN_GEN_APPEND_DIGITS2EXTEN, &digits, sizeof(digits)); if (ch->state != MISDN_CONNECTED ) { if (digits) { - strncat(bc->dad, bc->info_dad, sizeof(bc->dad) - 1); + strncat(bc->dad, bc->info_dad, sizeof(bc->dad) - strlen(bc->dad) - 1); ast_copy_string(ch->ast->exten, bc->dad, sizeof(ch->ast->exten)); ast_cdr_update(ch->ast); } diff --git a/channels/chan_sip.c b/channels/chan_sip.c index fa9052dfa..40645214a 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -2208,7 +2208,7 @@ static void *_sip_tcp_helper_thread(struct sip_pvt *pvt, struct ast_tcptls_serve ast_mutex_unlock(req.socket.lock); if (me->stop) goto cleanup; - strncat(req.data, buf, sizeof(req.data) - req.len); + strncat(req.data, buf, sizeof(req.data) - req.len - 1); req.len = strlen(req.data); } parse_copy(&reqcpy, &req); @@ -2223,7 +2223,7 @@ static void *_sip_tcp_helper_thread(struct sip_pvt *pvt, struct ast_tcptls_serve if (me->stop) goto cleanup; cl -= strlen(buf); - strncat(req.data, buf, sizeof(req.data) - req.len); + strncat(req.data, buf, sizeof(req.data) - req.len - 1); req.len = strlen(req.data); } } -- cgit v1.2.3