From 5dea695c719dc2ee61e7677d553f16c1c4c3ac52 Mon Sep 17 00:00:00 2001 From: Jacek Naglak Date: Tue, 24 Sep 2013 22:14:47 +0200 Subject: Fixed image orientation if a JFIF APP0 segment is present in a JPEG header. --- exif.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) (limited to 'exif.c') diff --git a/exif.c b/exif.c index ae2c2d1..098fa72 100644 --- a/exif.c +++ b/exif.c @@ -73,16 +73,22 @@ int exif_orientation(const fileinfo_t *file) if (fd < 0) return -1; - if (s_read(fd, file->name, data, 4) < 0) + if (s_read(fd, file->name, data, 2) < 0) goto abort; if (btous(data, order) != JPEG_MARKER_SOI) goto abort; - if (btous(data + 2, order) != JPEG_MARKER_APP1) + if (s_read(fd, file->name, data, 4) < 0) goto abort; - - if (s_read(fd, file->name, data, 2) < 0) + if (btous(data, order) == JPEG_MARKER_APP0){ + len = btous(data + 2, order); + if (s_read(fd, file->name, data, len - 2) < 0) + goto abort; + if (s_read(fd, file->name, data, 4) < 0) + goto abort; + } + if (btous(data, order) != JPEG_MARKER_APP1) goto abort; - len = btous(data, order); + len = btous(data + 2, order); if (len < 8) goto abort; -- cgit v1.2.3