diff --git a/pkg/repocli/imager.go b/pkg/repocli/imager.go index 41d41b6..a13f74b 100644 --- a/pkg/repocli/imager.go +++ b/pkg/repocli/imager.go @@ -99,16 +99,16 @@ func (ima *Imager) ReadManifest(ctx context.Context, digstr string) (bool, strin if err != nil { return exist, mime, man, err } - - var size int64 for _, descr := range ima.index.Manifests { - if digstr == descr.Digest.Encoded() { - size = descr.Size + if digstr == descr.Digest.String() { mime = descr.MediaType exist = true } } - + if !exist { + err = errors.New("Manifest not found in index") + return exist, mime, man, err + } subdir := string(digobj.Algorithm()) mpath := filepath.Join(ima.place, ocispec.ImageBlobsDir, subdir, digobj.Encoded()) mfile, err := os.OpenFile(mpath, os.O_RDONLY, 0) @@ -120,12 +120,8 @@ func (ima *Imager) ReadManifest(ctx context.Context, digstr string) (bool, strin buffer := bytes.NewBuffer(nil) verifier := digobj.Verifier() mwriter := io.MultiWriter(verifier, buffer) - readsize, err := io.Copy(mwriter, mfile) + _, err = io.Copy(mwriter, mfile) man = buffer.Bytes() - if size != readsize { - err = errors.New("Mismatch manigest sizes") - return exist, mime, man, err - } if !verifier.Verified() { err = errors.New("Mismatch manifest digests") return exist, mime, man, err diff --git a/pkg/repocli/pushimage.go b/pkg/repocli/pushimage.go index d19c338..0cd7ae7 100644 --- a/pkg/repocli/pushimage.go +++ b/pkg/repocli/pushimage.go @@ -20,7 +20,12 @@ func (down *Loader) Push(ctx context.Context, rawref, dir, osname, arch string) } index := imager.Index() for _, descr := range index.Manifests { - _, _, mandata, err := imager.ReadManifest(ctx, descr.Digest.Encoded()) + digstr := descr.Digest.String() + + _, _, mandata, err := imager.ReadManifest(ctx, digstr) + if err != nil { + return err + } man := &ocispec.Manifest{} err = json.Unmarshal(mandata, man) if err != nil {