summaryrefslogtreecommitdiff
path: root/vendor/golang.org
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/golang.org')
-rw-r--r--vendor/golang.org/x/image/tiff/reader.go12
1 files changed, 10 insertions, 2 deletions
diff --git a/vendor/golang.org/x/image/tiff/reader.go b/vendor/golang.org/x/image/tiff/reader.go
index 0ad155290..1b8fcb859 100644
--- a/vendor/golang.org/x/image/tiff/reader.go
+++ b/vendor/golang.org/x/image/tiff/reader.go
@@ -36,7 +36,10 @@ func (e UnsupportedError) Error() string {
return "tiff: unsupported feature: " + string(e)
}
-var errNoPixels = FormatError("not enough pixel data")
+var (
+ errNoPixels = FormatError("not enough pixel data")
+ errInvalidColorIndex = FormatError("invalid color index")
+)
const maxChunkSize = 10 << 20 // 10M
@@ -337,13 +340,18 @@ func (d *decoder) decode(dst image.Image, xmin, ymin, xmax, ymax int) error {
}
case mPaletted:
img := dst.(*image.Paletted)
+ pLen := len(d.palette)
for y := ymin; y < rMaxY; y++ {
for x := xmin; x < rMaxX; x++ {
v, ok := d.readBits(d.bpp)
if !ok {
return errNoPixels
}
- img.SetColorIndex(x, y, uint8(v))
+ idx := uint8(v)
+ if int(idx) >= pLen {
+ return errInvalidColorIndex
+ }
+ img.SetColorIndex(x, y, idx)
}
d.flushBits()
}