From c88728f217631db8e870ae5bb784415c1e426c7f Mon Sep 17 00:00:00 2001 From: Derek McGowan Date: Wed, 5 Sep 2018 13:40:42 -0700 Subject: [PATCH] Fix registry stripping newlines from manifests Content must be preserved exactly Signed-off-by: Derek McGowan --- registry/storage/manifestlisthandler.go | 7 +++---- registry/storage/ocimanifesthandler.go | 7 +++---- registry/storage/schema2manifesthandler.go | 7 +++---- 3 files changed, 9 insertions(+), 12 deletions(-) diff --git a/registry/storage/manifestlisthandler.go b/registry/storage/manifestlisthandler.go index 43468f66..ffc39161 100644 --- a/registry/storage/manifestlisthandler.go +++ b/registry/storage/manifestlisthandler.go @@ -2,7 +2,6 @@ package storage import ( "context" - "encoding/json" "fmt" "github.com/docker/distribution" @@ -23,12 +22,12 @@ var _ ManifestHandler = &manifestListHandler{} func (ms *manifestListHandler) Unmarshal(ctx context.Context, dgst digest.Digest, content []byte) (distribution.Manifest, error) { dcontext.GetLogger(ms.ctx).Debug("(*manifestListHandler).Unmarshal") - var m manifestlist.DeserializedManifestList - if err := json.Unmarshal(content, &m); err != nil { + m := &manifestlist.DeserializedManifestList{} + if err := m.UnmarshalJSON(content); err != nil { return nil, err } - return &m, nil + return m, nil } func (ms *manifestListHandler) Put(ctx context.Context, manifestList distribution.Manifest, skipDependencyVerification bool) (digest.Digest, error) { diff --git a/registry/storage/ocimanifesthandler.go b/registry/storage/ocimanifesthandler.go index 03264b8c..91a037a0 100644 --- a/registry/storage/ocimanifesthandler.go +++ b/registry/storage/ocimanifesthandler.go @@ -2,7 +2,6 @@ package storage import ( "context" - "encoding/json" "fmt" "net/url" @@ -26,12 +25,12 @@ var _ ManifestHandler = &ocischemaManifestHandler{} func (ms *ocischemaManifestHandler) Unmarshal(ctx context.Context, dgst digest.Digest, content []byte) (distribution.Manifest, error) { dcontext.GetLogger(ms.ctx).Debug("(*ocischemaManifestHandler).Unmarshal") - var m ocischema.DeserializedManifest - if err := json.Unmarshal(content, &m); err != nil { + m := &ocischema.DeserializedManifest{} + if err := m.UnmarshalJSON(content); err != nil { return nil, err } - return &m, nil + return m, nil } func (ms *ocischemaManifestHandler) Put(ctx context.Context, manifest distribution.Manifest, skipDependencyVerification bool) (digest.Digest, error) { diff --git a/registry/storage/schema2manifesthandler.go b/registry/storage/schema2manifesthandler.go index 863ab2ba..acb3255b 100644 --- a/registry/storage/schema2manifesthandler.go +++ b/registry/storage/schema2manifesthandler.go @@ -2,7 +2,6 @@ package storage import ( "context" - "encoding/json" "errors" "fmt" "net/url" @@ -33,12 +32,12 @@ var _ ManifestHandler = &schema2ManifestHandler{} func (ms *schema2ManifestHandler) Unmarshal(ctx context.Context, dgst digest.Digest, content []byte) (distribution.Manifest, error) { dcontext.GetLogger(ms.ctx).Debug("(*schema2ManifestHandler).Unmarshal") - var m schema2.DeserializedManifest - if err := json.Unmarshal(content, &m); err != nil { + m := &schema2.DeserializedManifest{} + if err := m.UnmarshalJSON(content); err != nil { return nil, err } - return &m, nil + return m, nil } func (ms *schema2ManifestHandler) Put(ctx context.Context, manifest distribution.Manifest, skipDependencyVerification bool) (digest.Digest, error) {