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