diff --git a/components/engine/graph/graph.go b/components/engine/graph/graph.go index fb66118537..a1657f4343 100644 --- a/components/engine/graph/graph.go +++ b/components/engine/graph/graph.go @@ -177,6 +177,7 @@ func (graph *Graph) Create(layerData archive.ArchiveReader, containerID, contain // Register imports a pre-existing image into the graph. func (graph *Graph) Register(img *Image, layerData archive.ArchiveReader) (err error) { + if err := image.ValidateID(img.ID); err != nil { return err } @@ -186,10 +187,11 @@ func (graph *Graph) Register(img *Image, layerData archive.ArchiveReader) (err e graph.imageMutex.Lock(img.ID) defer graph.imageMutex.Unlock(img.ID) + // The returned `error` must be named in this function's signature so that + // `err` is not shadowed in this deferred cleanup. defer func() { // If any error occurs, remove the new dir from the driver. // Don't check for errors since the dir might not have been created. - // FIXME: this leaves a possible race condition. if err != nil { graph.driver.Remove(img.ID) }