diff options
author | dkf <donal.k.fellows@manchester.ac.uk> | 2010-04-12 08:37:36 (GMT) |
---|---|---|
committer | dkf <donal.k.fellows@manchester.ac.uk> | 2010-04-12 08:37:36 (GMT) |
commit | 3a855135e0cea5671e8677540fd81e5aaf1cb103 (patch) | |
tree | 48a97b7e230aa4f16b8f615dffb589f39b2a453b /tests | |
parent | 4899fc756de94240fdea6c427c1767309d427e09 (diff) | |
download | tk-3a855135e0cea5671e8677540fd81e5aaf1cb103.zip tk-3a855135e0cea5671e8677540fd81e5aaf1cb103.tar.gz tk-3a855135e0cea5671e8677540fd81e5aaf1cb103.tar.bz2 |
* generic/tkImgPNG.c (WriteIDAT): [Bug 2984787]: Use the correct
flushing semantics when handling the last data from the image. Without
this, many PNG readers (notably including Firefox) refuse to show the
image and instead complain about errors.
(ReadIDAT): Added sanity checks to ensure that when we've got bad data
of the sorts of forms we were previously generating, we detect it and
error out rather than silently failing.
(WriteExtraChunks): New function to write in some basic metadata.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/imgPNG.test | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/tests/imgPNG.test b/tests/imgPNG.test index 7fb2622..1cfaad0 100644 --- a/tests/imgPNG.test +++ b/tests/imgPNG.test @@ -8,7 +8,7 @@ # Copyright (c) 2008 Donal K. Fellows # All rights reserved. # -# RCS: @(#) $Id: imgPNG.test,v 1.2 2009/01/13 01:46:06 patthoyts Exp $ +# RCS: @(#) $Id: imgPNG.test,v 1.3 2010/04/12 08:40:17 dkf Exp $ package require tcltest 2.2 namespace import ::tcltest::* @@ -19,16 +19,20 @@ imageInit namespace eval png { variable encoded # Key names are from the names of the source images, which come from - # http://www.schaik.com/pngsuite/pngsuite.html + # http://www.schaik.com/pngsuite/pngsuite.html + # The exception is "BadX", which is used to test handling badly compressed + # images. array set encoded { basn0g08 "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAAAAABWESUoAAAABGdBTUEAAYagMeiWXwAAAEFJREFUeJxjZGAkABQIyLMMBQWMDwgp+PcfP2B5MBwUMMoRkGdkonlcDAYFjI/wyv7/z/iH5nExGBQwyuCVZWQEAFDl/nE14thZAAAAAElFTkSuQmCC" basn2c08 "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAABGdBTUEAAYagMeiWXwAAAEhJREFUeJzt1cEJADAMAkCF7JH9t3ITO0Qr9KH4zuErtA0EO4AKFPgcoO3kfUx4QIECD0qHH8KEBxQo8KB0OCOpQIG7cHejwAGCsfleD0DPSwAAAABJRU5ErkJggg==" basn3p08 "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAABGdBTUEAAYagMeiWXwAAAwBQTFRFIkQA9f/td/93y///EQoAOncAIiL//xH/EQAAIiIA/6xVZv9m/2Zm/wH/IhIA3P//zP+ZRET/AFVVIgAAy8v/REQAVf9Vy8sAMxoA/+zc7f//5P/L/9zcRP9EZmb/MwAARCIA7e3/ZmYA/6RE//+q7e0AAMvL/v///f/+//8BM/8zVSoAAQH/iIj/AKqqAQEARAAAiIgA/+TLulsAIv8iZjIA//+Zqqr/VQAAqqoAy2MAEf8R1P+qdzoA/0RE3GsAZgAAAf8BiEIA7P/ca9wA/9y6ADMzAO0A7XMA//+ImUoAEf//dwAA/4MB/7q6/nsA//7/AMsA/5mZIv//iAAA//93AIiI/9z/GjMAAACqM///AJkAmQAAAAABMmYA/7r/RP///6r/AHcAAP7+qgAASpkA//9m/yIiAACZi/8RVf///wEB/4j/AFUAABER///+//3+pP9EZv///2b/ADMA//9V/3d3AACI/0T/ABEAd///AGZm///tAAEA//XtERH///9E/yL//+3tEREAiP//AAB3k/8iANzcMzP//gD+urr/mf//MzMAY8sAuroArP9V///c//8ze/4A7QDtVVX/qv//3Nz/VVUAAABm3NwA3ADcg/8Bd3f//v7////L/1VVd3cA/v4AywDLAAD+AQIAAQAAEiIA//8iAEREm/8z/9SqAABVmZn/mZkAugC6KlUA/8vLtP9m/5sz//+6qgCqQogAU6oA/6qqAADtALq6//8RAP4AAABEAJmZmQCZ/8yZugAAiACIANwA/5MiAADc/v/+qlMAdwB3AgEAywAAAAAz/+3/ALoA/zMz7f/t/8SIvP93AKoAZgBmACIi3AAA/8v/3P/c/4sRAADLAAEBVQBVAIgAAAAiAf//y//L7QAA/4iIRABEW7oA/7x3/5n/AGYAuv+6AHd3c+0A/gAAMwAzAAC6/3f/AEQAqv+q//7+AAARIgAixP+IAO3tmf+Z/1X/ACIA/7RmEQARChEA/xER3P+6uv//iP+IAQAB/zP/uY7TYgAAAbFJREFUeJwNwQcACAQQAMBHqIxIZCs7Mwlla1hlZ+8VitCw9yoqNGiYDatsyt6jjIadlVkysve+u5jC9xTmV/qyl6bcJR7kAQZzg568xXmuE2lIyUNM5So7OMAFIhvp+YgGvEtFNnOKeJonSEvwP9NZzhHiOfLzBXPoxKP8yD6iPMXITjP+oTdfsp14lTJMJjGtOMFQfiFe4wWK8BP7qUd31hBNqMos2tKYFbRnJdGGjTzPz2yjEA1ZSKymKCM5ylaWcJrZxCZK8jgfU4vc/MW3xE7K8RUvsZb3Wc/XxCEqk4v/qMQlFvMZcZIafMOnLKM13zGceJNqPMU4KnCQAqQgbrKHpXSgFK/Qn6REO9YxjWE8Sx2SMJD4jfl8wgzy0YgPuEeUJQcD6EoWWpCaHsQkHuY9RpGON/icK0RyrvE680jG22TlHaIbx6jLnySkF+M5QxzmD6pwkTsMoSAdidqsojipuMyHzOQ4sYgfyElpzjKGErQkqvMyC7jFv9xmBM2JuTzDRDLxN4l4jF1EZjIwmhfZzSOMpT4xiH70IQG/k5En2UKcowudycsG8jCBmtwHgRv+EIeWyOAAAAAASUVORK5CYII=" basn6a08 "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAAYagMeiWXwAAAG9JREFUeJzt1jEKgDAMRuEnZGhPofc/VQSPIcTdxUV4HVLoUCj8H00o2YoBMF57fpz/ujODHXUFRwPKBqj5DVigB041HiJ9gFyCVOMbsEIPXNwuAHkgiJL/4qABNqB7QAeUPBAE2QAZUDZAfwEb8ABSIBqcFg+4TAAAAABJRU5ErkJggg==" + + BadX "iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAABHNCSVQICAgIfAhkiAAAABN0RVh0U29mdHdhcmUAVGsgOC42YjEuMcrtT1oAAAAcSURBVHicYmBgYPjPgAr+ozP+o0uj68BUiWEmAAAA//8SozfjAAAAAElFTkSuQmCC" } # $encoded(basn0g08), $encoded(basn2c08), $encoded(basn3p08), $encoded(basn6a08) -test png-1.1 {reading basic images; grayscale} -setup { +test imgPNG-1.1 {reading basic images; grayscale} -setup { catch {rename foo ""} } -body { image create photo foo -data $encoded(basn0g08) @@ -36,7 +40,7 @@ test png-1.1 {reading basic images; grayscale} -setup { } -cleanup { rename foo "" } -result {32 32} -test png-1.2 {reading basic images; color} -setup { +test imgPNG-1.2 {reading basic images; color} -setup { catch {rename foo ""} } -body { image create photo foo -data $encoded(basn2c08) @@ -44,7 +48,7 @@ test png-1.2 {reading basic images; color} -setup { } -cleanup { rename foo "" } -result {32 32} -test png-1.3 {reading basic images; color with palette} -setup { +test imgPNG-1.3 {reading basic images; color with palette} -setup { catch {rename foo ""} } -body { image create photo foo -data $encoded(basn3p08) @@ -52,7 +56,7 @@ test png-1.3 {reading basic images; color with palette} -setup { } -cleanup { rename foo "" } -result {32 32} -test png-1.4 {reading basic images; alpha} -setup { +test imgPNG-1.4 {reading basic images; alpha} -setup { catch {rename foo ""} } -body { image create photo foo -data $encoded(basn6a08) @@ -60,6 +64,10 @@ test png-1.4 {reading basic images; alpha} -setup { } -cleanup { rename foo "" } -result {32 32} + +test imgPNG-2.1 {reading a bad image} -body { + image create photo -data $encoded(BadX) +} -returnCodes error -result {unfinalized data stream in PNG data} } namespace delete png |