diff --git a/source/mjpeg_decoder.cc b/source/mjpeg_decoder.cc index ad1762092..559e3e3a7 100644 --- a/source/mjpeg_decoder.cc +++ b/source/mjpeg_decoder.cc @@ -140,6 +140,10 @@ LIBYUV_BOOL MJpegDecoder::LoadFrame(const uint8_t* src, size_t src_len) { // the next scanline) and will be overwritten when jpeglib writes out that // next scanline. int databuf_stride = GetComponentStride(i); + // Cannot overflow: + // - JPEG width is stored as an u16, so `databuf_stride` (width rounded up to + // DCTSIZE) is at most slightly larger than UINT16_MAX. + // - Sampling factor is stored in 4 bits, so scanlines_size is < 16. int databuf_size = scanlines_size * databuf_stride; if (databuf_strides_[i] != databuf_stride) { if (databuf_[i]) {