aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Welte <laforge@osmocom.org>2020-06-20 20:50:52 +0200
committerHarald Welte <laforge@osmocom.org>2020-07-01 09:50:01 +0200
commit5613b7d850d1d148908ac6a27542fa84b1a94a13 (patch)
tree13df500232a12d267af12fd8cca9c70c021d17aa
parentf12d4240a07aca32cd91a3418d1b250a3443ce5d (diff)
don't assert just because a broken RTP packet (wrong lenth) is received
-rw-r--r--src/fmt_rtp_efr.c6
-rw-r--r--src/fmt_rtp_hr_etsi.c6
-rw-r--r--src/fmt_rtp_hr_ietf.c6
3 files changed, 15 insertions, 3 deletions
diff --git a/src/fmt_rtp_efr.c b/src/fmt_rtp_efr.c
index accfd4f..7afb1a3 100644
--- a/src/fmt_rtp_efr.c
+++ b/src/fmt_rtp_efr.c
@@ -52,7 +52,11 @@ rtp_efr_to_canon(uint8_t *dst, const uint8_t *src, unsigned int src_len)
{
int i;
- assert(src_len == EFR_LEN);
+ /* broken RTP frames may be short; substitute empty frame */
+ if (src_len != EFR_LEN) {
+ memset(dst, 0, EFR_CANON_LEN);
+ return EFR_CANON_LEN;
+ }
for (i=0; i<(EFR_LEN-1); i++)
dst[i] = (src[i] << 4) | (src[i+1] >> 4);
diff --git a/src/fmt_rtp_hr_etsi.c b/src/fmt_rtp_hr_etsi.c
index 9ed9b22..0b7e392 100644
--- a/src/fmt_rtp_hr_etsi.c
+++ b/src/fmt_rtp_hr_etsi.c
@@ -42,7 +42,11 @@ static int
rtp_hr_etsi_to_canon(uint8_t *dst, const uint8_t *src, unsigned int src_len)
{
/* according to TS 101 318 */
- assert(src_len == HR_CANON_LEN);
+ /* broken RTP frames may be short; substitute empty frame */
+ if (src_len != HR_CANON_LEN) {
+ memset(dst, 0, HR_CANON_LEN);
+ return HR_CANON_LEN;
+ }
memcpy(dst, src, src_len);
return HR_CANON_LEN;
diff --git a/src/fmt_rtp_hr_ietf.c b/src/fmt_rtp_hr_ietf.c
index 4ee548f..a840d4b 100644
--- a/src/fmt_rtp_hr_ietf.c
+++ b/src/fmt_rtp_hr_ietf.c
@@ -60,7 +60,11 @@ static int
rtp_hr_ietf_to_canon(uint8_t *dst, const uint8_t *src, unsigned int src_len)
{
/* according to RFC5993 */
- assert(src_len == HR_LEN);
+ /* broken RTP frames may be short; substitute empty frame */
+ if (src_len != HR_LEN) {
+ memset(dst, 0, HR_LEN);
+ return HR_CANON_LEN;
+ }
/* Remove ToC byte */
memcpy(dst, src+1, HR_CANON_LEN);