rtp_engine: rtcp_report_to_json can overflow the ssrc integer value

When writing an RTCP report to json the code attempts to pack the "ssrc" and
"source_ssrc" unsigned integer values as a signed int value type. This of course
means if the ssrc's unsigned value is greater than that which can fit into a
signed integer value it gets converted to a negative number. Subsequently, the
negative value goes out in the json report.

This patch now packs the value as a json_int_t, which is the widest integer type
available on a given system. This should make it so the value no longer
overflows.

Note, this was caught by two failing tests hep/rtcp-receiver/ and
hep/rtcp-sender.

Change-Id: I2af275286ee5e795b79f0c3d450d9e4b28e958b0
This commit is contained in:
Kevin Harwell
2018-09-17 15:35:05 -05:00
committed by Corey Farrell
parent dec6ebd9e1
commit 755febe497
7 changed files with 101 additions and 37 deletions

View File

@@ -6,6 +6,9 @@
#include "asterisk/buildopts.h" /* IWYU pragma: export */
/* Define to 'long' or 'long long' */
#undef AST_JSON_INT_T
/* Define to 1 if internal poll should be used. */
#undef AST_POLL_COMPAT

View File

@@ -81,6 +81,11 @@
/*!@{*/
/*!
* \brief Primarily used to cast when packing to an "I" type.
*/
typedef AST_JSON_INT_T ast_json_int_t;
/*!
* \brief Initialize the JSON library.
*/