]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
ftmod_libpri: final fix called number overlap receiving...
authorStefan Knoblich <s.knoblich@axsentis.de>
Thu, 30 Jun 2011 21:49:45 +0000 (23:49 +0200)
committerStefan Knoblich <s.knoblich@axsentis.de>
Thu, 30 Jun 2011 21:53:36 +0000 (23:53 +0200)
ftdm_copy_string() length parameter needs to include the terminating NUL byte.

Signed-off-by: Stefan Knoblich <stkn@openisdn.net>
Tested-by: Stefan Knoblich <stkn@openisdn.net>
libs/freetdm/src/ftmod/ftmod_libpri/ftmod_libpri.c

index 8bebbbe242df43e7d6ec92a690ef536c73d399ca..949989be2134993ea0b221780642c0adde0de963 100644 (file)
@@ -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)) {
                        int digits = strlen(pevent->ring.callednum);
                        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) {
                                ftdm_log_chan(chan, FTDM_LOG_WARNING, "Length %d of digit string exceeds available space %d of DNIS, truncating!\n",
                                        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';
                }
                if (pevent->ring.complete) {