diff options
| author | Hermes Agent <hermes@localhost> | 2026-08-12 05:53:50 +0000 |
|---|---|---|
| committer | Hermes Agent <hermes@localhost> | 2026-08-12 05:53:50 +0000 |
| commit | 35af190cac33650b90e8056b890b8c2c03dca7e7 (patch) | |
| tree | c6f945e5f82686e29d8395855fe9c2ac25dcc4bf /src/manifest.rs | |
| parent | 7842b48e60cd54be0e5f248563821a766590b0f0 (diff) | |
Validate initrd manifest digests
Diffstat (limited to 'src/manifest.rs')
| -rw-r--r-- | src/manifest.rs | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/manifest.rs b/src/manifest.rs index a68245b..0848a98 100644 --- a/src/manifest.rs +++ b/src/manifest.rs @@ -32,6 +32,7 @@ impl ArtifactManifest { services.sort_by(|left, right| left.name.cmp(&right.name)); archive_members.sort_by(|left, right| left.path.cmp(&right.path)); validate_file_records(&files)?; + validate_initrd_record(initrd.as_ref())?; validate_manifest_paths(&files, initrd.as_ref(), &archive_members)?; ensure_unique("package", packages.iter().map(|record| record.name.as_str()))?; ensure_unique("file", files.iter().map(|record| record.path.as_str()))?; @@ -371,6 +372,15 @@ fn validate_manifest_paths( Ok(()) } +fn validate_initrd_record(record: Option<&InitrdRecord>) -> Result<()> { + if let Some(record) = record { + if record.sha256.is_empty() { + bail!("initrd record requires a sha256 digest: {}", record.path); + } + } + Ok(()) +} + fn validate_file_records(records: &[FileRecord]) -> Result<()> { for record in records { match record.kind.as_str() { |