mirror of
https://github.com/golang/go
synced 2024-11-22 03:34:40 -07:00
image/tiff: Reject images with SampleFormat != 1.
The TIFF spec says that a baseline TIFF reader must gracefully terminate when the image has a SampleFormat tag which it does not support. For baseline compatibility, only SampleFormat=1 (the default) is needed. Images with other sample formats (e.g. floating-point color values) are very rare in practice. R=nigeltao CC=golang-dev https://golang.org/cl/4515073
This commit is contained in:
parent
f4e5f364c7
commit
14c59abd76
@ -54,6 +54,7 @@ const (
|
|||||||
tPredictor = 317
|
tPredictor = 317
|
||||||
tColorMap = 320
|
tColorMap = 320
|
||||||
tExtraSamples = 338
|
tExtraSamples = 338
|
||||||
|
tSampleFormat = 339
|
||||||
)
|
)
|
||||||
|
|
||||||
// Compression types (defined in various places in the spec and supplements).
|
// Compression types (defined in various places in the spec and supplements).
|
||||||
|
@ -133,6 +133,20 @@ func (d *decoder) parseIFD(p []byte) os.Error {
|
|||||||
0xffff,
|
0xffff,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
case tSampleFormat:
|
||||||
|
// Page 27 of the spec: If the SampleFormat is present and
|
||||||
|
// the value is not 1 [= unsigned integer data], a Baseline
|
||||||
|
// TIFF reader that cannot handle the SampleFormat value
|
||||||
|
// must terminate the import process gracefully.
|
||||||
|
val, err := d.ifdUint(p)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
for _, v := range val {
|
||||||
|
if v != 1 {
|
||||||
|
return UnsupportedError("sample format")
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user