• Nigel Tao's avatar
    image/png: degrade gracefully for palette index values that aren't · de6bf204
    Nigel Tao authored
    defined by the PLTE chunk. Such pixels decode to opaque black,
    which matches what libpng does.
    
    Fixes #4319.
    
    On my reading, the PNG spec isn't clear whether palette index values
    outside of those defined by the PLTE chunk is an error, and if not,
    what to do.
    
    Libpng 1.5.3 falls back to opaque black. png_set_PLTE says:
    
    /* Changed in libpng-1.2.1 to allocate PNG_MAX_PALETTE_LENGTH instead
     * of num_palette entries, in case of an invalid PNG file that has
     * too-large sample values.
     */
    png_ptr->palette = (png_colorp)png_calloc(png_ptr,
            PNG_MAX_PALETTE_LENGTH * png_sizeof(png_color));
    
    ImageMagick 6.5.7 returns an error:
    
    $ convert -version
    Version: ImageMagick 6.5.7-8 2012-08-17 Q16 http://www.imagemagick.org
    Copyright: Copyright (C) 1999-2009 ImageMagick Studio LLC
    Features: OpenMP
    $ convert packetloss.png x.bmp
    convert: Invalid colormap index `packetloss.png' @ image.c/SyncImage/3849.
    
    R=r
    CC=golang-dev
    https://golang.org/cl/6822065
    de6bf204
Name
Last commit
Last update
..
color Loading commit data...
draw Loading commit data...
gif Loading commit data...
jpeg Loading commit data...
png Loading commit data...
testdata Loading commit data...
decode_example_test.go Loading commit data...
decode_test.go Loading commit data...
format.go Loading commit data...
geom.go Loading commit data...
image.go Loading commit data...
image_test.go Loading commit data...
names.go Loading commit data...
ycbcr.go Loading commit data...
ycbcr_test.go Loading commit data...