From: Limin Wang <lance.lmw...@gmail.com> this allows getting rid of the hardcoded max size of SDP.
Reviewed-by: Martin Storsjö <mar...@martin.st> Signed-off-by: Limin Wang <lance.lmw...@gmail.com> --- libavformat/rtsp.c | 25 +++++++++---------------- 1 file changed, 9 insertions(+), 16 deletions(-) diff --git a/libavformat/rtsp.c b/libavformat/rtsp.c index e6a4993..17ffac2 100644 --- a/libavformat/rtsp.c +++ b/libavformat/rtsp.c @@ -2373,9 +2373,9 @@ static int sdp_read_header(AVFormatContext *s) { RTSPState *rt = s->priv_data; RTSPStream *rtsp_st; - int size, i, err; - char *content; + int i, err; char url[MAX_URL_SIZE]; + AVBPrint bp; if (!ff_network_init()) return AVERROR(EIO); @@ -2386,22 +2386,15 @@ static int sdp_read_header(AVFormatContext *s) rt->lower_transport = RTSP_LOWER_TRANSPORT_CUSTOM; /* read the whole sdp file */ - /* XXX: better loading */ - content = av_malloc(SDP_MAX_SIZE); - if (!content) { + av_bprint_init(&bp, 0, AV_BPRINT_SIZE_UNLIMITED); + err = avio_read_to_bprint(s->pb, &bp, INT_MAX); + if (err < 0 ) { ff_network_close(); - return AVERROR(ENOMEM); + av_bprint_finalize(&bp, NULL); + return err; } - size = avio_read(s->pb, content, SDP_MAX_SIZE - 1); - if (size <= 0) { - av_free(content); - ff_network_close(); - return AVERROR_INVALIDDATA; - } - content[size] ='\0'; - - err = ff_sdp_parse(s, content); - av_freep(&content); + err = ff_sdp_parse(s, bp.str); + av_bprint_finalize(&bp, NULL); if (err) goto fail; /* open each RTP stream */ -- 1.8.3.1 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".