Skip to content

Commit 1c8a8af

Browse files
committed
feat: add nil check to data slice
1 parent 6dfebdd commit 1c8a8af

File tree

1 file changed

+8
-0
lines changed

1 file changed

+8
-0
lines changed

reader.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ type decoder struct {
8787
images []image.Image
8888
}
8989

90+
// decode multiple images from entries in reader
9091
func (d *decoder) decode(r io.Reader) (err error) {
9192
if err = d.decodeHeader(r); err != nil {
9293
return err
@@ -115,6 +116,9 @@ func (d *decoder) decode(r io.Reader) (err error) {
115116
if d.images[i], err = bmp.Decode(bytes.NewReader(data)); err != nil {
116117
return err
117118
}
119+
if int(e.Size) < len(data)-14 {
120+
continue
121+
}
118122
bounds := d.images[i].Bounds()
119123
mask := image.NewAlpha(image.Rect(0, 0, bounds.Dx(), bounds.Dy()))
120124
masked := image.NewNRGBA(image.Rect(0, 0, bounds.Dx(), bounds.Dy()))
@@ -158,12 +162,16 @@ func (d *decoder) decodeHeader(r io.Reader) error {
158162

159163
func (d *decoder) decodeEntries(r io.Reader) error {
160164
n := int(d.head.Number)
165+
161166
d.entries = make([]direntry, n)
162167
for i := 0; i < n; i++ {
163168
if err := binary.Read(r, binary.LittleEndian, &(d.entries[i])); err != nil {
164169
return err
165170
}
166171
}
172+
if len(d.entries) == 0 {
173+
return fmt.Errorf("no entries to images")
174+
}
167175
return nil
168176
}
169177

0 commit comments

Comments
 (0)