Skip to content

Commit

Permalink
srtp: Improve the minimum encryption buffer size check
Browse files Browse the repository at this point in the history
This clarifies where the limit number comes from, and only
requires exactly as much padding space as will be needed.

Signed-off-by: Martin Storsjö <martin@martin.st>
  • Loading branch information
mstorsjo committed Jan 20, 2013
1 parent e1d0b3d commit a2a991b
Showing 1 changed file with 10 additions and 6 deletions.
16 changes: 10 additions & 6 deletions libavformat/srtp.c
Expand Up @@ -240,20 +240,24 @@ int ff_srtp_encrypt(struct SRTPContext *s, const uint8_t *in, int len,
uint8_t iv[16] = { 0 }, hmac[20];
uint64_t index;
uint32_t ssrc;
int rtcp, hmac_size;
int rtcp, hmac_size, padding;
uint8_t *buf;

if (len + 14 > outlen)
return 0;
if (len < 12)
return 0;

rtcp = RTP_PT_IS_RTCP(in[1]);
hmac_size = rtcp ? s->rtcp_hmac_size : s->rtp_hmac_size;
padding = hmac_size;
if (rtcp)
padding += 4; // For the RTCP index

if (len + padding > outlen)
return 0;

memcpy(out, in, len);
buf = out;

rtcp = RTP_PT_IS_RTCP(buf[1]);
hmac_size = rtcp ? s->rtcp_hmac_size : s->rtp_hmac_size;

if (rtcp) {
ssrc = AV_RB32(buf + 4);
index = s->rtcp_index++;
Expand Down

0 comments on commit a2a991b

Please sign in to comment.