| Index: libexif/exif-data.c
|
| diff --git a/libexif/exif-data.c b/libexif/exif-data.c
|
| index 67df4db2bec0547ad8758c997c834bc6f7f69669..e33d69647440c41a1aea6b28b3d5f1bb5c645900 100644
|
| --- a/libexif/exif-data.c
|
| +++ b/libexif/exif-data.c
|
| @@ -364,6 +364,7 @@ exif_data_load_data_content (ExifData *data, ExifIfd ifd,
|
| ExifEntry *entry;
|
| unsigned int i;
|
| ExifTag tag;
|
| + const unsigned int original_offset = offset;
|
|
|
| if (!data || !data->priv)
|
| return;
|
| @@ -416,14 +417,20 @@ exif_data_load_data_content (ExifData *data, ExifIfd ifd,
|
| switch (tag) {
|
| case EXIF_TAG_EXIF_IFD_POINTER:
|
| CHECK_REC (EXIF_IFD_EXIF);
|
| + if (o == original_offset)
|
| + return;
|
| exif_data_load_data_content (data, EXIF_IFD_EXIF, d, ds, o, recursion_depth + 1);
|
| break;
|
| case EXIF_TAG_GPS_INFO_IFD_POINTER:
|
| CHECK_REC (EXIF_IFD_GPS);
|
| + if (o == original_offset)
|
| + return;
|
| exif_data_load_data_content (data, EXIF_IFD_GPS, d, ds, o, recursion_depth + 1);
|
| break;
|
| case EXIF_TAG_INTEROPERABILITY_IFD_POINTER:
|
| CHECK_REC (EXIF_IFD_INTEROPERABILITY);
|
| + if (o == original_offset)
|
| + return;
|
| exif_data_load_data_content (data, EXIF_IFD_INTEROPERABILITY, d, ds, o, recursion_depth + 1);
|
| break;
|
| case EXIF_TAG_JPEG_INTERCHANGE_FORMAT:
|
|
|