#include "dash.h"
#define INITIAL_BUFFER_SIZE 32768
-#define MAX_MANIFEST_SIZE 50 * 1024
+#define MAX_BPRINT_READ_SIZE (UINT_MAX - 1)
#define DEFAULT_MANIFEST_SIZE 8 * 1024
struct fragment {
}
filesize = avio_size(in);
- if (filesize > MAX_MANIFEST_SIZE) {
+ filesize = filesize > 0 ? filesize : DEFAULT_MANIFEST_SIZE;
+
+ if (filesize > MAX_BPRINT_READ_SIZE) {
av_log(s, AV_LOG_ERROR, "Manifest too large: %"PRId64"\n", filesize);
return AVERROR_INVALIDDATA;
}
- av_bprint_init(&buf, (filesize > 0) ? filesize + 1 : DEFAULT_MANIFEST_SIZE, AV_BPRINT_SIZE_UNLIMITED);
+ av_bprint_init(&buf, filesize + 1, AV_BPRINT_SIZE_UNLIMITED);
- if ((ret = avio_read_to_bprint(in, &buf, MAX_MANIFEST_SIZE)) < 0 ||
+ if ((ret = avio_read_to_bprint(in, &buf, MAX_BPRINT_READ_SIZE)) < 0 ||
!avio_feof(in) ||
(filesize = buf.len) == 0) {
av_log(s, AV_LOG_ERROR, "Unable to read to manifest '%s'\n", url);