From 986ede3e6a3ec50b1ec459d9938cf91de9aedd94 Mon Sep 17 00:00:00 2001 From: Tim Waugh Date: Thu, 28 Feb 2008 22:35:18 +0000 Subject: [PATCH] - Apply upstream fix for Adobe JPEG files (bug #166460, STR #2727). --- cups-str2727.patch | 54 ++++++++++++++++++++++++++++++++++++++++++++++ cups.spec | 7 +++++- 2 files changed, 60 insertions(+), 1 deletion(-) create mode 100644 cups-str2727.patch diff --git a/cups-str2727.patch b/cups-str2727.patch new file mode 100644 index 0000000..038d5fb --- /dev/null +++ b/cups-str2727.patch @@ -0,0 +1,54 @@ +diff -up cups-1.3.6/filter/image-jpeg.c.str2727 cups-1.3.6/filter/image-jpeg.c +--- cups-1.3.6/filter/image-jpeg.c.str2727 2007-07-11 22:46:42.000000000 +0100 ++++ cups-1.3.6/filter/image-jpeg.c 2008-02-28 22:28:45.000000000 +0000 +@@ -47,8 +47,8 @@ _cupsImageReadJPEG( + struct jpeg_error_mgr jerr; /* Error handler info */ + cups_ib_t *in, /* Input pixels */ + *out; /* Output pixels */ +- char header[16]; /* Photoshop JPEG header */ +- int psjpeg; /* Non-zero if Photoshop JPEG */ ++ jpeg_saved_marker_ptr marker; /* Pointer to marker data */ ++ int psjpeg = 0; /* Non-zero if Photoshop CMYK JPEG */ + static const char *cspaces[] = + { /* JPEG colorspaces... */ + "JCS_UNKNOWN", +@@ -61,23 +61,30 @@ _cupsImageReadJPEG( + + + /* +- * Read the first 16 bytes to determine if this is a Photoshop JPEG file... +- */ +- +- fread(header, sizeof(header), 1, fp); +- rewind(fp); +- +- psjpeg = memcmp(header + 6, "Photoshop ", 10) == 0; +- +- /* + * Read the JPEG header... + */ + + cinfo.err = jpeg_std_error(&jerr); + jpeg_create_decompress(&cinfo); ++ jpeg_save_markers(&cinfo, JPEG_APP0 + 14, 0xffff); /* Adobe JPEG */ + jpeg_stdio_src(&cinfo, fp); + jpeg_read_header(&cinfo, 1); + ++ /* ++ * Parse any Adobe APPE data embedded in the JPEG file. Since Adobe doesn't ++ * bother following standards, we have to invert the CMYK JPEG data written by ++ * Adobe apps... ++ */ ++ ++ for (marker = cinfo.marker_list; marker; marker = marker->next) ++ if (marker->marker == (JPEG_APP0 + 14) && marker->data_length >= 12 && ++ !memcmp(marker->data, "Adobe", 5) && marker->data[11] == 2) ++ { ++ fputs("DEBUG: Adobe CMYK JPEG detected (inverting color values)\n", ++ stderr); ++ psjpeg = 1; ++ } ++ + cinfo.quantize_colors = 0; + + fprintf(stderr, "DEBUG: num_components = %d\n", cinfo.num_components); diff --git a/cups.spec b/cups.spec index 8f67b15..2d5d64b 100644 --- a/cups.spec +++ b/cups.spec @@ -6,7 +6,7 @@ Summary: Common Unix Printing System Name: cups Version: 1.3.6 -Release: 4%{?dist} +Release: 5%{?dist} License: GPLv2 Group: System Environment/Daemons Source: ftp://ftp.easysw.com/pub/cups/test//cups-%{version}-source.tar.bz2 @@ -48,6 +48,7 @@ Patch22: cups-strict-ppd-line-length.patch Patch23: cups-logrotate.patch Patch25: cups-usb-paperout.patch Patch26: cups-str2715.patch +Patch27: cups-str2727.patch Patch100: cups-lspp.patch Epoch: 1 Url: http://www.cups.org/ @@ -163,6 +164,7 @@ lpd emulation. %patch23 -p1 -b .logrotate %patch25 -p1 -b .usb-paperout %patch26 -p1 -b .str2715 +%patch27 -p1 -b .str2727 %if %lspp %patch100 -p1 -b .lspp @@ -427,6 +429,9 @@ rm -rf $RPM_BUILD_ROOT %{cups_serverbin}/daemon/cups-lpd %changelog +* Thu Feb 28 2008 Tim Waugh 1:1.3.6-5 +- Apply upstream fix for Adobe JPEG files (bug #166460, STR #2727). + * Tue Feb 26 2008 Tim Waugh 1:1.3.6-4 - LSB header for initscript (bug #246897). - Move HTML-related files to main application directory so that the CUPS