fixed jpeg_segment_find to support more app2 segments with different signatures
authorVladimir Nadvornik <nadvornik@suse.cz>
Sun, 27 Mar 2011 11:53:23 +0000 (13:53 +0200)
committerVladimir Nadvornik <nadvornik@suse.cz>
Tue, 27 Sep 2011 12:30:09 +0000 (14:30 +0200)
src/jpeg_parser.c

index f1b5e0c..4fa27be 100644 (file)
@@ -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;
 }