From 20c7be5741bfd39e2d2cbe647522b99bd339e101 Mon Sep 17 00:00:00 2001 From: Mark Nauwelaerts Date: Thu, 30 Apr 2009 10:17:23 +0200 Subject: rtspsrc: sanity checks on range info A max range that overflows should not be trusted, nor should a max range that equals the min range. Fixes #580851.(a). --- gst/rtsp/gstrtspsrc.c | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'gst/rtsp') diff --git a/gst/rtsp/gstrtspsrc.c b/gst/rtsp/gstrtspsrc.c index 7699faf8..4d786de5 100644 --- a/gst/rtsp/gstrtspsrc.c +++ b/gst/rtsp/gstrtspsrc.c @@ -4389,6 +4389,17 @@ gst_rtspsrc_parse_range (GstRTSPSrc * src, const gchar * range, GST_DEBUG_OBJECT (src, "range: max %" GST_TIME_FORMAT, GST_TIME_ARGS (seconds)); + /* live (WMS) server might send overflowed large max as its idea of infinity, + * compensate to prevent problems later on */ + if (seconds != -1 && seconds < 0) { + seconds = -1; + GST_DEBUG_OBJECT (src, "insane range, set to NONE"); + } + + /* live (WMS) might send min == max, which is not worth recording */ + if (segment->duration == -1 && seconds == segment->start) + seconds = -1; + /* don't change duration with unknown value, we might have a valid value * there that we want to keep. */ if (seconds != -1) -- cgit