From: Nigel Tao Date: Mon, 2 Mar 2015 00:27:57 +0000 (+1100) Subject: image/jpeg: distinguish between FormatError and UnsupportedError when X-Git-Tag: go1.5beta1~1788 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=a773fae808709764bf03e0ba42238880fac639e4;p=gostls13.git image/jpeg: distinguish between FormatError and UnsupportedError when encountering unknown markers. Change-Id: Ica86013308d69da2f5b486119235ff693135b2f1 Reviewed-on: https://go-review.googlesource.com/6393 Reviewed-by: David Symonds Run-TryBot: David Symonds --- diff --git a/src/image/jpeg/reader.go b/src/image/jpeg/reader.go index 8fcb2e06c1..3e002e5e54 100644 --- a/src/image/jpeg/reader.go +++ b/src/image/jpeg/reader.go @@ -45,17 +45,17 @@ const ( ) const ( - soiMarker = 0xd8 // Start Of Image. - eoiMarker = 0xd9 // End Of Image. sof0Marker = 0xc0 // Start Of Frame (Baseline). sof1Marker = 0xc1 // Start Of Frame (Extended Sequential). sof2Marker = 0xc2 // Start Of Frame (Progressive). dhtMarker = 0xc4 // Define Huffman Table. - dqtMarker = 0xdb // Define Quantization Table. - sosMarker = 0xda // Start Of Scan. - driMarker = 0xdd // Define Restart Interval. rst0Marker = 0xd0 // ReSTart (0). rst7Marker = 0xd7 // ReSTart (7). + soiMarker = 0xd8 // Start Of Image. + eoiMarker = 0xd9 // End Of Image. + sosMarker = 0xda // Start Of Scan. + dqtMarker = 0xdb // Define Quantization Table. + driMarker = 0xdd // Define Restart Interval. comMarker = 0xfe // COMment. // "APPlication specific" markers aren't part of the JPEG spec per se, // but in practice, their use is described at @@ -560,6 +560,8 @@ func (d *decoder) decode(r io.Reader, configOnly bool) (image.Image, error) { default: if app0Marker <= marker && marker <= app15Marker || marker == comMarker { err = d.ignore(n) + } else if marker < 0xc0 { // See Table B.1 "Marker code assignments". + err = FormatError("unknown marker") } else { err = UnsupportedError("unknown marker") }