27 #define MMS_MAX_STREAMS 256
34 size_to_copy =
FFMIN(size, remaining_size);
36 memcpy(buf, pos, size_to_copy);
64 "Corrupt stream (invalid ASF header, size=%d)\n",
79 if (!chunksize || chunksize > end - p) {
81 "Corrupt stream (header chunksize %"PRId64
" is invalid)\n",
91 "Corrupt stream (too large pkt_len %d)\n",
98 stream_id = flags & 0x7F;
111 "Corrupt stream (too many A/V streams)\n");
116 int stream_count =
AV_RL16(p + 84), ext_len_count =
AV_RL16(p + 86);
117 uint64_t skip_bytes = 88;
118 while (stream_count--) {
119 if (end - p < skip_bytes + 4) {
121 "Corrupt stream (next stream name length is not in the buffer)\n");
124 skip_bytes += 4 +
AV_RL16(p + skip_bytes + 2);
126 while (ext_len_count--) {
127 if (end - p < skip_bytes + 22) {
129 "Corrupt stream (next extension system info length is not in the buffer)\n");
132 skip_bytes += 22 +
AV_RL32(p + skip_bytes + 18);
134 if (end - p < skip_bytes) {
136 "Corrupt stream (the last extension system info length is invalid)\n");
139 if (chunksize - skip_bytes > 24)
140 chunksize = skip_bytes;