File tree Expand file tree Collapse file tree 1 file changed +8
-0
lines changed Expand file tree Collapse file tree 1 file changed +8
-0
lines changed Original file line number Diff line number Diff line change @@ -87,6 +87,7 @@ type decoder struct {
87
87
images []image.Image
88
88
}
89
89
90
+ // decode multiple images from entries in reader
90
91
func (d * decoder ) decode (r io.Reader ) (err error ) {
91
92
if err = d .decodeHeader (r ); err != nil {
92
93
return err
@@ -115,6 +116,9 @@ func (d *decoder) decode(r io.Reader) (err error) {
115
116
if d .images [i ], err = bmp .Decode (bytes .NewReader (data )); err != nil {
116
117
return err
117
118
}
119
+ if int (e .Size ) < len (data )- 14 {
120
+ continue
121
+ }
118
122
bounds := d .images [i ].Bounds ()
119
123
mask := image .NewAlpha (image .Rect (0 , 0 , bounds .Dx (), bounds .Dy ()))
120
124
masked := image .NewNRGBA (image .Rect (0 , 0 , bounds .Dx (), bounds .Dy ()))
@@ -158,12 +162,16 @@ func (d *decoder) decodeHeader(r io.Reader) error {
158
162
159
163
func (d * decoder ) decodeEntries (r io.Reader ) error {
160
164
n := int (d .head .Number )
165
+
161
166
d .entries = make ([]direntry , n )
162
167
for i := 0 ; i < n ; i ++ {
163
168
if err := binary .Read (r , binary .LittleEndian , & (d .entries [i ])); err != nil {
164
169
return err
165
170
}
166
171
}
172
+ if len (d .entries ) == 0 {
173
+ return fmt .Errorf ("no entries to images" )
174
+ }
167
175
return nil
168
176
}
169
177
You can’t perform that action at this time.
0 commit comments