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);

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…