mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2026-05-13 23:50:29 -04:00
rtp: skip header extensions
When the header X bit is set, read the extension size and skip the extension.
This commit is contained in:
parent
08d4e319cf
commit
b72f422f35
3 changed files with 15 additions and 0 deletions
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue