From: Vladimir Nadvornik Date: Sun, 27 Mar 2011 11:53:23 +0000 (+0200) Subject: fixed jpeg_segment_find to support more app2 segments with different signatures X-Git-Tag: 1.1~55 X-Git-Url: http://geeqie.org/cgi-bin/gitweb.cgi?p=geeqie.git;a=commitdiff_plain;h=85dbc07da126d6229f37821e5dd49c3b8546e80e fixed jpeg_segment_find to support more app2 segments with different signatures --- diff --git a/src/jpeg_parser.c b/src/jpeg_parser.c index f1b5e0c3..4fa27be1 100644 --- a/src/jpeg_parser.c +++ b/src/jpeg_parser.c @@ -10,8 +10,7 @@ gboolean jpeg_segment_find(guchar *data, guint size, guint offset = 0; guint length = 0; - while (marker != app_marker && - marker != JPEG_MARKER_EOI) + while (marker != JPEG_MARKER_EOI) { offset += length; length = 2; @@ -25,19 +24,18 @@ gboolean jpeg_segment_find(guchar *data, guint size, { if (offset + 4 >= size) return FALSE; length += ((guint)data[offset + 2] << 8) + data[offset + 3]; - } - } - if (marker == app_marker && - offset + length < size && - length >= 4 + magic_len && - memcmp(data + offset + 4, magic, magic_len) == 0) - { - *seg_offset = offset + 4; - *seg_length = length - 4; - return TRUE; + if (marker == app_marker && + offset + length < size && + length >= 4 + magic_len && + memcmp(data + offset + 4, magic, magic_len) == 0) + { + *seg_offset = offset + 4; + *seg_length = length - 4; + return TRUE; + } + } } - return FALSE; }