Login
[x]
Log in using an account from:
Fedora Account System
Red Hat Associate
Red Hat Customer
Or login using a Red Hat Bugzilla account
Forgot Password
Login:
Hide Forgot
Create an Account
Red Hat Bugzilla – Attachment 600935 Details for
Bug 843238
libharu package has not built for multiple Fedora releases
[?]
New
Simple Search
Advanced Search
My Links
Browse
Requests
Reports
Current State
Search
Tabular reports
Graphical reports
Duplicates
Other Reports
User Changes
Plotly Reports
Bug Status
Bug Severity
Non-Defaults
|
Product Dashboard
Help
Page Help!
Bug Writing Guidelines
What's new
Browser Support Policy
5.0.4.rh83 Release notes
FAQ
Guides index
User guide
Web Services
Contact
Legal
This site requires JavaScript to be enabled to function correctly, please enable it.
[patch]
fix direct accesses to libpng's private png_info struct
libharu-libpng15.patch (text/plain), 12.63 KB, created by
Tom Lane
on 2012-07-28 17:14:05 UTC
(
hide
)
Description:
fix direct accesses to libpng's private png_info struct
Filename:
MIME Type:
Creator:
Tom Lane
Created:
2012-07-28 17:14:05 UTC
Size:
12.63 KB
patch
obsolete
>diff -Naur libharu-2.1.0.orig/src/hpdf_image_png.c libharu-2.1.0/src/hpdf_image_png.c >--- libharu-2.1.0.orig/src/hpdf_image_png.c 2008-05-27 14:23:31.000000000 -0400 >+++ libharu-2.1.0/src/hpdf_image_png.c 2012-07-28 13:05:39.523391459 -0400 >@@ -108,15 +108,16 @@ > png_structp png_ptr, > png_infop info_ptr) > { >+ png_uint_32 png_height = png_get_image_height(png_ptr, info_ptr); > png_uint_32 len = png_get_rowbytes(png_ptr, info_ptr); > png_bytep* row_pointers = HPDF_GetMem (image->mmgr, >- info_ptr->height * sizeof (png_bytep)); >+ png_height * sizeof (png_bytep)); > > if (row_pointers) { > HPDF_UINT i; > >- HPDF_MemSet (row_pointers, 0, info_ptr->height * sizeof (png_bytep)); >- for (i = 0; i < (HPDF_UINT)info_ptr->height; i++) { >+ HPDF_MemSet (row_pointers, 0, png_height * sizeof (png_bytep)); >+ for (i = 0; i < (HPDF_UINT)png_height; i++) { > row_pointers[i] = HPDF_GetMem (image->mmgr, len); > > if (image->error->error_no != HPDF_OK) >@@ -126,7 +127,7 @@ > if (image->error->error_no == HPDF_OK) { > png_read_image(png_ptr, row_pointers); > if (image->error->error_no == HPDF_OK) { /* add this line */ >- for (i = 0; i < (HPDF_UINT)info_ptr->height; i++) { >+ for (i = 0; i < (HPDF_UINT)png_height; i++) { > if (HPDF_Stream_Write (image->stream, row_pointers[i], len) != > HPDF_OK) > break; >@@ -135,7 +136,7 @@ > } > > /* clean up */ >- for (i = 0; i < (HPDF_UINT)info_ptr->height; i++) { >+ for (i = 0; i < (HPDF_UINT)png_height; i++) { > HPDF_FreeMem (image->mmgr, row_pointers[i]); > } > >@@ -150,13 +151,14 @@ > png_structp png_ptr, > png_infop info_ptr) > { >+ png_uint_32 png_height = png_get_image_height(png_ptr, info_ptr); > png_uint_32 len = png_get_rowbytes(png_ptr, info_ptr); > png_bytep buf_ptr = HPDF_GetMem (image->mmgr, len); > > if (buf_ptr) { > HPDF_UINT i; > >- for (i = 0; i < (HPDF_UINT)info_ptr->height; i++) { >+ for (i = 0; i < (HPDF_UINT)png_height; i++) { > png_read_rows(png_ptr, (png_byte**)&buf_ptr, NULL, 1); > if (image->error->error_no != HPDF_OK) > break; >@@ -180,16 +182,18 @@ > int num_trans) > { > HPDF_STATUS ret = HPDF_OK; >+ png_uint_32 png_height = png_get_image_height(png_ptr, info_ptr); >+ png_uint_32 png_width = png_get_image_width(png_ptr, info_ptr); > HPDF_UINT i, j; > png_bytep *row_ptr; > >- row_ptr = HPDF_GetMem (image->mmgr, info_ptr->height * sizeof(png_bytep)); >+ row_ptr = HPDF_GetMem (image->mmgr, png_height * sizeof(png_bytep)); > if (!row_ptr) { > return HPDF_FAILD_TO_ALLOC_MEM; > } else { > png_uint_32 len = png_get_rowbytes(png_ptr, info_ptr); > >- for (i = 0; i < (HPDF_UINT)info_ptr->height; i++) { >+ for (i = 0; i < (HPDF_UINT)png_height; i++) { > row_ptr[i] = HPDF_GetMem(image->mmgr, len); > if (!row_ptr[i]) { > for (; i >= 0; i--) { >@@ -207,19 +211,19 @@ > goto Error; > } > >- for (j = 0; j < info_ptr->height; j++) { >- for (i = 0; i < info_ptr->width; i++) { >- smask_data[info_ptr->width * j + i] = (row_ptr[j][i] < num_trans) ? trans[row_ptr[j][i]] : 0xFF; >+ for (j = 0; j < png_height; j++) { >+ for (i = 0; i < png_width; i++) { >+ smask_data[png_width * j + i] = (row_ptr[j][i] < num_trans) ? trans[row_ptr[j][i]] : 0xFF; > } > >- if (HPDF_Stream_Write (image->stream, row_ptr[j], info_ptr->width) != HPDF_OK) { >+ if (HPDF_Stream_Write (image->stream, row_ptr[j], png_width) != HPDF_OK) { > ret = HPDF_FILE_IO_ERROR; > goto Error; > } > } > > Error: >- for (i = 0; i < (HPDF_UINT)info_ptr->height; i++) { >+ for (i = 0; i < (HPDF_UINT)png_height; i++) { > HPDF_FreeMem (image->mmgr, row_ptr[i]); > } > >@@ -234,6 +238,8 @@ > png_bytep smask_data) > { > HPDF_STATUS ret = HPDF_OK; >+ png_uint_32 png_height = png_get_image_height(png_ptr, info_ptr); >+ png_uint_32 png_width = png_get_image_width(png_ptr, info_ptr); > HPDF_INT row_len; > HPDF_UINT i, j; > png_bytep *row_ptr, row; >@@ -245,13 +251,13 @@ > return HPDF_INVALID_PNG_IMAGE; > } > >- row_ptr = HPDF_GetMem (image->mmgr, info_ptr->height * sizeof(png_bytep)); >+ row_ptr = HPDF_GetMem (image->mmgr, png_height * sizeof(png_bytep)); > if (!row_ptr) { > return HPDF_FAILD_TO_ALLOC_MEM; > } else { > png_uint_32 len = png_get_rowbytes(png_ptr, info_ptr); > >- for (i = 0; i < (HPDF_UINT)info_ptr->height; i++) { >+ for (i = 0; i < (HPDF_UINT)png_height; i++) { > row_ptr[i] = HPDF_GetMem(image->mmgr, len); > if (!row_ptr[i]) { > for (; i >= 0; i--) { >@@ -271,12 +277,12 @@ > > switch (color_type) { > case PNG_COLOR_TYPE_RGB_ALPHA: >- row_len = 3 * info_ptr->width * sizeof(png_byte); >- for (j = 0; j < info_ptr->height; j++) { >- for (i = 0; i < info_ptr->width; i++) { >+ row_len = 3 * png_width * sizeof(png_byte); >+ for (j = 0; j < png_height; j++) { >+ for (i = 0; i < png_width; i++) { > row = row_ptr[j]; > memmove(row + (3 * i), row + (4*i), 3); >- smask_data[info_ptr->width * j + i] = row[4 * i + 3]; >+ smask_data[png_width * j + i] = row[4 * i + 3]; > } > > if (HPDF_Stream_Write (image->stream, row, row_len) != HPDF_OK) { >@@ -286,12 +292,12 @@ > } > break; > case PNG_COLOR_TYPE_GRAY_ALPHA: >- row_len = info_ptr->width * sizeof(png_byte); >- for (j = 0; j < info_ptr->height; j++) { >- for (i = 0; i < info_ptr->width; i++) { >+ row_len = png_width * sizeof(png_byte); >+ for (j = 0; j < png_height; j++) { >+ for (i = 0; i < png_width; i++) { > row = row_ptr[j]; > row[i] = row[2 * i]; >- smask_data[info_ptr->width * j + i] = row[2 * i + 1]; >+ smask_data[png_width * j + i] = row[2 * i + 1]; > } > > if (HPDF_Stream_Write (image->stream, row, row_len) != HPDF_OK) { >@@ -306,7 +312,7 @@ > } > > Error: >- for (i = 0; i < (HPDF_UINT)info_ptr->height; i++) { >+ for (i = 0; i < (HPDF_UINT)png_height; i++) { > HPDF_FreeMem (image->mmgr, row_ptr[i]); > } > >@@ -448,7 +454,7 @@ > } > > /* 16bit images are not supported. */ >- if (info_ptr->bit_depth == 16) { >+ if (png_get_bit_depth(png_ptr, info_ptr) == 16) { > png_set_strip_16(png_ptr); > } > >@@ -458,7 +464,7 @@ > } > > /* check palette-based images for transparent areas and load them immediately if found */ >- if (xref && PNG_COLOR_TYPE_PALETTE & info_ptr->color_type) { >+ if (xref && PNG_COLOR_MASK_PALETTE & png_get_color_type(png_ptr, info_ptr)) { > png_bytep trans; > int num_trans; > HPDF_Dict smask; >@@ -478,10 +484,10 @@ > smask->header.obj_class |= HPDF_OSUBCLASS_XOBJECT; > ret = HPDF_Dict_AddName (smask, "Type", "XObject"); > ret += HPDF_Dict_AddName (smask, "Subtype", "Image"); >- ret += HPDF_Dict_AddNumber (smask, "Width", (HPDF_UINT)info_ptr->width); >- ret += HPDF_Dict_AddNumber (smask, "Height", (HPDF_UINT)info_ptr->height); >+ ret += HPDF_Dict_AddNumber (smask, "Width", (HPDF_UINT)png_get_image_width(png_ptr, info_ptr)); >+ ret += HPDF_Dict_AddNumber (smask, "Height", (HPDF_UINT)png_get_image_height(png_ptr, info_ptr)); > ret += HPDF_Dict_AddName (smask, "ColorSpace", "DeviceGray"); >- ret += HPDF_Dict_AddNumber (smask, "BitsPerComponent", (HPDF_UINT)info_ptr->bit_depth); >+ ret += HPDF_Dict_AddNumber (smask, "BitsPerComponent", (HPDF_UINT)png_get_bit_depth(png_ptr, info_ptr)); > > if (ret != HPDF_OK) { > HPDF_Dict_Free(smask); >@@ -489,7 +495,7 @@ > goto Exit; > } > >- smask_data = HPDF_GetMem(image->mmgr, info_ptr->width * info_ptr->height); >+ smask_data = HPDF_GetMem(image->mmgr, png_get_image_width(png_ptr, info_ptr) * png_get_image_height(png_ptr, info_ptr)); > if (!smask_data) { > HPDF_Dict_Free(smask); > ret = HPDF_FAILD_TO_ALLOC_MEM; >@@ -503,7 +509,7 @@ > goto Exit; > } > >- if (HPDF_Stream_Write(smask->stream, smask_data, info_ptr->width * info_ptr->height) != HPDF_OK) { >+ if (HPDF_Stream_Write(smask->stream, smask_data, png_get_image_width(png_ptr, info_ptr) * png_get_image_height(png_ptr, info_ptr)) != HPDF_OK) { > HPDF_FreeMem(image->mmgr, smask_data); > HPDF_Dict_Free(smask); > ret = HPDF_FILE_IO_ERROR; >@@ -513,9 +519,9 @@ > > > ret += CreatePallet(image, png_ptr, info_ptr); >- ret += HPDF_Dict_AddNumber (image, "Width", (HPDF_UINT)info_ptr->width); >- ret += HPDF_Dict_AddNumber (image, "Height", (HPDF_UINT)info_ptr->height); >- ret += HPDF_Dict_AddNumber (image, "BitsPerComponent", (HPDF_UINT)info_ptr->bit_depth); >+ ret += HPDF_Dict_AddNumber (image, "Width", (HPDF_UINT)png_get_image_width(png_ptr, info_ptr)); >+ ret += HPDF_Dict_AddNumber (image, "Height", (HPDF_UINT)png_get_image_height(png_ptr, info_ptr)); >+ ret += HPDF_Dict_AddNumber (image, "BitsPerComponent", (HPDF_UINT)png_get_bit_depth(png_ptr, info_ptr)); > ret += HPDF_Dict_Add (image, "SMask", smask); > > png_destroy_read_struct(&png_ptr, &info_ptr, NULL); >@@ -526,7 +532,7 @@ > > /* read images with alpha channel right away > we have to do this because image transparent mask must be added to the Xref */ >- if (xref && PNG_COLOR_MASK_ALPHA & info_ptr->color_type) { >+ if (xref && PNG_COLOR_MASK_ALPHA & png_get_color_type(png_ptr, info_ptr)) { > HPDF_Dict smask; > png_bytep smask_data; > >@@ -539,10 +545,10 @@ > smask->header.obj_class |= HPDF_OSUBCLASS_XOBJECT; > ret = HPDF_Dict_AddName (smask, "Type", "XObject"); > ret += HPDF_Dict_AddName (smask, "Subtype", "Image"); >- ret += HPDF_Dict_AddNumber (smask, "Width", (HPDF_UINT)info_ptr->width); >- ret += HPDF_Dict_AddNumber (smask, "Height", (HPDF_UINT)info_ptr->height); >+ ret += HPDF_Dict_AddNumber (smask, "Width", (HPDF_UINT)png_get_image_width(png_ptr, info_ptr)); >+ ret += HPDF_Dict_AddNumber (smask, "Height", (HPDF_UINT)png_get_image_height(png_ptr, info_ptr)); > ret += HPDF_Dict_AddName (smask, "ColorSpace", "DeviceGray"); >- ret += HPDF_Dict_AddNumber (smask, "BitsPerComponent", (HPDF_UINT)info_ptr->bit_depth); >+ ret += HPDF_Dict_AddNumber (smask, "BitsPerComponent", (HPDF_UINT)png_get_bit_depth(png_ptr, info_ptr)); > > if (ret != HPDF_OK) { > HPDF_Dict_Free(smask); >@@ -550,7 +556,7 @@ > goto Exit; > } > >- smask_data = HPDF_GetMem(image->mmgr, info_ptr->width * info_ptr->height); >+ smask_data = HPDF_GetMem(image->mmgr, png_get_image_width(png_ptr, info_ptr) * png_get_image_height(png_ptr, info_ptr)); > if (!smask_data) { > HPDF_Dict_Free(smask); > ret = HPDF_FAILD_TO_ALLOC_MEM; >@@ -564,7 +570,7 @@ > goto Exit; > } > >- if (HPDF_Stream_Write(smask->stream, smask_data, info_ptr->width * info_ptr->height) != HPDF_OK) { >+ if (HPDF_Stream_Write(smask->stream, smask_data, png_get_image_width(png_ptr, info_ptr) * png_get_image_height(png_ptr, info_ptr)) != HPDF_OK) { > HPDF_FreeMem(image->mmgr, smask_data); > HPDF_Dict_Free(smask); > ret = HPDF_FILE_IO_ERROR; >@@ -573,9 +579,9 @@ > HPDF_FreeMem(image->mmgr, smask_data); > > ret += HPDF_Dict_AddName (image, "ColorSpace", "DeviceRGB"); >- ret += HPDF_Dict_AddNumber (image, "Width", (HPDF_UINT)info_ptr->width); >- ret += HPDF_Dict_AddNumber (image, "Height", (HPDF_UINT)info_ptr->height); >- ret += HPDF_Dict_AddNumber (image, "BitsPerComponent", (HPDF_UINT)info_ptr->bit_depth); >+ ret += HPDF_Dict_AddNumber (image, "Width", (HPDF_UINT)png_get_image_width(png_ptr, info_ptr)); >+ ret += HPDF_Dict_AddNumber (image, "Height", (HPDF_UINT)png_get_image_height(png_ptr, info_ptr)); >+ ret += HPDF_Dict_AddNumber (image, "BitsPerComponent", (HPDF_UINT)png_get_bit_depth(png_ptr, info_ptr)); > ret += HPDF_Dict_Add (image, "SMask", smask); > > png_destroy_read_struct(&png_ptr, &info_ptr, NULL); >@@ -585,9 +591,9 @@ > /* if the image has color palette, copy the pallet of the image to > * create color map. > */ >- if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE) >+ if (png_get_color_type(png_ptr, info_ptr) == PNG_COLOR_TYPE_PALETTE) > ret = CreatePallet(image, png_ptr, info_ptr); >- else if (info_ptr->color_type == PNG_COLOR_TYPE_GRAY) >+ else if (png_get_color_type(png_ptr, info_ptr) == PNG_COLOR_TYPE_GRAY) > ret = HPDF_Dict_AddName (image, "ColorSpace", "DeviceGray"); > else > ret = HPDF_Dict_AddName (image, "ColorSpace", "DeviceRGB"); >@@ -613,16 +619,16 @@ > } > > /* setting the info of the image. */ >- if (HPDF_Dict_AddNumber (image, "Width", (HPDF_UINT)info_ptr->width) >+ if (HPDF_Dict_AddNumber (image, "Width", (HPDF_UINT)png_get_image_width(png_ptr, info_ptr)) > != HPDF_OK) > goto Exit; > >- if (HPDF_Dict_AddNumber (image, "Height", (HPDF_UINT)info_ptr->height) >+ if (HPDF_Dict_AddNumber (image, "Height", (HPDF_UINT)png_get_image_height(png_ptr, info_ptr)) > != HPDF_OK) > goto Exit; > > if (HPDF_Dict_AddNumber (image, "BitsPerComponent", >- (HPDF_UINT)info_ptr->bit_depth) != HPDF_OK) >+ (HPDF_UINT)png_get_bit_depth(png_ptr, info_ptr)) != HPDF_OK) > goto Exit; > > /* clean up */
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 843238
: 600935