From d86db0de932912591e4a3884305547162b87f885 Mon Sep 17 00:00:00 2001 From: Samuel Karp Date: Mon, 27 Feb 2023 15:02:01 +0800 Subject: [PATCH] importer: stream oci-layout and manifest.json Signed-off-by: Samuel Karp --- images/archive/importer.go | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/images/archive/importer.go b/images/archive/importer.go index da83275..443b886 100644 --- a/images/archive/importer.go +++ b/images/archive/importer.go @@ -23,7 +23,6 @@ import ( "context" "encoding/json" "io" - "io/ioutil" "path" "github.com/containerd/containerd/archive/compression" @@ -192,15 +191,14 @@ func ImportIndex(ctx context.Context, store content.Store, reader io.Reader) (oc return writeManifest(ctx, store, idx, ocispec.MediaTypeImageIndex) } +const ( + kib = 1024 + mib = 1024 * kib + jsonLimit = 20 * mib +) + func onUntarJSON(r io.Reader, j interface{}) error { - b, err := ioutil.ReadAll(r) - if err != nil { - return err - } - if err := json.Unmarshal(b, j); err != nil { - return err - } - return nil + return json.NewDecoder(io.LimitReader(r, jsonLimit)).Decode(j) } func onUntarBlob(ctx context.Context, r io.Reader, store content.Ingester, size int64, ref string) (digest.Digest, error) { -- 2.33.0