diff --git a/src/core/lib/FileSignatures.mjs b/src/core/lib/FileSignatures.mjs index a6efb320..1c4c4924 100644 --- a/src/core/lib/FileSignatures.mjs +++ b/src/core/lib/FileSignatures.mjs @@ -1485,7 +1485,7 @@ export const FILE_SIGNATURES = { 4: 0x5a, 5: 0x0 }, - extractor: null + extractor: extractXZ }, { name: "Tarball", @@ -2808,6 +2808,21 @@ export function extractZlib(bytes, offset) { } +/** + * XZ extractor + * + * @param {Uint8Array} bytes + * @param {Number} offset + * @returns {string} + */ +export function extractXZ(bytes, offset) { + const stream = new Stream(bytes.slice(offset)); + stream.continueUntil([0x00, 0x00, 0x00, 0x00, 0x04, 0x59, 0x5a]); + stream.moveForwardsBy(7); + return stream.carve(); +} + + /** * ELF extractor. *