[FFmpeg-cvslog] avformat/rtsp: Set port_off to zero for low min/max port range
Andriy Gelman
git at videolan.org
Mon Jul 5 20:44:17 EEST 2021
ffmpeg | branch: master | Andriy Gelman <andriy.gelman at gmail.com> | Sun Jul 4 11:40:25 2021 -0400| [02387de90e71a6b035e3adf2446b6002ca135511] | committer: Andriy Gelman
avformat/rtsp: Set port_off to zero for low min/max port range
Fixes:
$ ffmpeg -min_port 32000 -max_port 32001 -i rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mov -f null -
[1] 303871 floating point exception (core dumped)
Reviewed-by: Martin Storsjö <martin at martin.st>
Signed-off-by: Andriy Gelman <andriy.gelman at gmail.com>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=02387de90e71a6b035e3adf2446b6002ca135511
---
libavformat/rtsp.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/libavformat/rtsp.c b/libavformat/rtsp.c
index d4ab8f28bf..f294d0ec24 100644
--- a/libavformat/rtsp.c
+++ b/libavformat/rtsp.c
@@ -1438,7 +1438,7 @@ int ff_rtsp_make_setup_request(AVFormatContext *s, const char *host, int port,
int lower_transport, const char *real_challenge)
{
RTSPState *rt = s->priv_data;
- int rtx = 0, j, i, err, interleave = 0, port_off;
+ int rtx = 0, j, i, err, interleave = 0, port_off = 0;
RTSPStream *rtsp_st;
RTSPMessageHeader reply1, *reply = &reply1;
char cmd[MAX_URL_SIZE];
@@ -1457,9 +1457,11 @@ int ff_rtsp_make_setup_request(AVFormatContext *s, const char *host, int port,
/* Choose a random starting offset within the first half of the
* port range, to allow for a number of ports to try even if the offset
* happens to be at the end of the random range. */
+ if (rt->rtp_port_max - rt->rtp_port_min >= 4) {
port_off = av_get_random_seed() % ((rt->rtp_port_max - rt->rtp_port_min)/2);
/* even random offset */
port_off -= port_off & 0x01;
+ }
for (j = rt->rtp_port_min + port_off, i = 0; i < rt->nb_rtsp_streams; ++i) {
char transport[MAX_URL_SIZE];
More information about the ffmpeg-cvslog
mailing list