poppler/GfxState.cc | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-)
New commits: commit d8032e79f45bb37e00c2d61cff8c21d6f1052d78 Author: Albert Astals Cid <[email protected]> Date: Thu Dec 2 20:16:34 2021 +0100 GfxSeparationColorSpace: Check validity of colorspace and function Fixes issue #1184 diff --git a/poppler/GfxState.cc b/poppler/GfxState.cc index f6d42400..c24332bd 100644 --- a/poppler/GfxState.cc +++ b/poppler/GfxState.cc @@ -2616,7 +2616,6 @@ GfxColorSpace *GfxSeparationColorSpace::copy() const //~ handle the 'All' and 'None' colorants GfxColorSpace *GfxSeparationColorSpace::parse(GfxResources *res, Array *arr, OutputDev *out, GfxState *state, int recursion) { - GfxSeparationColorSpace *cs; GooString *nameA; GfxColorSpace *altA; Function *funcA; @@ -2645,8 +2644,9 @@ GfxColorSpace *GfxSeparationColorSpace::parse(GfxResources *res, Array *arr, Out error(errSyntaxWarning, -1, "Bad SeparationColorSpace function"); goto err5; } - cs = new GfxSeparationColorSpace(nameA, altA, funcA); - return cs; + if (altA->getNComps() <= funcA->getOutputSize()) { + return new GfxSeparationColorSpace(nameA, altA, funcA); + } err5: delete funcA; @@ -2695,11 +2695,6 @@ void GfxSeparationColorSpace::getRGB(const GfxColor *color, GfxRGB *rgb) const for (i = 0; i < altNComps; ++i) { color2.c[i] = dblToCol(c[i]); } - if (unlikely(altNComps > func->getOutputSize())) { - for (i = func->getOutputSize(); i < altNComps; ++i) { - color2.c[i] = 0; - } - } alt->getRGB(&color2, rgb); } }
