@@ -1277,6 +1277,9 @@ typedef struct {
1277
1277
mn_offset_mode_t offset_mode ;
1278
1278
} maker_note_type ;
1279
1279
1280
+ /* Some maker notes (e.g. DJI info tag) require custom parsing */
1281
+ #define REQUIRES_CUSTOM_PARSING NULL
1282
+
1280
1283
/* Remember to update PHP_MINFO if updated */
1281
1284
static const maker_note_type maker_note_array [] = {
1282
1285
{ tag_table_VND_CANON , "Canon" , NULL , 0 , 0 , MN_ORDER_INTEL , MN_OFFSET_NORMAL },
@@ -1287,6 +1290,7 @@ static const maker_note_type maker_note_array[] = {
1287
1290
{ tag_table_VND_OLYMPUS , "OLYMPUS OPTICAL CO.,LTD" , "OLYMP\x00\x01\x00" , 8 , 8 , MN_ORDER_NORMAL , MN_OFFSET_NORMAL },
1288
1291
{ tag_table_VND_SAMSUNG , "SAMSUNG" , NULL , 0 , 0 , MN_ORDER_NORMAL , MN_OFFSET_NORMAL },
1289
1292
{ tag_table_VND_PANASONIC , "Panasonic" , "Panasonic\x00\x00\x00" , 12 , 12 , MN_ORDER_NORMAL , MN_OFFSET_NORMAL },
1293
+ { REQUIRES_CUSTOM_PARSING , "DJI" , "[ae_dbg_info:" , 13 , 13 , MN_ORDER_MOTOROLA , MN_OFFSET_NORMAL },
1290
1294
{ tag_table_VND_DJI , "DJI" , NULL , 0 , 0 , MN_ORDER_NORMAL , MN_OFFSET_NORMAL },
1291
1295
{ tag_table_VND_SONY , "SONY" , "SONY DSC \x00\x00\x00" , 12 , 12 , MN_ORDER_NORMAL , MN_OFFSET_NORMAL },
1292
1296
{ tag_table_VND_SONY , "SONY" , NULL , 0 , 0 , MN_ORDER_NORMAL , MN_OFFSET_NORMAL },
@@ -3168,10 +3172,16 @@ static bool exif_process_IFD_in_MAKERNOTE(image_info_type *ImageInfo, char * val
3168
3172
return true;
3169
3173
}
3170
3174
3175
+ if (UNEXPECTED (maker_note -> tag_table == REQUIRES_CUSTOM_PARSING )) {
3176
+ /* Custom parsing required, which is not implemented at this point
3177
+ * Return true so that other metadata can still be parsed. */
3178
+ return true;
3179
+ }
3180
+
3171
3181
dir_start = value_ptr + maker_note -> offset ;
3172
3182
3173
3183
#ifdef EXIF_DEBUG
3174
- exif_error_docref (NULL EXIFERR_CC , ImageInfo , E_NOTICE , "Process %s @x %04X + 0x%04X=%d: %s" , exif_get_sectionname (section_index ), (intptr_t )dir_start - (intptr_t )info -> offset_base + maker_note -> offset + displacement , value_len , value_len , exif_char_dump (value_ptr , value_len , (intptr_t )dir_start - (intptr_t )info -> offset_base + maker_note -> offset + displacement ));
3184
+ exif_error_docref (NULL EXIFERR_CC , ImageInfo , E_NOTICE , "Process %s @0x %04X + 0x%04X=%d: %s" , exif_get_sectionname (section_index ), (intptr_t )dir_start - (intptr_t )info -> offset_base + maker_note -> offset + displacement , value_len , value_len , exif_char_dump (value_ptr , value_len , (intptr_t )dir_start - (intptr_t )info -> offset_base + maker_note -> offset + displacement ));
3175
3185
#endif
3176
3186
3177
3187
ImageInfo -> sections_found |= FOUND_MAKERNOTE ;
@@ -3330,7 +3340,7 @@ static bool exif_process_IFD_TAG_impl(image_info_type *ImageInfo, char *dir_entr
3330
3340
#ifdef EXIF_DEBUG
3331
3341
dump_data = exif_dump_data (& dump_free , format , components , ImageInfo -> motorola_intel , value_ptr );
3332
3342
exif_error_docref (NULL EXIFERR_CC , ImageInfo , E_NOTICE ,
3333
- "Process tag(x%04X=%s,@x %04X + x%04X(=%d)): %s%s %s" ,
3343
+ "Process tag(x%04X=%s,@0x %04X + x%04X(=%d)): %s%s %s" ,
3334
3344
tag , exif_get_tagname_debug (tag , tag_table ), offset_val + displacement , byte_count , byte_count , (components > 1 )&& format != TAG_FMT_UNDEFINED && format != TAG_FMT_STRING ?"ARRAY OF " :"" , exif_get_tagformat (format ), dump_data );
3335
3345
if (dump_free ) {
3336
3346
efree (dump_data );
@@ -4173,7 +4183,7 @@ static bool exif_process_IFD_in_TIFF_impl(image_info_type *ImageInfo, size_t dir
4173
4183
}
4174
4184
entry_offset = php_ifd_get32u (dir_entry + 8 , ImageInfo -> motorola_intel );
4175
4185
#ifdef EXIF_DEBUG
4176
- exif_error_docref (NULL EXIFERR_CC , ImageInfo , E_NOTICE , "Next IFD: %s @x %04X" , exif_get_sectionname (sub_section_index ), entry_offset );
4186
+ exif_error_docref (NULL EXIFERR_CC , ImageInfo , E_NOTICE , "Next IFD: %s @0x %04X" , exif_get_sectionname (sub_section_index ), entry_offset );
4177
4187
#endif
4178
4188
exif_process_IFD_in_TIFF (ImageInfo , entry_offset , sub_section_index );
4179
4189
if (section_index != SECTION_THUMBNAIL && entry_tag == TAG_SUB_IFD ) {
0 commit comments