diff --git a/channels/chan_dahdi.c b/channels/chan_dahdi.c index d425b323a4..8b70447e9c 100644 --- a/channels/chan_dahdi.c +++ b/channels/chan_dahdi.c @@ -7740,8 +7740,16 @@ static struct ast_frame *dahdi_handle_event(struct ast_channel *ast) c++; else c = p->dialdest; - if (*c) snprintf(p->dop.dialstr, sizeof(p->dop.dialstr), "M*0%s#", c); - else ast_copy_string(p->dop.dialstr,"M*2#", sizeof(p->dop.dialstr)); + + if (*c) { + int numchars = snprintf(p->dop.dialstr, sizeof(p->dop.dialstr), "M*0%s#", c); + if (numchars >= sizeof(p->dop.dialstr)) { + ast_log(LOG_WARNING, "Dial string '%s' truncated\n", c); + } + } else { + ast_copy_string(p->dop.dialstr,"M*2#", sizeof(p->dop.dialstr)); + } + if (strlen(p->dop.dialstr) > 4) { memset(p->echorest, 'w', sizeof(p->echorest) - 1); strcpy(p->echorest + (p->echotraining / 401) + 1, p->dop.dialstr + strlen(p->dop.dialstr) - 2); diff --git a/channels/sig_analog.c b/channels/sig_analog.c index ea0c31d802..c2e3e496c1 100644 --- a/channels/sig_analog.c +++ b/channels/sig_analog.c @@ -2957,11 +2957,16 @@ static struct ast_frame *__analog_handle_event(struct analog_pvt *p, struct ast_ } else { c = p->dialdest; } + if (*c) { - snprintf(p->dop.dialstr, sizeof(p->dop.dialstr), "M*0%s#", c); + int numchars = snprintf(p->dop.dialstr, sizeof(p->dop.dialstr), "M*0%s#", c); + if (numchars >= sizeof(p->dop.dialstr)) { + ast_log(LOG_WARNING, "Dial string '%s' truncated\n", c); + } } else { ast_copy_string(p->dop.dialstr,"M*2#", sizeof(p->dop.dialstr)); } + if (strlen(p->dop.dialstr) > 4) { memset(p->echorest, 'w', sizeof(p->echorest) - 1); strcpy(p->echorest + (p->echotraining / 401) + 1, p->dop.dialstr + strlen(p->dop.dialstr) - 2);