@@ -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