rtp: skip header extensions

When the header X bit is set, read the extension size and skip the
extension.
This commit is contained in:
Wim Taymans 2026-05-11 09:25:31 +02:00
parent 08d4e319cf
commit b72f422f35
3 changed files with 15 additions and 0 deletions

View file

@ -341,6 +341,11 @@ static int rtp_audio_receive(struct impl *impl, uint8_t *buffer, ssize_t len,
goto invalid_version;
hlen = 12 + hdr->cc * 4;
if (hdr->x) {
if (hlen + 4 > len)
goto invalid_len;
hlen += 4 + ntohs(*(uint16_t *)(buffer + hlen + 2)) * 4;
}
if (hlen > len)
goto invalid_len;

View file

@ -324,6 +324,11 @@ static int rtp_midi_receive(struct impl *impl, uint8_t *buffer, ssize_t len,
goto invalid_version;
hlen = 12 + hdr->cc * 4;
if (hdr->x) {
if (hlen + 4 >= len)
goto invalid_len;
hlen += 4 + ntohs(*(uint16_t *)(buffer + hlen + 2)) * 4;
}
if (hlen >= len)
goto invalid_len;

View file

@ -119,6 +119,11 @@ static int rtp_opus_receive(struct impl *impl, uint8_t *buffer, ssize_t len,
goto invalid_version;
hlen = 12 + hdr->cc * 4;
if (hdr->x) {
if (hlen + 4 > len)
goto invalid_len;
hlen += 4 + ntohs(*(uint16_t *)(buffer + hlen + 2)) * 4;
}
if (hlen > len)
goto invalid_len;