ffmpeg | branch: master | Carl Eugen Hoyos <[email protected]> | Sat May 16 23:32:56 2015 +0200| [2608f11863918c7d82c3cb8928f6224d67e83bf1] | committer: Carl Eugen Hoyos
lavf/wav: Print an error if files >4G are written. Additionally, don't write an incorrect shorter size for such files. Fixes part of ticket #4543. > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=2608f11863918c7d82c3cb8928f6224d67e83bf1 --- libavformat/wavenc.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/libavformat/wavenc.c b/libavformat/wavenc.c index 74b5d56..f89c91e 100644 --- a/libavformat/wavenc.c +++ b/libavformat/wavenc.c @@ -425,7 +425,7 @@ static int wav_write_trailer(AVFormatContext *s) avio_flush(pb); if (s->pb->seekable) { - if (wav->write_peak != 2) { + if (wav->write_peak != 2 && avio_tell(pb) - wav->data < UINT32_MAX) { ff_end_tag(pb, wav->data); avio_flush(pb); } @@ -440,12 +440,16 @@ static int wav_write_trailer(AVFormatContext *s) data_size = file_size - wav->data; if (wav->rf64 == RF64_ALWAYS || (wav->rf64 == RF64_AUTO && file_size - 8 > UINT32_MAX)) { rf64 = 1; - } else { + } else if (file_size - 8 <= UINT32_MAX) { avio_seek(pb, 4, SEEK_SET); avio_wl32(pb, (uint32_t)(file_size - 8)); avio_seek(pb, file_size, SEEK_SET); avio_flush(pb); + } else { + av_log(s, AV_LOG_ERROR, + "Filesize %"PRId64" invalid for wav, output file will be broken\n", + file_size); } number_of_samples = av_rescale(wav->maxpts - wav->minpts + wav->last_duration, _______________________________________________ ffmpeg-cvslog mailing list [email protected] http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog
