avformat/mov: Check read size for opus extradata

in mov_read_dops, `size` bytes is allocated for
`st->codecpar->extradata`, but ff_alloc_extradata doesn't memset, so the
contents of that buffer are just old heap data. If `avio_read` reads
fewer bytes than were requested, uninitialized data can still be left in
the extradata buffer, which is operated on by AV_WL16A and AV_WL32A.

I think the best solution here is to just check the read size and ensure
it's filling the extradata buffer in it's entirety, or erroring out if
there isn't enough data left.

R=tmathmeyer

Bug: 504354273
Change-Id: I8965a27c9f493f734f6afe7ace07cad77b8be674
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/third_party/ffmpeg/+/7812609
Reviewed-by: Ted (Chromium) Meyer <tmathmeyer@chromium.org>
Reviewed-by: Thomas Guilbert <tguilbert@chromium.org>
1 file changed
tree: 12d1c7e296e2ca286d963c411baf5465618acf85
  1. .forgejo/
  2. chromium/
  3. compat/
  4. doc/
  5. ffbuild/
  6. fftools/
  7. libavcodec/
  8. libavdevice/
  9. libavfilter/
  10. libavformat/
  11. libavutil/
  12. libswresample/
  13. libswscale/
  14. presets/
  15. tests/
  16. tools/
  17. .git-blame-ignore-revs
  18. .gitattributes
  19. .gitignore
  20. .mailmap
  21. BUILD.gn
  22. Changelog
  23. codereview.settings
  24. configure
  25. CONTRIBUTING.md
  26. COPYING.GPLv2
  27. COPYING.GPLv3
  28. COPYING.LGPLv2.1
  29. COPYING.LGPLv3
  30. CREDITS
  31. CREDITS.chromium
  32. DIR_METADATA
  33. ffmpeg_generated.gni
  34. ffmpeg_options.gni
  35. FUNDING.json
  36. INSTALL.md
  37. LICENSE.md
  38. MAINTAINERS
  39. Makefile
  40. OWNERS
  41. README.chromium
  42. README.md
  43. RELEASE
README.md

FFmpeg README

FFmpeg is a collection of libraries and tools to process multimedia content such as audio, video, subtitles and related metadata.

Libraries

  • libavcodec provides implementation of a wider range of codecs.
  • libavformat implements streaming protocols, container formats and basic I/O access.
  • libavutil includes hashers, decompressors and miscellaneous utility functions.
  • libavfilter provides means to alter decoded audio and video through a directed graph of connected filters.
  • libavdevice provides an abstraction to access capture and playback devices.
  • libswresample implements audio mixing and resampling routines.
  • libswscale implements color conversion and scaling routines.

Tools

  • ffmpeg is a command line toolbox to manipulate, convert and stream multimedia content.
  • ffplay is a minimalistic multimedia player.
  • ffprobe is a simple analysis tool to inspect multimedia content.
  • Additional small tools such as aviocat, ismindex and qt-faststart.

Documentation

The offline documentation is available in the doc/ directory.

The online documentation is available in the main website and in the wiki.

Examples

Coding examples are available in the doc/examples directory.

License

FFmpeg codebase is mainly LGPL-licensed with optional components licensed under GPL. Please refer to the LICENSE file for detailed information.

Contributing

Patches should be submitted to the ffmpeg-devel mailing list using git format-patch or git send-email. Github pull requests should be avoided because they are not part of our review process and will be ignored.