diff options
author | reimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2009-09-02 10:55:36 +0000 |
---|---|---|
committer | reimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2009-09-02 10:55:36 +0000 |
commit | d1e7b4dc6f7dedea721e699827ae41d23d9d0e97 (patch) | |
tree | 895556179ce1b0dc4887af91a9db972270a0b079 /stream | |
parent | ac11b35a6a90fd121fb51ac4b808523f7dc7871a (diff) |
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.c | 3 | ||||
-rw-r--r-- | stream/realrtsp/real.c | 2 |
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 |