fix the possibility of writing one byte past the end of a buffer.
authorRussell Bryant <russell@russellbryant.com>
Sat, 20 May 2006 19:54:14 +0000 (19:54 +0000)
committerRussell Bryant <russell@russellbryant.com>
Sat, 20 May 2006 19:54:14 +0000 (19:54 +0000)
(issue #7189, Mithraen)

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@29053 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/chan_sip.c

index 50cf13f..856fe24 100644 (file)
@@ -12121,10 +12121,11 @@ static int sipsock_read(int *id, int fd, short events, void *ignore)
                        ast_log(LOG_WARNING, "Recv error: %s\n", strerror(errno));
                return 1;
        }
-       if (option_debug && res == sizeof(req.data))
+       if (option_debug && res == sizeof(req.data)) {
                ast_log(LOG_DEBUG, "Received packet exceeds buffer. Data is possibly lost\n");
-
-       req.data[res] = '\0';
+               req.data[sizeof(req.data) - 1] = '\0';
+       } else
+               req.data[res] = '\0';
        req.len = res;
        if(sip_debug_test_addr(&sin))   /* Set the debug flag early on packet level */
                ast_set_flag(&req, SIP_PKT_DEBUG);