INNER CODE UNIT · TypeScript
assertSafeArchive
software-mansion/argent · packages/archive/src/index.ts:109
async function assertSafeArchive(tarPath: string, destDir: string): Promise<void> {
let members: string[];
try {
members = await listTarMembers(tarPath);
} catch (err) {
throw new ArchiveError(
`Could not read archive: ${err instanceof Error ? err.message : String(err)}`
);
}
if (members.length === 0) {
throw new ArchiveError("Archive is empty.");
}
for (const member of members) {
if (!isSafeTarMember(member, destDir)) {
throw new ArchiveError(`Archive contains an unsafe path "${member}" — refusing extraction.`);
}
}
await assertSafeMemberTypes(tarPath);