From d5b93476f16187488b85e292219e584aa0c2f945 Mon Sep 17 00:00:00 2001 From: Marcus Meissner Date: Thu, 19 Jan 2006 08:40:25 +0100 Subject: [PATCH] When loading an entry fails, do not add it to the IFD. --- ChangeLog | 5 +++++ libexif/exif-data.c | 13 +++++++------ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 4f0a9b9..375c7af 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2006-01-19 Marcus Meissner + + * libexif/exif-data.c: Let exif_data_load_data_entry() signal failure + and discard entry in caller if it does. + 2006-01-16 Hubert Figuiere * libexif/exif-mem.h, libexif/exif-loader.h: More documentation diff --git a/libexif/exif-data.c b/libexif/exif-data.c index a16d911..54b68a6 100644 --- a/libexif/exif-data.c +++ b/libexif/exif-data.c @@ -155,7 +155,7 @@ exif_data_new_from_data (const unsigned char *data, unsigned int size) return (edata); } -static void +static int exif_data_load_data_entry (ExifData *data, ExifEntry *entry, const unsigned char *d, unsigned int size, unsigned int offset) @@ -176,7 +176,7 @@ exif_data_load_data_entry (ExifData *data, ExifEntry *entry, */ s = exif_format_get_size (entry->format) * entry->components; if (!s) - return; + return 0; if (s > 4) doff = exif_get_long (d + offset + 8, data->priv->order); else @@ -184,7 +184,7 @@ exif_data_load_data_entry (ExifData *data, ExifEntry *entry, /* Sanity check */ if (size < doff + s) - return; + return 0; entry->data = exif_data_alloc (data, s); if (entry->data) { @@ -203,6 +203,7 @@ exif_data_load_data_entry (ExifData *data, ExifEntry *entry, entry->data[6]); data->priv->offset_mnote = doff; } + return 1; } static void @@ -413,9 +414,9 @@ exif_data_load_data_content (ExifData *data, ExifIfd ifd, break; } entry = exif_entry_new_mem (data->priv->mem); - exif_data_load_data_entry (data, entry, d, ds, - offset + 12 * i); - exif_content_add_entry (data->ifd[ifd], entry); + if (exif_data_load_data_entry (data, entry, d, ds, + offset + 12 * i)) + exif_content_add_entry (data->ifd[ifd], entry); exif_entry_unref (entry); break; } -- 2.7.4