Fix OOB write in BuildHuffmanTable.

First, BuildHuffmanTable is called to check if the data is valid.
If it is and the table is not big enough, more memory is allocated.

This will make sure that valid (but unoptimized because of unbalanced
codes) streams are still decodable.

Bug: 299477569
Bug: chromium:1479274
(cherry picked from commit 902bc9190331343b2017211debcec8d2ab87e17a)
(cherry picked from commit 2af26267cdfcb63a88e5c74a85927a12d6ca1d76)
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:baba72988cb6b65cbc178b60f71538124ab52aa4)
Merged-In: I31c36dbf3aa78d35ecf38706b50464fd3d375741
Change-Id: I31c36dbf3aa78d35ecf38706b50464fd3d375741
5 files changed
tree: 119bcb270bd2e76e2b097b20b87adfdddc5e21db
  1. cmake/
  2. doc/
  3. examples/
  4. extras/
  5. fuzz_seed_corpus/
  6. gradle/
  7. imageio/
  8. infra/
  9. m4/
  10. man/
  11. sharpyuv/
  12. src/
  13. swig/
  14. tests/
  15. webp_js/
  16. .gitattributes
  17. .gitignore
  18. .mailmap
  19. .pylintrc
  20. .style.yapf
  21. Android.bp
  22. Android.mk
  23. AUTHORS
  24. autogen.sh
  25. build.gradle
  26. ChangeLog
  27. CMakeLists.txt
  28. codereview.settings
  29. configure.ac
  30. CONTRIBUTING.md
  31. COPYING
  32. gradle.properties
  33. gradlew
  34. gradlew.bat
  35. iosbuild.sh
  36. Makefile.am
  37. makefile.unix
  38. Makefile.vc
  39. METADATA
  40. MODULE_LICENSE_BSD
  41. NEWS
  42. NOTICE
  43. OWNERS
  44. PATENTS
  45. PRESUBMIT.py
  46. README.android
  47. README.md
  48. README.version
  49. xcframeworkbuild.sh
README.md

WebP Codec

      __   __  ____  ____  ____
     /  \\/  \/  _ \/  _ )/  _ \
     \       /   __/  _  \   __/
      \__\__/\____/\_____/__/ ____  ___
            / _/ /    \    \ /  _ \/ _/
           /  \_/   / /   \ \   __/  \__
           \____/____/\_____/_____/____/v1.3.0

WebP codec is a library to encode and decode images in WebP format. This package contains the library that can be used in other programs to add WebP support, as well as the command line tools ‘cwebp’ and ‘dwebp’ to compress and decompress images respectively.

See https://developers.google.com/speed/webp for details on the image format.

The latest source tree is available at https://chromium.googlesource.com/webm/libwebp

It is released under the same license as the WebM project. See https://www.webmproject.org/license/software/ or the “COPYING” file for details. An additional intellectual property rights grant can be found in the file PATENTS.

Building

See the building documentation.

Encoding and Decoding Tools

The examples/ directory contains tools to encode and decode images and animations, view information about WebP images, and more. See the tools documentation.

APIs

See the APIs documentation, and API usage examples in the examples/ directory.

Bugs

Please report all bugs to the issue tracker: https://bugs.chromium.org/p/webp

Patches welcome! See how to contribute.

Discuss

Email: webp-discuss@webmproject.org

Web: https://groups.google.com/a/webmproject.org/group/webp-discuss