Fixes: signed integer overflow: 1099511693312 * 538976288 cannot be represented in type 'long' Fixes: 50993/clusterfuzz-testcase-minimized-ffmpeg_dem_CAF_fuzzer-6565048815845376
Showing the changes to libavformat (1 of 1 file). Show all
Unified · Split
| @@ -387,7 +387,7 @@ static int read_header(AVFormatContext *s) · 386 unmodified lines | ||
| 387 | 387 | |
| 388 | 388 | found_data: |
| 389 | 389 | if (caf->bytes_per_packet > 0 && caf->frames_per_packet > 0) { |
| 390 | − if (caf->data_size > 0) | |
| 390 | + if (caf->data_size > 0 && caf->data_size / caf->bytes_per_packet < INT64_MAX / caf->frames_per_packet) | |
| 391 | 391 | st->nb_frames = (caf->data_size / caf->bytes_per_packet) * caf->frames_per_packet; |
| 392 | 392 | } else if (ffstream(st)->nb_index_entries && st->duration > 0) { |
| 393 | 393 | if (st->codecpar->sample_rate && caf->data_size / st->duration > INT64_MAX / st->codecpar->sample_rate / 8) { |