diff options
author | Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk> | 2009-07-28 16:11:36 +0200 |
---|---|---|
committer | Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk> | 2009-07-28 16:18:38 +0200 |
commit | 7a89fb046879bd76da73ef4da96ca1d692e6606a (patch) | |
tree | 6f4bfc25e68ce00b260421b324eb7900ef734767 /ext/jpeg | |
parent | 52482a374197ea562753d95fefbac26993258313 (diff) |
jpegdec: when scanning for 0xff marker ends, ensure desired result
Otherwise, any non 0xff byte at end of data would be mistaken for
a tag byte, and in case of a frame_len 0 tag subsequently lead to an
infinite loop.
Diffstat (limited to 'ext/jpeg')
-rw-r--r-- | ext/jpeg/gstjpegdec.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/ext/jpeg/gstjpegdec.c b/ext/jpeg/gstjpegdec.c index ebc4cd20..136451e2 100644 --- a/ext/jpeg/gstjpegdec.c +++ b/ext/jpeg/gstjpegdec.c @@ -433,6 +433,10 @@ gst_jpeg_dec_parse_image_data (GstJpegDec * dec) /* at the very least we expect 0xff 0xNN, thus end-1 */ while (*data != 0xff && data < end - 1) ++data; + if (G_UNLIKELY (*data != 0xff)) { + GST_DEBUG ("at end of input and no next marker found, need more data"); + return 0; + } } /* Skip over extra 0xff */ while (*data == 0xff && data < end) |