Replace tagStandardXMP by define in avifjpeg.c
diff --git a/apps/shared/avifjpeg.c b/apps/shared/avifjpeg.c index 8e6356e..5f21039 100644 --- a/apps/shared/avifjpeg.c +++ b/apps/shared/avifjpeg.c
@@ -243,7 +243,12 @@ return NULL; } -#define AVIF_EXTENDED_XMP_GUID_LENGTH 32 +// XMP tags +#define AVIF_STANDARD_XMP_TAG "http://ns.adobe.com/xap/1.0/\0" +#define AVIF_STANDARD_XMP_TAG_LENGTH 29 +#define AVIF_EXTENDED_XMP_TAG "http://ns.adobe.com/xmp/extension/\0" +#define AVIF_EXTENDED_XMP_TAG_LENGTH 35 + // One way of storing the Extended XMP GUID (generated by a camera for example). #define AVIF_XMP_NOTE_TAG "xmpNote:HasExtendedXMP=\"" #define AVIF_XMP_NOTE_TAG_LENGTH 24 @@ -251,8 +256,10 @@ #define AVIF_ALTERNATIVE_XMP_NOTE_TAG "<xmpNote:HasExtendedXMP>" #define AVIF_ALTERNATIVE_XMP_NOTE_TAG_LENGTH 24 +#define AVIF_EXTENDED_XMP_GUID_LENGTH 32 + // Offset in APP1 segment (skip tag + guid + size + offset). -#define AVIF_OFFSET_TILL_EXTENDED_XMP (tagExtendedXMP.size + AVIF_EXTENDED_XMP_GUID_LENGTH + 4 + 4) +#define AVIF_OFFSET_TILL_EXTENDED_XMP (AVIF_EXTENDED_XMP_TAG_LENGTH + AVIF_EXTENDED_XMP_GUID_LENGTH + 4 + 4) // Note on setjmp() and volatile variables: // @@ -388,27 +395,25 @@ } } if (!ignoreXMP) { - const avifROData tagStandardXMP = { (const uint8_t *)"http://ns.adobe.com/xap/1.0/\0", 29 }; const uint8_t * standardXMPData = NULL; uint32_t standardXMPSize = 0; // At most 64kB as defined by Adobe XMP Specification Part 3. for (jpeg_saved_marker_ptr marker = cinfo.marker_list; marker != NULL; marker = marker->next) { - if ((marker->marker == (JPEG_APP0 + 1)) && (marker->data_length > tagStandardXMP.size) && - !memcmp(marker->data, tagStandardXMP.data, tagStandardXMP.size)) { + if ((marker->marker == (JPEG_APP0 + 1)) && (marker->data_length > AVIF_STANDARD_XMP_TAG_LENGTH) && + !memcmp(marker->data, AVIF_STANDARD_XMP_TAG, AVIF_STANDARD_XMP_TAG_LENGTH)) { if (standardXMPData) { fprintf(stderr, "XMP extraction failed: invalid multiple standard XMP segments\n"); goto cleanup; } - standardXMPData = marker->data + tagStandardXMP.size; - standardXMPSize = (uint32_t)(marker->data_length - tagStandardXMP.size); + standardXMPData = marker->data + AVIF_STANDARD_XMP_TAG_LENGTH; + standardXMPSize = (uint32_t)(marker->data_length - AVIF_STANDARD_XMP_TAG_LENGTH); } } - const avifROData tagExtendedXMP = { (const uint8_t *)"http://ns.adobe.com/xmp/extension/\0", 35 }; avifBool foundExtendedXMP = AVIF_FALSE; uint8_t extendedXMPGUID[AVIF_EXTENDED_XMP_GUID_LENGTH]; // The value is common to all extended XMP segments. for (jpeg_saved_marker_ptr marker = cinfo.marker_list; marker != NULL; marker = marker->next) { - if ((marker->marker == (JPEG_APP0 + 1)) && (marker->data_length > tagExtendedXMP.size) && - !memcmp(marker->data, tagExtendedXMP.data, tagExtendedXMP.size)) { + if ((marker->marker == (JPEG_APP0 + 1)) && (marker->data_length > AVIF_EXTENDED_XMP_TAG_LENGTH) && + !memcmp(marker->data, AVIF_EXTENDED_XMP_TAG, AVIF_EXTENDED_XMP_TAG_LENGTH)) { if (!standardXMPData) { fprintf(stderr, "XMP extraction failed: extended XMP segment found, missing standard XMP segment\n"); goto cleanup; @@ -418,7 +423,7 @@ fprintf(stderr, "XMP extraction failed: truncated extended XMP segment\n"); goto cleanup; } - const uint8_t * guid = &marker->data[tagExtendedXMP.size]; + const uint8_t * guid = &marker->data[AVIF_EXTENDED_XMP_TAG_LENGTH]; for (size_t c = 0; c < AVIF_EXTENDED_XMP_GUID_LENGTH; ++c) { // According to Adobe XMP Specification Part 3 section 1.1.3.1: // "128-bit GUID stored as a 32-byte ASCII hex string, capital A-F, no null termination" @@ -433,12 +438,12 @@ // According to Adobe XMP Specification Part 3 section 1.1.3.1: // "full length of the ExtendedXMP serialization as a 32-bit unsigned integer" const uint32_t totalExtendedXMPSize = - avifJPEGReadUint32BigEndian(&marker->data[tagExtendedXMP.size + AVIF_EXTENDED_XMP_GUID_LENGTH]); + avifJPEGReadUint32BigEndian(&marker->data[AVIF_EXTENDED_XMP_TAG_LENGTH + AVIF_EXTENDED_XMP_GUID_LENGTH]); // Offset in totalXMP after standardXMP. // According to Adobe XMP Specification Part 3 section 1.1.3.1: // "offset of this portion as a 32-bit unsigned integer" const uint32_t extendedXMPOffset = - avifJPEGReadUint32BigEndian(&marker->data[tagExtendedXMP.size + AVIF_EXTENDED_XMP_GUID_LENGTH + 4]); + avifJPEGReadUint32BigEndian(&marker->data[AVIF_EXTENDED_XMP_TAG_LENGTH + AVIF_EXTENDED_XMP_GUID_LENGTH + 4]); if (((uint64_t)standardXMPSize + totalExtendedXMPSize) > SIZE_MAX) { fprintf(stderr, "XMP extraction failed: total XMP size is too large\n"); goto cleanup;