feat: add support for validating asar archives on macOS (#30667)
* feat: add support for validating asar archives on macOS * chore: fix lint * chore: update as per feedback * feat: switch implementation to asar integrity hash checks * feat: make ranged requests work with the asar file validator DataSourceFilter * chore: fix lint * chore: fix missing log include on non-darwin * fix: do not pull block size out of missing optional * fix: match ValidateOrDie symbol on non-darwin * chore: fix up asar specs by repacking archives * fix: maintain integrity chain, do not load file integrity if header integrity was not loaded * debug test * Update node-spec.ts * fix: initialize header_validated_ * chore: update PR per feedback * chore: update per feedback * build: use final asar module * Update fuses.json5
This commit is contained in:
parent
fcad531f2e
commit
57d088517c
35 changed files with 705 additions and 43 deletions
|
@ -1564,7 +1564,7 @@ describe('asar package', function () {
|
|||
forked.on('message', function (stats) {
|
||||
try {
|
||||
expect(stats.isFile).to.be.true();
|
||||
expect(stats.size).to.equal(778);
|
||||
expect(stats.size).to.equal(3458);
|
||||
done();
|
||||
} catch (e) {
|
||||
done(e);
|
||||
|
@ -1588,7 +1588,7 @@ describe('asar package', function () {
|
|||
try {
|
||||
const stats = JSON.parse(output);
|
||||
expect(stats.isFile).to.be.true();
|
||||
expect(stats.size).to.equal(778);
|
||||
expect(stats.size).to.equal(3458);
|
||||
done();
|
||||
} catch (e) {
|
||||
done(e);
|
||||
|
|
BIN
spec/fixtures/test.asar/a.asar
vendored
BIN
spec/fixtures/test.asar/a.asar
vendored
Binary file not shown.
BIN
spec/fixtures/test.asar/echo.asar
vendored
BIN
spec/fixtures/test.asar/echo.asar
vendored
Binary file not shown.
BIN
spec/fixtures/test.asar/empty.asar
vendored
BIN
spec/fixtures/test.asar/empty.asar
vendored
Binary file not shown.
BIN
spec/fixtures/test.asar/logo.asar
vendored
BIN
spec/fixtures/test.asar/logo.asar
vendored
Binary file not shown.
22
spec/fixtures/test.asar/repack.js
vendored
Normal file
22
spec/fixtures/test.asar/repack.js
vendored
Normal file
|
@ -0,0 +1,22 @@
|
|||
// Use this script to regenerate these fixture files
|
||||
// using a new version of the asar package
|
||||
|
||||
const asar = require('asar');
|
||||
const fs = require('fs');
|
||||
const os = require('os');
|
||||
const path = require('path');
|
||||
|
||||
const archives = [];
|
||||
for (const child of fs.readdirSync(__dirname)) {
|
||||
if (child.endsWith('.asar')) {
|
||||
archives.push(path.resolve(__dirname, child));
|
||||
}
|
||||
}
|
||||
|
||||
for (const archive of archives) {
|
||||
const tmp = fs.mkdtempSync(path.resolve(os.tmpdir(), 'asar-spec-'));
|
||||
asar.extractAll(archive, tmp);
|
||||
asar.createPackageWithOptions(tmp, archive, {
|
||||
unpack: fs.existsSync(archive + '.unpacked') ? '*' : undefined
|
||||
});
|
||||
}
|
BIN
spec/fixtures/test.asar/script.asar
vendored
BIN
spec/fixtures/test.asar/script.asar
vendored
Binary file not shown.
BIN
spec/fixtures/test.asar/unpack.asar
vendored
BIN
spec/fixtures/test.asar/unpack.asar
vendored
Binary file not shown.
BIN
spec/fixtures/test.asar/video.asar
vendored
BIN
spec/fixtures/test.asar/video.asar
vendored
Binary file not shown.
BIN
spec/fixtures/test.asar/web.asar
vendored
BIN
spec/fixtures/test.asar/web.asar
vendored
Binary file not shown.
Loading…
Add table
Add a link
Reference in a new issue