diff --git a/libavformat/rtspdec.c b/libavformat/rtspdec.c index 113da975e1..f56578bae4 100644 --- a/libavformat/rtspdec.c +++ b/libavformat/rtspdec.c @@ -185,7 +185,8 @@ static int rtsp_read_announce(AVFormatContext *s) rtsp_send_reply(s, RTSP_STATUS_SERVICE, NULL, request.seq); return AVERROR_OPTION_NOT_FOUND; } - if (request.content_length && request.content_length < sizeof(sdp) - 1) { + + if (request.content_length > 0 && request.content_length < sizeof(sdp) - 1) { /* Read SDP */ if (ffurl_read_complete(rt->rtsp_hd, sdp, request.content_length) < request.content_length) { @@ -203,10 +204,10 @@ static int rtsp_read_announce(AVFormatContext *s) return 0; } av_log(s, AV_LOG_ERROR, - "Content-Length header value exceeds sdp allocated buffer (4KB)\n"); + "Invalid ANNOUNCE Content-Length %d\n", request.content_length); rtsp_send_reply(s, RTSP_STATUS_INTERNAL, - "Content-Length exceeds buffer size", request.seq); - return AVERROR(EIO); + "Invalid Content-Length", request.seq); + return AVERROR_INVALIDDATA; } static int rtsp_read_options(AVFormatContext *s)