From 9ef8c4742a58b3d061e9efebdd2d4cfdb151dfbe Mon Sep 17 00:00:00 2001 From: Eric Lindvall Date: Sun, 19 Jan 2025 15:10:05 -0800 Subject: [PATCH] fix: limit memory usage in reading invalid subs box --- mp4/subs.go | 3 +++ mp4/testdata/fuzz/FuzzDecodeBox/dc68c3d7e3180551 | 2 ++ 2 files changed, 5 insertions(+) create mode 100644 mp4/testdata/fuzz/FuzzDecodeBox/dc68c3d7e3180551 diff --git a/mp4/subs.go b/mp4/subs.go index f67cc0ca..bd9ac27e 100644 --- a/mp4/subs.go +++ b/mp4/subs.go @@ -91,6 +91,9 @@ func DecodeSubsSR(hdr BoxHeader, startPos uint64, sr bits.SliceReader) (Box, err ss.CodecSpecificParameters = sr.ReadUint32() e.SubSamples = append(e.SubSamples, ss) } + if sr.AccError() != nil { + return nil, sr.AccError() + } b.Entries = append(b.Entries, e) } return &b, sr.AccError() diff --git a/mp4/testdata/fuzz/FuzzDecodeBox/dc68c3d7e3180551 b/mp4/testdata/fuzz/FuzzDecodeBox/dc68c3d7e3180551 new file mode 100644 index 00000000..b8db8ae3 --- /dev/null +++ b/mp4/testdata/fuzz/FuzzDecodeBox/dc68c3d7e3180551 @@ -0,0 +1,2 @@ +go test fuzz v1 +[]byte("\x00\x00\x04\x1cdreftrl \x00\x00\x00\x01\x00\x00\x017subsed Caption\x00\x00\x00\x00\xa4minf\x00\x00\x00\fnmhd\x00\x00\x00\x00\x00\x00\x00$dinf\x00\x00\x00\x1cd\xff\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00#\x00\furl \x00\x00\x00\x01\x00\x00\x00lstbl\x00\x00\x00 sts\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x10c608\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x10stts\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x10stsc\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14stsz\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10stco\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00Pudta\x00\x00\x00Hswre\x00\x00\x00\x00U\xc4mediafilesegmenter: Version 1.10.4 (524.12i-210805) Linux\x00\x00\x00\x00Hmvex\x00\x00\x00 trex\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00d\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 trex\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00")