aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Storsjö <martin@martin.st>2015-01-21 13:05:43 +0100
committerMartin Storsjö <martin@martin.st>2015-07-30 16:59:36 +0300
commit764ec70149728be82304c163ccc4e280f1629201 (patch)
tree7b003849012c497bf35bdca2c7e4e8b2b8587662
parent6877537ff321136cf78ab03b8b91e6b6f218db5b (diff)
downloadffmpeg-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>
-rw-r--r--libavformat/rtsp.c5
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);