rtp: fix non null terminated string / non portable sscanf
authorLev Melnikovsky <melnikovsky@gmail.com>
Wed, 4 Nov 2015 10:42:21 +0000 (12:42 +0200)
committerTanu Kaskinen <tanuk@iki.fi>
Wed, 4 Nov 2015 10:45:21 +0000 (12:45 +0200)
commit9d2b763e29116e184e2f893f68cc5e4c66f28bcc
tree77de711aa1c9e25d18f7e89a734c7c5251ceb372
parent8fe984770681ba4a63f0dd4a114076f0fc7230f0
rtp: fix non null terminated string / non portable sscanf

In rtp.c:

if (sscanf(t+9, "%i %64c", &_payload, c) == 2)

the string c seems to be non-null terminated. It is later used as
following:

c[strcspn(c, "\n")] = 0;

The same piece of code is responsible for the inability of pulseaudio
on OpenWRT to handle RTP stream at the rate 48000 from another
machine:

[pulseaudio] sdp.c: Failed to parse SDP data: missing data.

It turns out that uClibc does not agree with glibc about "%64c", see
http://git.uclibc.org/uClibc/tree/docs/Glibc_vs_uClibc_Differences.txt

BugLink: https://bugs.freedesktop.org/show_bug.cgi?id=92568
src/modules/rtp/sdp.c