Initial curated chimera source from a8ae5b1db07fb49926c94585e2718e5130330974
This commit is contained in:
commit
c737a37f71
531 files changed
+119270
No files matched your search
@@ -0,0 +1,61 @@
|
||||
import assert from 'node:assert/strict';
|
||||
import test from 'node:test';
|
||||
|
||||
import {
|
||||
buildDiagnosticLoader,
|
||||
inspectFrankenElf,
|
||||
sha256,
|
||||
} from '../../scripts/autonomous/build-kstuff-diagnostic-loader.mjs';
|
||||
|
||||
const MARKER = Buffer.from([0xeb, 0x0b, 0x50, 0x4c, 0x44, 0x00]);
|
||||
|
||||
function frankenElf(size) {
|
||||
const buffer = Buffer.alloc(size, 0x41);
|
||||
MARKER.copy(buffer);
|
||||
buffer.writeBigUInt64LE(64n, 32);
|
||||
buffer.writeUInt16LE(1, 56);
|
||||
buffer.writeUInt32LE(1, 64);
|
||||
buffer.writeUInt32LE(5, 68);
|
||||
buffer.writeBigUInt64LE(0n, 72);
|
||||
buffer.writeBigUInt64LE(BigInt(size), 96);
|
||||
buffer.writeBigUInt64LE(BigInt(size), 104);
|
||||
return buffer;
|
||||
}
|
||||
|
||||
test('in-place diagnostic build preserves bytes after the exact embedded image span', () => {
|
||||
const prefix = Buffer.alloc(96, 0x23);
|
||||
const officialPayload = frankenElf(192);
|
||||
const suffix = Buffer.alloc(80, 0x7d);
|
||||
const officialLoader = Buffer.concat([prefix, officialPayload, suffix]);
|
||||
const diagnosticPayload = frankenElf(160);
|
||||
const manifest = { officialLoader: {
|
||||
size: officialLoader.length,
|
||||
sha256: sha256(officialLoader),
|
||||
embeddedPayloadOffset: prefix.length,
|
||||
embeddedPayloadSize: officialPayload.length,
|
||||
} };
|
||||
|
||||
const result = buildDiagnosticLoader({ officialLoader, diagnosticPayload, manifest });
|
||||
assert.deepEqual(result.output.subarray(prefix.length + officialPayload.length), suffix);
|
||||
assert.equal(result.evidence.zeroPaddingBytes, 32);
|
||||
assert.equal(inspectFrankenElf(diagnosticPayload).imageSpan, diagnosticPayload.length);
|
||||
});
|
||||
|
||||
test('in-place diagnostic build rejects a payload larger than the official image span', () => {
|
||||
const prefix = Buffer.alloc(96, 0x23);
|
||||
const officialPayload = frankenElf(192);
|
||||
const suffix = Buffer.alloc(80, 0x7d);
|
||||
const officialLoader = Buffer.concat([prefix, officialPayload, suffix]);
|
||||
const diagnosticPayload = frankenElf(208);
|
||||
const manifest = { officialLoader: {
|
||||
size: officialLoader.length,
|
||||
sha256: sha256(officialLoader),
|
||||
embeddedPayloadOffset: prefix.length,
|
||||
embeddedPayloadSize: officialPayload.length,
|
||||
} };
|
||||
|
||||
assert.throws(
|
||||
() => buildDiagnosticLoader({ officialLoader, diagnosticPayload, manifest }),
|
||||
/rebuild the loader from pinned source/,
|
||||
);
|
||||
});
|
||||
Reference in new issue
Block a user