diff options
author | Nanang Izzuddin <nanang@teluu.com> | 2010-09-28 08:26:51 +0000 |
---|---|---|
committer | Nanang Izzuddin <nanang@teluu.com> | 2010-09-28 08:26:51 +0000 |
commit | 042fb984d0a90fb0ab119f95ae8b275fb588a474 (patch) | |
tree | eb4a44bf8d700c63ce212cd133d121547c745195 | |
parent | c31e3c462b475902964707fe5a75df33b34474d7 (diff) |
Fix #1135: added RTP padding checks and RTP payload length adjustment according to padding length.
Payload padding in outgoing RTP investigation results:
- the RTP does not specify RTP payload alignment.
- most codecs also do not specify RTP payload alignment, usually only octet-alignment is specified and this seems to be done.
- SRTP, RFC3711 states:
- None of the pre-defined SRTP encryption transforms uses any padding; for these, the RTP and SRTP payload sizes match exactly.
- Message authentication codes define their own padding.
- Encryption transforms that use padding are vulnerable to subtle attacks, especially when message authentication is not used.
So, currently payload padding in outgoing RTP is not necessary.
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@3325 74dad513-b988-da41-8d7b-12977e46ad98
-rw-r--r-- | pjmedia/src/pjmedia/rtp.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/pjmedia/src/pjmedia/rtp.c b/pjmedia/src/pjmedia/rtp.c index f2a66cd3..4afe6c71 100644 --- a/pjmedia/src/pjmedia/rtp.c +++ b/pjmedia/src/pjmedia/rtp.c @@ -180,6 +180,15 @@ PJ_DEF(pj_status_t) pjmedia_rtp_decode_rtp( pjmedia_rtp_session *ses, /* Find and set payload. */ *payload = ((pj_uint8_t*)pkt) + offset; *payloadlen = pkt_len - offset; + + /* Remove payload padding if any */ + if ((*hdr)->p && *payloadlen > 0) { + pj_uint8_t pad_len; + + pad_len = ((pj_uint8_t*)(*payload))[*payloadlen - 1]; + if (pad_len <= *payloadlen) + *payloadlen -= pad_len; + } return PJ_SUCCESS; } |