mirror of
https://gitee.com/openharmony/third_party_ffmpeg
synced 2024-11-25 20:29:50 +00:00
rtsp: Require the transport reply from the server to match the request
This fixes a crash if we requested TCP interleaved transport, but the server replies with transport data for UDP. According to the RFC, the server isn't allowed to respond with another transport type than the one requested. Originally committed as revision 26077 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
81c8c18780
commit
8c579c1c60
@ -1111,11 +1111,12 @@ static int make_setup_request(AVFormatContext *s, const char *host, int port,
|
||||
rt->transport = reply->transports[0].transport;
|
||||
}
|
||||
|
||||
/* close RTP connection if not chosen */
|
||||
if (reply->transports[0].lower_transport != RTSP_LOWER_TRANSPORT_UDP &&
|
||||
(lower_transport == RTSP_LOWER_TRANSPORT_UDP)) {
|
||||
url_close(rtsp_st->rtp_handle);
|
||||
rtsp_st->rtp_handle = NULL;
|
||||
/* Fail if the server responded with another lower transport mode
|
||||
* than what we requested. */
|
||||
if (reply->transports[0].lower_transport != lower_transport) {
|
||||
av_log(s, AV_LOG_ERROR, "Nonmatching transport in server reply\n");
|
||||
err = AVERROR_INVALIDDATA;
|
||||
goto fail;
|
||||
}
|
||||
|
||||
switch(reply->transports[0].lower_transport) {
|
||||
|
Loading…
Reference in New Issue
Block a user