summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexis Ballier <aballier@gentoo.org>2011-02-16 13:00:10 +0000
committerAlexis Ballier <aballier@gentoo.org>2011-02-16 13:00:10 +0000
commit3822efab019e4bcf64eae1871b3af3483da526c6 (patch)
tree0696933d978504c69b01494dc192e4007ba64fbf /dev-tex/pdftex
parentVersion bump, security bug #354213. (diff)
downloadgentoo-2-3822efab019e4bcf64eae1871b3af3483da526c6.tar.gz
gentoo-2-3822efab019e4bcf64eae1871b3af3483da526c6.tar.bz2
gentoo-2-3822efab019e4bcf64eae1871b3af3483da526c6.zip
Import a fix from upstream for libpng 1.5 compatibility.
(Portage version: 2.2.0_alpha24/cvs/Linux x86_64)
Diffstat (limited to 'dev-tex/pdftex')
-rw-r--r--dev-tex/pdftex/ChangeLog6
-rw-r--r--dev-tex/pdftex/files/pdftex-1.40.11-libpng15.patch211
-rw-r--r--dev-tex/pdftex/pdftex-1.40.11.ebuild7
3 files changed, 220 insertions, 4 deletions
diff --git a/dev-tex/pdftex/ChangeLog b/dev-tex/pdftex/ChangeLog
index 9333d118fc9d..9c670a4fab50 100644
--- a/dev-tex/pdftex/ChangeLog
+++ b/dev-tex/pdftex/ChangeLog
@@ -1,6 +1,10 @@
# ChangeLog for dev-tex/pdftex
# Copyright 1999-2011 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/dev-tex/pdftex/ChangeLog,v 1.29 2011/01/02 16:16:50 aballier Exp $
+# $Header: /var/cvsroot/gentoo-x86/dev-tex/pdftex/ChangeLog,v 1.30 2011/02/16 13:00:10 aballier Exp $
+
+ 16 Feb 2011; Alexis Ballier <aballier@gentoo.org> pdftex-1.40.11.ebuild,
+ +files/pdftex-1.40.11-libpng15.patch:
+ Import a fix from upstream for libpng 1.5 compatibility.
*pdftex-1.40.11 (02 Jan 2011)
diff --git a/dev-tex/pdftex/files/pdftex-1.40.11-libpng15.patch b/dev-tex/pdftex/files/pdftex-1.40.11-libpng15.patch
new file mode 100644
index 000000000000..1c177c983647
--- /dev/null
+++ b/dev-tex/pdftex/files/pdftex-1.40.11-libpng15.patch
@@ -0,0 +1,211 @@
+Index: source/texk/web2c/pdftexdir/writepng.c
+===================================================================
+--- source/texk/web2c/pdftexdir/writepng.c (revision 21236)
++++ source/texk/web2c/pdftexdir/writepng.c (revision 21237)
+@@ -21,47 +21,19 @@
+ #include "ptexlib.h"
+ #include "image.h"
+
+-#if PNG_LIBPNG_VER_MINOR > 2
+-
+ /* ToDo:
+- * use png_get_PLTE() to access num_palette and palette
+- * use xxx to access transformations
++ * Check if multiple use of, e.g., png_bit_depth(img) should be
++ * replaced by
++ * int bitdepth = png_bit_depth(img);
++ * and subsequent use of bitdepth
+ */
+-
+ #define png_bit_depth(N) png_get_bit_depth(png_ptr(N), png_info(N))
+ #define png_color_type(N) png_get_color_type(png_ptr(N), png_info(N))
+ #define png_height(N) png_get_image_height(png_ptr(N), png_info(N))
+ #define png_interlace_type(N) png_get_interlace_type(png_ptr(N), png_info(N))
+-#define png_io_ptr(N) png_get_io_ptr(png_ptr(N))
+-#define png_num_palette(N) png_info(N)->num_palette
+-#define png_palette(N) png_info(N)->palette
+ #define png_rowbytes(N) png_get_rowbytes(png_ptr(N), png_info(N))
+-#define png_transformations(N) png_ptr(N)->transformations
+-#define png_valid(N,flag) png_get_valid(png_ptr(N), png_info(N), flag)
+ #define png_width(N) png_get_image_width(png_ptr(N), png_info(N))
+
+-#define png_ptr_bit_depth(N) png_get_bit_depth(png_ptr(N), png_info(N))
+-#define png_ptr_color_type(N) png_get_color_type(png_ptr(N), png_info(N))
+-
+-#else
+-
+-#define png_bit_depth(N) png_info(N)->bit_depth
+-#define png_color_type(N) png_info(N)->color_type
+-#define png_height(N) png_info(N)->height
+-#define png_interlace_type(N) png_info(N)->interlace_type
+-#define png_io_ptr(N) png_ptr(N)->io_ptr
+-#define png_num_palette(N) png_info(N)->num_palette
+-#define png_palette(N) png_info(N)->palette
+-#define png_rowbytes(N) png_info(N)->rowbytes
+-#define png_transformations(N) png_ptr(N)->transformations
+-#define png_valid(N,flag) png_info(N)->valid & (flag)
+-#define png_width(N) png_info(N)->width
+-
+-#define png_ptr_bit_depth(N) png_ptr(N)->bit_depth
+-#define png_ptr_color_type(N) png_ptr(N)->color_type
+-
+-#endif
+-
+ static int transparent_page_group = -1;
+
+ void read_png_info(integer img)
+@@ -84,7 +56,7 @@
+ }
+ /* alpha channel support */
+ if (fixedpdfminorversion < 4
+- && png_ptr_color_type(img) | PNG_COLOR_MASK_ALPHA)
++ && png_color_type(img) | PNG_COLOR_MASK_ALPHA)
+ png_set_strip_alpha(png_ptr(img));
+ /* 16bit depth support */
+ if (fixedpdfminorversion < 5)
+@@ -104,7 +76,7 @@
+ /* resolution support */
+ img_width(img) = png_width(img);
+ img_height(img) = png_height(img);
+- if (png_valid(img, PNG_INFO_pHYs)) {
++ if (png_get_valid(png_ptr(img), png_info(img), PNG_INFO_pHYs)) {
+ img_xres(img) =
+ round(0.0254 *
+ png_get_x_pixels_per_meter(png_ptr(img), png_info(img)));
+@@ -201,14 +173,18 @@
+ int i, j, k, l;
+ png_bytep row, r, *rows;
+ integer palette_objnum = 0;
++ png_colorp palette;
++ int num_palette;
++
++ png_get_PLTE(png_ptr(img), png_info(img), &palette, &num_palette);
++
+ pdfcreateobj(0, 0);
+ palette_objnum = objptr;
+ if (img_colorspace_ref(img) != 0) {
+ pdf_printf("%i 0 R\n", (int) img_colorspace_ref(img));
+ } else {
+ pdf_printf("[/Indexed /DeviceRGB %i %i 0 R]\n",
+- (int) (png_num_palette(img) - 1),
+- (int) palette_objnum);
++ num_palette -1, (int) palette_objnum);
+ }
+ pdfbeginstream();
+ if (png_interlace_type(img) == PNG_INTERLACE_NONE) {
+@@ -230,11 +206,11 @@
+ if (palette_objnum > 0) {
+ pdfbegindict(palette_objnum, 0);
+ pdfbeginstream();
+- for (i = 0; (unsigned) i < png_num_palette(img); i++) {
++ for (i = 0; (unsigned) i < num_palette; i++) {
+ pdfroom(3);
+- pdfbuf[pdfptr++] = png_palette(img)[i].red;
+- pdfbuf[pdfptr++] = png_palette(img)[i].green;
+- pdfbuf[pdfptr++] = png_palette(img)[i].blue;
++ pdfbuf[pdfptr++] = palette[i].red;
++ pdfbuf[pdfptr++] = palette[i].green;
++ pdfbuf[pdfptr++] = palette[i].blue;
+ }
+ pdfendstream();
+ }
+@@ -461,7 +437,7 @@
+
+ static void copy_png(integer img)
+ {
+- FILE *fp = (FILE *) png_io_ptr(img);
++ FILE *fp = (FILE *) png_get_io_ptr(png_ptr(img));
+ int i, len, type, streamlength = 0;
+ boolean endflag = false;
+ int idat = 0; /* flag to check continuous IDAT chunks sequence */
+@@ -553,7 +529,12 @@
+ double gamma, checked_gamma;
+ int i;
+ integer palette_objnum = 0;
++ png_colorp palette;
++ int num_palette;
+ last_png_needs_page_group = false;
++
++ png_get_PLTE(png_ptr(img), png_info(img), &palette, &num_palette);
++
+ if (fixedpdfminorversion < 5)
+ fixedimagehicolor = 0;
+
+@@ -570,16 +551,12 @@
+ checked_gamma = (fixedgamma / 1000.0) * (1000.0 / fixedimagegamma);
+ }
+ }
+- /* the switching between |png_info| and |png_ptr| queries has been trial and error.
+- */
+ if (fixedpdfminorversion > 1
+ && png_interlace_type(img) == PNG_INTERLACE_NONE
+- && (png_transformations(img) == PNG_TRANSFORM_IDENTITY
+- || png_transformations(img) == 0x2000)
+ /* gamma */
+- && !(png_ptr_color_type(img) == PNG_COLOR_TYPE_GRAY_ALPHA ||
+- png_ptr_color_type(img) == PNG_COLOR_TYPE_RGB_ALPHA)
+- && (fixedimagehicolor || (png_ptr_bit_depth(img) <= 8))
++ && !(png_color_type(img) == PNG_COLOR_TYPE_GRAY_ALPHA ||
++ png_color_type(img) == PNG_COLOR_TYPE_RGB_ALPHA)
++ && (fixedimagehicolor || (png_bit_depth(img) <= 8))
+ && (checked_gamma <= 1.01 && checked_gamma > 0.99)
+ ) {
+ if (img_colorspace_ref(img) != 0) {
+@@ -590,8 +567,7 @@
+ pdfcreateobj(0, 0);
+ palette_objnum = objptr;
+ pdf_printf("[/Indexed /DeviceRGB %i %i 0 R]\n",
+- (int) (png_num_palette(img) - 1),
+- (int) palette_objnum);
++ num_palette - 1, (int) palette_objnum);
+ break;
+ case PNG_COLOR_TYPE_GRAY:
+ pdf_puts("/DeviceGray\n");
+@@ -605,11 +581,11 @@
+ if (palette_objnum > 0) {
+ pdfbegindict(palette_objnum, 0);
+ pdfbeginstream();
+- for (i = 0; i < png_num_palette(img); i++) {
++ for (i = 0; i < num_palette; i++) {
+ pdfroom(3);
+- pdfbuf[pdfptr++] = png_palette(img)[i].red;
+- pdfbuf[pdfptr++] = png_palette(img)[i].green;
+- pdfbuf[pdfptr++] = png_palette(img)[i].blue;
++ pdfbuf[pdfptr++] = palette[i].red;
++ pdfbuf[pdfptr++] = palette[i].green;
++ pdfbuf[pdfptr++] = palette[i].blue;
+ }
+ pdfendstream();
+ }
+@@ -619,9 +595,6 @@
+ if (fixedimageapplygamma &&
+ (checked_gamma > 1.01 || checked_gamma < 0.99))
+ tex_printf("gamma delta=%lf ", checked_gamma);
+- if (png_transformations(img) != PNG_TRANSFORM_IDENTITY)
+- tex_printf("transform=%lu",
+- (long) png_transformations(img));
+ if ((png_color_type(img) != PNG_COLOR_TYPE_GRAY)
+ && (png_color_type(img) != PNG_COLOR_TYPE_RGB)
+ && (png_color_type(img) != PNG_COLOR_TYPE_PALETTE))
+Index: source/texk/web2c/pdftexdir/writeimg.c
+===================================================================
+--- source/texk/web2c/pdftexdir/writeimg.c (revision 19947)
++++ source/texk/web2c/pdftexdir/writeimg.c (revision 19948)
+@@ -137,7 +137,7 @@
+ {
+ switch (img_type(img)) {
+ case IMAGE_TYPE_PNG:
+- return png_info(img)->bit_depth;
++ return png_get_bit_depth(png_ptr(img), png_info(img));
+ case IMAGE_TYPE_JPG:
+ return jpg_ptr(img)->bits_per_component;
+ case IMAGE_TYPE_JBIG2:
+@@ -389,7 +389,7 @@
+ epdf_delete();
+ break;
+ case IMAGE_TYPE_PNG:
+- xfclose((FILE *) png_ptr(img)->io_ptr, cur_file_name);
++ xfclose((FILE *) png_get_io_ptr(png_ptr(img)), cur_file_name);
+ png_destroy_read_struct(&(png_ptr(img)), &(png_info(img)), NULL);
+ break;
+ case IMAGE_TYPE_JPG:
diff --git a/dev-tex/pdftex/pdftex-1.40.11.ebuild b/dev-tex/pdftex/pdftex-1.40.11.ebuild
index c2cf82c71f4c..4295c9fe4a25 100644
--- a/dev-tex/pdftex/pdftex-1.40.11.ebuild
+++ b/dev-tex/pdftex/pdftex-1.40.11.ebuild
@@ -1,9 +1,9 @@
# Copyright 1999-2011 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/dev-tex/pdftex/pdftex-1.40.11.ebuild,v 1.1 2011/01/02 16:16:50 aballier Exp $
+# $Header: /var/cvsroot/gentoo-x86/dev-tex/pdftex/pdftex-1.40.11.ebuild,v 1.2 2011/02/16 13:00:10 aballier Exp $
EAPI=2
-inherit libtool toolchain-funcs
+inherit libtool toolchain-funcs eutils
DESCRIPTION="Standalone version of pdftex that can be used to replace TeX Live's"
HOMEPAGE="http://www.pdftex.org/"
@@ -16,7 +16,7 @@ KEYWORDS="~amd64 ~arm ~hppa ~x86"
IUSE=""
RDEPEND=">=app-text/poppler-0.12.3-r3[xpdf-headers]
- media-libs/libpng
+ >=media-libs/libpng-1.4
sys-libs/zlib
dev-libs/kpathsea
app-admin/eselect-pdftex"
@@ -28,6 +28,7 @@ S=${WORKDIR}/${P}/build
src_prepare() {
mkdir "${S}"
cd "${WORKDIR}/${P}/src"
+ epatch "${FILESDIR}/${P}-libpng15.patch"
elibtoolize
}