Skip to content

Commit ee0de9b

Browse files
committed
Limit the byte buffer to 10 MB
Which should be plenty for image metadata.
1 parent ee5039a commit ee0de9b

File tree

3 files changed

+10
-2
lines changed

3 files changed

+10
-2
lines changed

imagemeta.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -215,8 +215,8 @@ func Decode(opts Options) (err error) {
215215
go func() {
216216
defer func() {
217217
err2 := errFromRecover(recover())
218-
if err == nil {
219-
err = err2
218+
if err2 != nil {
219+
errc <- err2
220220
}
221221
}()
222222
errc <- dec.decode()

imagemeta_test.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -460,6 +460,7 @@ func TestLatLong(t *testing.T) {
460460
c := qt.New(t)
461461

462462
tags, err := extractTags(t, "sunrise.jpg", imagemeta.EXIF)
463+
c.Assert(err, qt.IsNil)
463464

464465
lat, long, err := tags.GetLatLong()
465466
c.Assert(err, qt.IsNil)
@@ -478,6 +479,7 @@ func TestGetDateTime(t *testing.T) {
478479
c := qt.New(t)
479480

480481
tags, err := extractTags(t, "sunrise.jpg", imagemeta.EXIF)
482+
c.Assert(err, qt.IsNil)
481483
d, err := tags.GetDateTime()
482484
c.Assert(err, qt.IsNil)
483485
c.Assert(d.Format("2006-01-02"), qt.Equals, "2017-10-27")

io.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,9 +90,15 @@ func (e *streamReader) otherByteOrder() binary.ByteOrder {
9090
return binary.BigEndian
9191
}
9292

93+
// 10 MB should be plenty for image metadata.
94+
const maxBufSize = 10 * 1024 * 1024
95+
9396
// bufferedReader reads length bytes from the stream and returns a ReaderCloser.
9497
// It's important to call Close on the ReaderCloser when done.
9598
func (e *streamReader) bufferedReader(length int64) (readerCloser, error) {
99+
if length > maxBufSize {
100+
return nil, newInvalidFormatErrorf("length %d exceeds max %d", length, maxBufSize)
101+
}
96102
if length == 0 {
97103
return struct {
98104
io.ReadSeeker

0 commit comments

Comments
 (0)