提交 1c608f0a authored 作者: Stefan Knoblich's avatar Stefan Knoblich

ftmod_libpri: final fix called number overlap receiving...

ftdm_copy_string() length parameter needs to include the terminating NUL byte.
Signed-off-by: 's avatarStefan Knoblich <stkn@openisdn.net>
Tested-by: 's avatarStefan Knoblich <stkn@openisdn.net>
上级 d28b2391
...@@ -890,14 +890,14 @@ static int on_info(lpwrap_pri_t *spri, lpwrap_pri_event_t event_type, pri_event ...@@ -890,14 +890,14 @@ static int on_info(lpwrap_pri_t *spri, lpwrap_pri_event_t event_type, pri_event
if (!ftdm_strlen_zero(pevent->ring.callednum)) { if (!ftdm_strlen_zero(pevent->ring.callednum)) {
int digits = strlen(pevent->ring.callednum); int digits = strlen(pevent->ring.callednum);
int offset = strlen(caller_data->dnis.digits); int offset = strlen(caller_data->dnis.digits);
int len = MIN(sizeof(caller_data->dnis.digits) - 1 - offset, digits); int len = MIN(sizeof(caller_data->dnis.digits) - 1 - offset, digits); /* max. length without terminator */
if (len < digits) { if (len < digits) {
ftdm_log_chan(chan, FTDM_LOG_WARNING, "Length %d of digit string exceeds available space %d of DNIS, truncating!\n", ftdm_log_chan(chan, FTDM_LOG_WARNING, "Length %d of digit string exceeds available space %d of DNIS, truncating!\n",
digits, len); digits, len);
} }
ftdm_copy_string(&caller_data->dnis.digits[offset], (char *)pevent->ring.callednum, len); ftdm_copy_string(&caller_data->dnis.digits[offset], (char *)pevent->ring.callednum, len + 1); /* max. length with terminator */
caller_data->dnis.digits[offset + len] = '\0'; caller_data->dnis.digits[offset + len] = '\0';
} }
if (pevent->ring.complete) { if (pevent->ring.complete) {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论