Fixes ticket #10030.
Unified · Split
| @@ -692,13 +692,15 @@ static int iff_read_header(AVFormatContext *s) · 691 unmodified lines | |||
| 692 | /* DSD tags */ | 692 | /* DSD tags */ |
| 693 | 693 | ||
| 694 | case MKTAG('F','V','E','R'): | 694 | case MKTAG('F','V','E','R'): |
| 695 | if (data_size < 4) | 695 | if (iff->form_tag == ID_DSD || iff->form_tag == ID_DST) { |
| 696 | return AVERROR_INVALIDDATA; | 696 | if (data_size < 4) |
| 697 | version = avio_rb32(pb); | 697 | return AVERROR_INVALIDDATA; |
| 698 | av_log(s, AV_LOG_DEBUG, "DSIFF v%d.%d.%d.%d\n",version >> 24, (version >> 16) & 0xFF, (version >> 8) & 0xFF, version & 0xFF); | 698 | version = avio_rb32(pb); |
| 699 | if (!new_stream(s, &sta, &iff->audio_stream_index, AVMEDIA_TYPE_AUDIO)) | 699 | av_log(s, AV_LOG_DEBUG, "DSIFF v%d.%d.%d.%d\n",version >> 24, (version >> 16) & 0xFF, (version >> 8) & 0xFF, version & 0xFF); |
| 700 | return AVERROR(ENOMEM); | 700 | if (!new_stream(s, &sta, &iff->audio_stream_index, AVMEDIA_TYPE_AUDIO)) |
| 701 | sta->codecpar->codec_type = AVMEDIA_TYPE_AUDIO; | 701 | return AVERROR(ENOMEM); |
| 702 | sta->codecpar->codec_type = AVMEDIA_TYPE_AUDIO; | ||
| 703 | } | ||
| 702 | break; | 704 | break; |
| 703 | 705 | ||
| 704 | case MKTAG('D','I','I','N'): | 706 | case MKTAG('D','I','I','N'): |