summaryrefslogtreecommitdiffstats
path: root/stream
diff options
context:
space:
mode:
authorreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2009-09-02 10:55:36 +0000
committerreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2009-09-02 10:55:36 +0000
commitd1e7b4dc6f7dedea721e699827ae41d23d9d0e97 (patch)
tree895556179ce1b0dc4887af91a9db972270a0b079 /stream
parentac11b35a6a90fd121fb51ac4b808523f7dc7871a (diff)
downloadmpv-d1e7b4dc6f7dedea721e699827ae41d23d9d0e97.tar.bz2
mpv-d1e7b4dc6f7dedea721e699827ae41d23d9d0e97.tar.xz
Fix possible crashes with invalid SDPs that result in stream descriptions
not being initialized. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@29626 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'stream')
-rw-r--r--stream/librtsp/rtsp_session.c3
-rw-r--r--stream/realrtsp/real.c2
2 files changed, 4 insertions, 1 deletions
diff --git a/stream/librtsp/rtsp_session.c b/stream/librtsp/rtsp_session.c
index 72b8a2a607..33c36f15b9 100644
--- a/stream/librtsp/rtsp_session.c
+++ b/stream/librtsp/rtsp_session.c
@@ -139,7 +139,8 @@ rtsp_session_t *rtsp_session_start(int fd, char **mrl, char *path, char *host,
/* we are talking to a real server ... */
rmff_header_t *h=real_setup_and_get_header(rtsp_session->s, bandwidth, user, pass);
- if (!h) {
+ if (!h || !h->streams[0]) {
+ rmff_free_header(h);
/* got an redirect? */
if (rtsp_search_answers(rtsp_session->s, RTSP_OPTIONS_LOCATION))
{
diff --git a/stream/realrtsp/real.c b/stream/realrtsp/real.c
index 29c88335be..0206833301 100644
--- a/stream/realrtsp/real.c
+++ b/stream/realrtsp/real.c
@@ -235,6 +235,8 @@ static rmff_header_t *real_parse_sdp(char *data, char **stream_rules, uint32_t b
char b[64];
int rulematches[MAX_RULEMATCHES];
+ if (!desc->stream[i])
+ continue;
#ifdef LOG
printf("calling asmrp_match with:\n%s\n%u\n", desc->stream[i]->asm_rule_book, bandwidth);
#endif