mirror of https://git.ffmpeg.org/ffmpeg.git
avformat/rtspdec: fix potential mem leak in listen mode
Currently a repeating setup request (with the same stream id) will simply overwrite rtp_handle/transport_priv without freeing the resources first. This is fixed by closing the previous setup request. Reviewed-by: Martin Storsjö <martin@martin.st> Signed-off-by: Andriy Gelman <andriy.gelman@gmail.com>
This commit is contained in:
parent
b0019b909b
commit
f3891430fc
|
@ -274,6 +274,17 @@ static int rtsp_read_setup(AVFormatContext *s, char* host, char *controlurl)
|
||||||
rtsp_st = rt->rtsp_streams[streamid];
|
rtsp_st = rt->rtsp_streams[streamid];
|
||||||
localport = rt->rtp_port_min;
|
localport = rt->rtp_port_min;
|
||||||
|
|
||||||
|
/* check if the stream has already been setup */
|
||||||
|
if (rtsp_st->transport_priv) {
|
||||||
|
if (CONFIG_RTPDEC && rt->transport == RTSP_TRANSPORT_RDT)
|
||||||
|
ff_rdt_parse_close(rtsp_st->transport_priv);
|
||||||
|
else if (CONFIG_RTPDEC && rt->transport == RTSP_TRANSPORT_RTP)
|
||||||
|
ff_rtp_parse_close(rtsp_st->transport_priv);
|
||||||
|
rtsp_st->transport_priv = NULL;
|
||||||
|
}
|
||||||
|
if (rtsp_st->rtp_handle)
|
||||||
|
ffurl_closep(&rtsp_st->rtp_handle);
|
||||||
|
|
||||||
if (request.transports[0].lower_transport == RTSP_LOWER_TRANSPORT_TCP) {
|
if (request.transports[0].lower_transport == RTSP_LOWER_TRANSPORT_TCP) {
|
||||||
rt->lower_transport = RTSP_LOWER_TRANSPORT_TCP;
|
rt->lower_transport = RTSP_LOWER_TRANSPORT_TCP;
|
||||||
if ((ret = ff_rtsp_open_transport_ctx(s, rtsp_st))) {
|
if ((ret = ff_rtsp_open_transport_ctx(s, rtsp_st))) {
|
||||||
|
|
Loading…
Reference in New Issue