Arman Hasanzadeh 59dae3a508 Add fbounds-safety annotations for VP8BitReader.
Reasoning:

Analysis of initialization (`VP8BitReaderSetBuffer`) and usage sites
(`src/utils/bit_reader_utils.c:59-61`,
`src/utils/bit_reader_inl_utils.h:87`,
`src/utils/bit_reader_utils.c:102`) showed:
- `buf` is the current read pointer, iterating towards `buf_end`.
- `buf_end` points one past the end of valid data (`start + size`).
- `buf_max` points to the last position for a safe read of `lbit_t`.
- All three pointers relate to the same buffer and are adjusted together
  in `VP8RemapBitReader`.

Annotations applied:
- `buf` is annotated `__ended_by(buf_end)` as it iterates up to
  `buf_end`.
- Self-assignments `br->buf_end = br->buf_end;` are added where
  `br->buf` is modified to satisfy the compiler check for `__ended_by`
  when the pointer is updated but the end bound remains the same.
- `buf_max` is annotated `__unsafe_indexable` because its arithmetic in
  `VP8RemapBitReader` couldn't be easily expressed with other
  annotations without ABI changes, and it's mainly adjusted during
  setup/remapping.
- The `start` parameters in `VP8BitReaderSetBuffer`
  (`src/utils/bit_reader_utils.h:116`,
  `src/utils/bit_reader_utils.c:34`) `VP8InitBitReader`
  (`src/utils/bit_reader_utils.h:113`, and
  `src/utils/bit_reader_utils.c:45`) are annotated `__counted_by(size)`
  because they receive a buffer start and size, and `start` using
  `size` within `VP8BitReaderSetBuffer`. This resolved errors
  arithmetic is performed on within the function and a subsequent
  warning when calling it from `VP8InitBitReader`.

Bug: 432511821
Change-Id: Ica436d9764b5bd1f7dcf1b54a280b6f60ecef4df
2025-08-15 08:39:12 -07:00
2025-07-31 14:53:58 -07:00
2021-01-02 15:51:55 -08:00
2025-07-31 14:53:58 -07:00
2013-12-29 11:56:21 -05:00
2025-04-16 18:53:36 -07:00
2025-07-31 20:54:06 -07:00
2025-05-16 12:43:52 -07:00
2025-07-31 14:53:58 -07:00
2025-08-01 13:14:54 -07:00
2023-05-30 13:54:06 -07:00
2021-01-02 15:51:55 -08:00
2024-06-01 10:21:54 -05:00
2025-06-30 12:26:05 -07:00
2025-06-30 12:26:05 -07:00
2025-07-07 17:20:00 -07:00
2018-11-07 19:12:35 -08:00
2025-08-14 12:03:57 -07:00
2010-09-30 09:55:07 -04:00
2016-05-24 15:35:20 +02:00
2021-01-02 15:51:55 -08:00
2021-01-02 15:51:55 -08:00
2025-03-28 11:44:03 +01:00
2025-06-30 12:26:15 -07:00
2015-04-18 08:46:53 -07:00
2025-06-30 12:26:15 -07:00

WebP Codec

      __   __  ____  ____  ____
     /  \\/  \/  _ \/  _ )/  _ \
     \       /   __/  _  \   __/
      \__\__/\____/\_____/__/ ____  ___
            / _/ /    \    \ /  _ \/ _/
           /  \_/   / /   \ \   __/  \__
           \____/____/\_____/_____/____/v1.6.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. For security reports, select 'Security report' from the Template dropdown.

Patches welcome! See how to contribute.

Discuss

Email: webp-discuss@webmproject.org

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

Description
Mirror only. Please do not send pull requests. See https://chromium.googlesource.com/webm/libwebp/+/HEAD/CONTRIBUTING.md.
Readme 19 MiB
Languages
C 94.3%
C++ 1.4%
CMake 1.1%
Shell 1.1%
M4 1%
Other 1%