From: DRC Date: Fri, 27 Jan 2012 01:23:20 +0000 (+0000) Subject: Properly decompress erroneous CMYK/YCCK images whose K component has an ID of 1 inste... X-Git-Tag: 1.2.0~24 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=12781cb5558bc1f6d66ed840ed15267d503ffffc;p=libjpeg-turbo Properly decompress erroneous CMYK/YCCK images whose K component has an ID of 1 instead of 4 (this is to support SumatraPDF) git-svn-id: svn+ssh://svn.code.sf.net/p/libjpeg-turbo/code/trunk@740 632fc199-4ca6-4c93-a231-07263d6284db --- diff --git a/ChangeLog.txt b/ChangeLog.txt index f7e0fc5..f6b38d7 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -24,6 +24,11 @@ because libjpeg-turbo's distributed version of jconfig.h contained an INLINE macro, which conflicted with a similar macro in DevIL. This macro is used only internally when building libjpeg-turbo, so it was moved into config.h. +[6] libjpeg-turbo will now correctly decompress erroneous CMYK/YCCK JPEGs whose +K component is assigned a component ID of 1 instead of 4. Although these files +are in violation of the spec, other JPEG implementations handle them +correctly. + 1.1.90 (1.2 beta1) ================== diff --git a/jdmarker.c b/jdmarker.c index f4cca8c..beb2303 100644 --- a/jdmarker.c +++ b/jdmarker.c @@ -2,6 +2,7 @@ * jdmarker.c * * Copyright (C) 1991-1998, Thomas G. Lane. + * Copyright (C) 2012, D. R. Commander. * This file is part of the Independent JPEG Group's software. * For conditions of distribution and use, see the accompanying README file. * @@ -322,13 +323,16 @@ get_sos (j_decompress_ptr cinfo) /* Collect the component-spec parameters */ + for (i = 0; i < n; i++) + cinfo->cur_comp_info[i] = NULL; + for (i = 0; i < n; i++) { INPUT_BYTE(cinfo, cc, return FALSE); INPUT_BYTE(cinfo, c, return FALSE); for (ci = 0, compptr = cinfo->comp_info; ci < cinfo->num_components; ci++, compptr++) { - if (cc == compptr->component_id) + if (cc == compptr->component_id && !cinfo->cur_comp_info[ci]) goto id_found; }