diff src/format_fuji.c @ 101:847e4bc6b54c

Tue Nov 7 15:35:59 2006 John Ellis <johne@verizon.net> * exif.c: Use new format_raw_exif_offset() function to find Exif in raw files. * filelist.c: Add orf and pef to displayed file types. * format_canon.h, format_fuji.h: Update to new #define format. * format_fuji.c: Use same offset for Exif as the jpeg image as the Exif is always embedded in the jpeg and assuming offset of 12 is just broken. * format_nikon.h: Update to new #define format, and add pentax here as finding the jpeg will be same code. * format_olympus.[ch]: Support Olympus raw files with embedded jpegs, not all raw files will have a jpeg, but all appear to have Exif tags. * format_raw.[ch]: Add new camera types, and add a debugging facility to easily list all tags within tiff files (see format_raw.h to enable).
author gqview
date Tue, 07 Nov 2006 21:00:50 +0000
parents a8c9992320f4
children 9c355d5c8619
line wrap: on
line diff
--- a/src/format_fuji.c	Tue Nov 07 01:57:19 2006 +0000
+++ b/src/format_fuji.c	Tue Nov 07 21:00:50 2006 +0000
@@ -48,8 +48,9 @@
 		return FALSE;
 		}
 
+	/* offset to jpeg is embedded at bytes 84-87 */
 	io = GUINT32_FROM_BE(*(guint32*)(data + 84));
-	eo = *image_offset + 12;
+	if (io + 4 > len) return FALSE;
 
 	/* verify jpeg marker */
 	if (memcmp(data + io, "\xff\xd8\xff\xe1", 4) != 0)
@@ -57,11 +58,12 @@
 		return FALSE;
 		}
 
+	/* Exif is stored in the jpeg, so use the same offset */
+	eo=io;
+
 	if (image_offset) *image_offset = io;
 	if (exif_offset) *exif_offset = eo;
 
-	printf("raw Fuji format file\n");
-
 	return TRUE;
 }