Skip to content
This repository was archived by the owner on Jul 18, 2025. It is now read-only.

Commit 3b7d198

Browse files
committed
Fix layer mapping
1 parent b5805f0 commit 3b7d198

File tree

1 file changed

+20
-5
lines changed

1 file changed

+20
-5
lines changed

sbom/index.go

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -208,20 +208,35 @@ func createLayerMapping(cache *registry.ImageCache) (*types.LayerMapping, error)
208208
OrdinalByDiffId: make(map[string]int, 0),
209209
}
210210

211-
diffIds := cache.Source.Image.Metadata.Config.RootFS.DiffIDs
212-
layers := cache.Source.Metadata.ImageMetadata.Layers
211+
rawManifest := cache.Source.Image.Metadata.RawManifest
212+
rawConfig := cache.Source.Image.Metadata.RawConfig
213+
214+
var manifest v1.Manifest
215+
err := json.Unmarshal(rawManifest, &manifest)
216+
if err != nil {
217+
return nil, errors.Wrap(err, "failed to unmarshal manifest")
218+
}
219+
220+
var config v1.ConfigFile
221+
err = json.Unmarshal(rawConfig, &config)
222+
if err != nil {
223+
return nil, errors.Wrap(err, "failed to unmarshal config")
224+
}
225+
226+
layers := manifest.Layers
227+
diffIds := config.RootFS.DiffIDs
213228

214229
li := 0
215230
for i, l := range cache.Source.Image.Metadata.Config.History {
216231
if !l.EmptyLayer {
217232
layer := layers[li]
218233
diffId := diffIds[li]
219234

220-
lm.ByDiffId[diffId.String()] = layer.Digest
221-
lm.ByDigest[layer.Digest] = diffId.String()
235+
lm.ByDiffId[diffId.String()] = layer.Digest.String()
236+
lm.ByDigest[layer.Digest.String()] = diffId.String()
222237
lm.OrdinalByDiffId[diffId.String()] = i
223238
lm.DiffIdByOrdinal[i] = diffId.String()
224-
lm.DigestByOrdinal[i] = layer.Digest
239+
lm.DigestByOrdinal[i] = layer.Digest.String()
225240
li++
226241
}
227242
}

0 commit comments

Comments
 (0)