{"record":{"id":"9d50b97b8f5cbe6f","repo":"jdx/mise","slug":"content-level-slsa-verification-does-not-support-n","errorCode":null,"errorMessage":"content-level SLSA verification does not support non-regular archive entry: {}","messagePattern":"content-level SLSA verification does not support non-regular archive entry: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/file.rs","lineNumber":2684,"sourceCode":"\nfn archive_content_files_tar(\n    archive_path: &Path,\n    format: ExtractionFormat,\n    strip_components: usize,\n) -> Result<Vec<ArchiveContent>> {\n    let tar = open_tar(format, archive_path)?;\n    let mut archive = Archive::new(tar);\n    let mut files = Vec::new();\n\n    for entry in archive.entries()? {\n        let mut entry = entry?;\n        let path = entry.path()?.into_owned();\n        let entry_type = entry.entry_type();\n        if entry_type == EntryType::Directory {\n            continue;\n        }\n        if entry_type != EntryType::File {\n            bail!(\n                \"content-level SLSA verification does not support non-regular archive entry: {}\",\n                path.display()\n            );\n        }\n        let name = normalize_archive_content_path(&path, strip_components)?;\n        let sha256 = sha256_reader(&mut entry)?;\n        files.push(ArchiveContent { name, sha256 });\n    }\n\n    validate_archive_content_files(files)\n}\n\nfn archive_content_files_zip(\n    archive_path: &Path,\n    strip_components: usize,\n) -> Result<Vec<ArchiveContent>> {\n    let f = File::open(archive_path)?;\n    let mut archive = ZipArchive::new(f)","sourceCodeStart":2666,"sourceCodeEnd":2702,"githubUrl":"https://github.com/jdx/mise/blob/533346cc374382b41ec5ff70536252b2e96e725c/src/file.rs#L2666-L2702","documentation":"While hashing tar members for content-level SLSA verification, mise accepts directories (skipped) and regular files only. Any other entry type — devices, fifos, hardlinks treated as non-regular, etc. — triggers this error, because verification semantics are undefined for such entries.","triggerScenarios":"SLSA content verification over a tar archive containing special entries (device nodes, fifos, pax hardlink entries surfaced as non-regular types).","commonSituations":"Archives built from full system trees or with unusual packaging tools that embed non-file members.","solutions":["Repackage the archive so it contains only regular files and directories","Exclude the offending members when creating the tarball","Skip content-level verification for this artifact"],"exampleFix":"// before\ntar -cf tool.tar /dev/special tool\n// after\ntar -cf tool.tar tool","handlingStrategy":"try-catch","validationCode":"// inspect tar listing; fail if any entry type is not file/dir\nfor (const e of listTar(archive)) {\n  if (e.type !== \"file\" && e.type !== \"dir\") throw new Error(\"non-regular entry: \" + e.name);\n}","typeGuard":"function isRegularEntry(e) { return e.type === \"file\" || e.type === \"dir\"; }","tryCatchPattern":"try { verifySlsa(a) } catch (e) { if (/non-regular archive entry/.test(e.message)) { rebuildArchive(a); } else throw e; }","preventionTips":["Build tarballs with only files and directories","Avoid archiving device nodes/fifos","Repackage third-party archives with special members"],"tags":["slsa","verification","tar","archive"],"backgroundTag":"unsupported-operation","analyzedSha":"533346cc374382b41ec5ff70536252b2e96e725c","analyzedAt":"2026-09-17T13:35:38.149Z","contentChangedAt":"2026-09-17T13:35:38.149Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}