diff options
author | Martin Storsjö <martin@martin.st> | 2015-01-21 13:05:43 +0100 |
---|---|---|
committer | Martin Storsjö <martin@martin.st> | 2015-07-30 16:59:36 +0300 |
commit | 764ec70149728be82304c163ccc4e280f1629201 (patch) | |
tree | 7b003849012c497bf35bdca2c7e4e8b2b8587662 /libavformat/rtsp.c | |
parent | 6877537ff321136cf78ab03b8b91e6b6f218db5b (diff) | |
download | ffmpeg-764ec70149728be82304c163ccc4e280f1629201.tar.gz |
rtsp: Only interpret $ as interleaved packet indicator at the start of replies
Allow $ as character anywhere within normal RTSP replies - both
within the lines, and as the first character of RTSP header lines.
(The existing old comment indicated that an inline packet could
start at any line within a RTSP reply header, but that doesn't
sound valid to me, and I'm not sure if the existing code
handled that correctly either.)
CC: libav-stable@libav.org
Signed-off-by: Martin Storsjö <martin@martin.st>
Diffstat (limited to 'libavformat/rtsp.c')
-rw-r--r-- | libavformat/rtsp.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/libavformat/rtsp.c b/libavformat/rtsp.c index cbea685dcf..90a6b75e4f 100644 --- a/libavformat/rtsp.c +++ b/libavformat/rtsp.c @@ -1128,6 +1128,7 @@ int ff_rtsp_read_reply(AVFormatContext *s, RTSPMessageHeader *reply, unsigned char ch; const char *p; int ret, content_length, line_count = 0, request = 0; + int first_line = 1; unsigned char *content = NULL; start: @@ -1147,8 +1148,7 @@ start: return AVERROR_EOF; if (ch == '\n') break; - if (ch == '$') { - /* XXX: only parse it if first char on line ? */ + if (ch == '$' && first_line && q == buf) { if (return_on_interleaved_data) { return 1; } else @@ -1159,6 +1159,7 @@ start: } } *q = '\0'; + first_line = 0; av_log(s, AV_LOG_TRACE, "line='%s'\n", buf); |