diff options
author | Marton Balint <cus@passwd.hu> | 2022-02-01 00:08:22 +0100 |
---|---|---|
committer | Marton Balint <cus@passwd.hu> | 2022-02-05 10:40:31 +0100 |
commit | 8a9d3d3dec74568a1a7f226dab3a779cd0bfc079 (patch) | |
tree | ce31a0307737a452da816b127e8d110251933b81 | |
parent | 00692139c951b9bb46effde8219e74a77fd80076 (diff) | |
download | ffmpeg-8a9d3d3dec74568a1a7f226dab3a779cd0bfc079.tar.gz |
avformat/imf_cpl: do not use filesize when reading XML file
Similar to the earlier patch applied to imfdec.
Signed-off-by: Marton Balint <cus@passwd.hu>
-rw-r--r-- | libavformat/imf_cpl.c | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/libavformat/imf_cpl.c b/libavformat/imf_cpl.c index f2ad9c05d6..102a6b4549 100644 --- a/libavformat/imf_cpl.c +++ b/libavformat/imf_cpl.c @@ -797,13 +797,11 @@ int ff_imf_parse_cpl(AVIOContext *in, FFIMFCPL **cpl) AVBPrint buf; xmlDoc *doc = NULL; int ret = 0; - int64_t filesize = 0; - filesize = avio_size(in); - filesize = filesize > 0 ? filesize : 8192; - av_bprint_init(&buf, filesize + 1, AV_BPRINT_SIZE_UNLIMITED); - ret = avio_read_to_bprint(in, &buf, UINT_MAX - 1); - if (ret < 0 || !avio_feof(in) || buf.len == 0) { + av_bprint_init(&buf, 0, INT_MAX); // xmlReadMemory uses integer length + + ret = avio_read_to_bprint(in, &buf, SIZE_MAX); + if (ret < 0 || !avio_feof(in)) { av_log(NULL, AV_LOG_ERROR, "Cannot read IMF CPL\n"); if (ret == 0) ret = AVERROR_INVALIDDATA; @@ -812,8 +810,7 @@ int ff_imf_parse_cpl(AVIOContext *in, FFIMFCPL **cpl) LIBXML_TEST_VERSION - filesize = buf.len; - doc = xmlReadMemory(buf.str, filesize, NULL, NULL, 0); + doc = xmlReadMemory(buf.str, buf.len, NULL, NULL, 0); if (!doc) { av_log(NULL, AV_LOG_ERROR, |