libheif is a HEIF and AVIF file format decoder and encoder. In versions 1.21.2 and prior, the inline mask parsing code in `libheif/region.cc` contains an integer overflow. Both `width` and `height` are `unsigned int` (32-bit) values parsed from the HEIF file. Their product can exceed `UINT32_MAX`, wrapping to a small value before the division by 8. This causes an undersized buffer allocation, leading to out-of-bounds memory access when the mask data is later interpreted as a `width x height` bit
libheif is a HEIF and AVIF file format decoder and encoder. In versions 1.21.2 and prior, the inline mask parsing code in libheif/region.cc contains an integer overflow. Both width and height are unsigned int (32-bit) values parsed from the HEIF file. Their product can exceed UINT32_MAX, wrapping to a small value before the division by 8. This causes an undersized buffer allocation, leading to out-of-bounds memory access when the mask data is later interpreted as a width x height bitmap. Version 1.22.0 patches the issue.
Why this VPI (explainable, experimental)
VPI breakdown
| Impact | 61.00 |
| Exploitation signal(No additional exploitation signal) | ×1.00 |
| VPI | 61.00 |
VPI formula vpi-v1