From 7d34f24bd05f48f115b13a47a6f9f3bd52a75fbf Mon Sep 17 00:00:00 2001 From: Jan Patera Date: Tue, 8 May 2007 11:09:06 +0200 Subject: [PATCH] 1) Added support for Olympus S760 & S770 makernote (bug #1703284) 2) Interoperability Version value is now obtained 3) Fixed crashes when looking up invalid values (bug #1457501) --- libexif/exif-data.c | 4 ++-- libexif/exif-entry.c | 12 ++++++++---- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/libexif/exif-data.c b/libexif/exif-data.c index 6ff40f5..3416f19 100644 --- a/libexif/exif-data.c +++ b/libexif/exif-data.c @@ -663,8 +663,8 @@ exif_data_get_type_maker_note (ExifData *d) return EXIF_DATA_TYPE_MAKER_NOTE_NONE; /* Olympus & Nikon */ - if ((e->size >= 5) && (!memcmp (e->data, "OLYMP", 5) || - !memcmp (e->data, "Nikon", 5))) + if ((e->size >= 8) && (!memcmp (e->data, "OLYMP", 6) || + !memcmp (e->data, "OLYMPUS", 8) || !memcmp (e->data, "Nikon", 6))) return EXIF_DATA_TYPE_MAKER_NOTE_OLYMPUS; em = exif_data_get_entry (d, EXIF_TAG_MAKE); diff --git a/libexif/exif-entry.c b/libexif/exif-entry.c index bbc7b2e..1fc4cc9 100644 --- a/libexif/exif-entry.c +++ b/libexif/exif-entry.c @@ -533,7 +533,8 @@ static struct { { EXIF_TAG_COLOR_SPACE, { {1, {N_("sRGB"), NULL}}, {2, {N_("Adobe RGB"), NULL}}, - {0xffff, {N_("Uncalibrated"), NULL}}}}, + {0xffff, {N_("Uncalibrated"), NULL}}, + {0x0000, {NULL}}}}, {0, } }; @@ -918,7 +919,7 @@ exif_entry_get_value (ExifEntry *e, char *val, unsigned int maxlen) } /* Find the value */ - for (j = 0; list2[i].elem[j].values && + for (j = 0; list2[i].elem[j].values[0] && (list2[i].elem[j].index < v_short); j++); if (list2[i].elem[j].index != v_short) { snprintf (val, maxlen, _("Internal error (unknown " @@ -928,8 +929,7 @@ exif_entry_get_value (ExifEntry *e, char *val, unsigned int maxlen) /* Find a short enough value */ memset (val, 0, maxlen); - for (k = 0; list2[i].elem[j].values && - list2[i].elem[j].values[k]; k++) { + for (k = 0; list2[i].elem[j].values[k]; k++) { l = strlen (_(list2[i].elem[j].values[k])); if ((maxlen > l) && (strlen (val) < l)) strncpy (val, _(list2[i].elem[j].values[k]), maxlen - 1); @@ -968,6 +968,10 @@ exif_entry_get_value (ExifEntry *e, char *val, unsigned int maxlen) else strncpy (val, _(list[i].strings[j]), maxlen - 1); break; + case EXIF_TAG_INTEROPERABILITY_VERSION: + CF (e, EXIF_FORMAT_UNDEFINED, val, maxlen); + strncpy (val, (char *) e->data, MIN (maxlen, e->size)); + break; default: if (!e->components) break; switch (e->format) { -- 2.34.1