From 4b7727bd4eefcd953fc8f23cd8e0765ee5bbd5f2 Mon Sep 17 00:00:00 2001 From: akallabeth Date: Mon, 19 Aug 2024 11:31:28 +0200 Subject: [PATCH] [winpr,utils] fix PNG bpp extraction --- winpr/libwinpr/utils/image.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/winpr/libwinpr/utils/image.c b/winpr/libwinpr/utils/image.c index 770881480..09fca602e 100644 --- a/winpr/libwinpr/utils/image.c +++ b/winpr/libwinpr/utils/image.c @@ -940,14 +940,15 @@ static void* winpr_read_png_from_buffer(const void* data, size_t SrcSize, size_t NULL, NULL) != 1) goto fail; - size_t bpp = PNG_IMAGE_PIXEL_SIZE(color_type); + const png_byte channelcount = png_get_channels(png_ptr, info_ptr); + const size_t bpp = channelcount * bit_depth; row_pointers = png_get_rows(png_ptr, info_ptr); if (row_pointers) { - const size_t stride = width * bpp; + const size_t stride = width * bpp / 8ull; const size_t png_stride = png_get_rowbytes(png_ptr, info_ptr); - const size_t size = width * height * bpp; + const size_t size = width * height * bpp / 8ull; const size_t copybytes = stride > png_stride ? png_stride : stride; rc = malloc(size); @@ -962,7 +963,7 @@ static void* winpr_read_png_from_buffer(const void* data, size_t SrcSize, size_t *pSize = size; *pWidth = width; *pHeight = height; - *pBpp = bpp * 8; + *pBpp = bpp; } } fail: