summaryrefslogtreecommitdiffstats
path: root/ext/jpeg/gstjpegdec.c
diff options
context:
space:
mode:
authorMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>2009-07-28 16:11:36 +0200
committerMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>2009-07-28 16:18:38 +0200
commit7a89fb046879bd76da73ef4da96ca1d692e6606a (patch)
tree6f4bfc25e68ce00b260421b324eb7900ef734767 /ext/jpeg/gstjpegdec.c
parent52482a374197ea562753d95fefbac26993258313 (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/gstjpegdec.c')
-rw-r--r--ext/jpeg/gstjpegdec.c4
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)