From 6e413658eb45a2c64fa1d5b98e2739bd96b20b35 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Tim=20D=C3=BCsterhus?= Date: Tue, 20 Oct 2020 10:56:33 +0200 Subject: [PATCH] Handle http://ns.adobe.com/xmp/extension/ in ExifUtil Resolves #3616 --- .../files/js/WoltLabSuite/Core/Image/ExifUtil.js | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/wcfsetup/install/files/js/WoltLabSuite/Core/Image/ExifUtil.js b/wcfsetup/install/files/js/WoltLabSuite/Core/Image/ExifUtil.js index cc6f5a0162..c4846ec452 100644 --- a/wcfsetup/install/files/js/WoltLabSuite/Core/Image/ExifUtil.js +++ b/wcfsetup/install/files/js/WoltLabSuite/Core/Image/ExifUtil.js @@ -32,6 +32,11 @@ define([], function() { // Known sequence signatures var _signatureEXIF = 'Exif'; var _signatureXMP = 'http://ns.adobe.com/xap/1.0/'; + var _signatureXMPExtension = 'http://ns.adobe.com/xmp/extension/'; + + function isExifSignature(signature) { + return signature === _signatureEXIF || signature === _signatureXMP || signature === _signatureXMPExtension; + } return { /** @@ -76,7 +81,7 @@ define([], function() { } // Only copy Exif and XMP data - if (signature === _signatureEXIF || signature === _signatureXMP) { + if (isExifSignature(signature)) { // append the found EXIF sequence, usually only a single EXIF (APP1) sequence should be defined var sequence = Array.prototype.slice.call(bytes, i, length + i); // IE11 does not have slice in the Uint8Array prototype var concat = new Uint8Array(exif.length + sequence.length); @@ -137,8 +142,8 @@ define([], function() { signature += String.fromCharCode(bytes[j]); } - // Only remove Exif and XMP data - if (signature === _signatureEXIF || signature === _signatureXMP) { + // Only remove known signatures + if (isExifSignature(signature)) { var start = Array.prototype.slice.call(bytes, 0, i); var end = Array.prototype.slice.call(bytes, i + length); bytes = new Uint8Array(start.length + end.length); -- 2.20.1