From 3f2383c55554e48f95e82393517b780e9c4a380e Mon Sep 17 00:00:00 2001 From: Dominic Wong Date: Fri, 20 Aug 2021 09:37:00 +0100 Subject: [PATCH] check for correct format. close body earlier (#193) --- image/handler/image.go | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/image/handler/image.go b/image/handler/image.go index 645cd92..de97c8b 100644 --- a/image/handler/image.go +++ b/image/handler/image.go @@ -15,6 +15,7 @@ import ( "github.com/disintegration/imaging" "github.com/micro/micro/v3/service/config" + merrors "github.com/micro/micro/v3/service/errors" "github.com/micro/micro/v3/service/store" img "github.com/micro/services/image/proto" "github.com/micro/services/pkg/tenant" @@ -64,6 +65,7 @@ func (e *Image) Upload(ctx context.Context, req *img.UploadRequest, rsp *img.Upl if err != nil { return err } + defer response.Body.Close() switch { case strings.HasSuffix(ur.Path, ".png"): srcImage, err = png.Decode(response.Body) @@ -73,7 +75,7 @@ func (e *Image) Upload(ctx context.Context, req *img.UploadRequest, rsp *img.Upl if err != nil { return err } - defer response.Body.Close() + } else { return errors.New("base64 or url param is required") } @@ -106,6 +108,9 @@ func base64ToImage(b64 string) (image.Image, string, error) { ext := "" parts := strings.Split(b64, ",") + if len(parts) != 2 { + return srcImage, "", merrors.BadRequest("image", "Incorrect format for base64 image, expected ,") + } prefix := parts[0] b64 = strings.TrimSpace(parts[1]) res, err := base64.StdEncoding.DecodeString(b64) @@ -149,6 +154,7 @@ func (e *Image) Resize(ctx context.Context, req *img.ResizeRequest, rsp *img.Res if err != nil { return err } + defer response.Body.Close() switch { case strings.HasSuffix(ur.Path, ".png"): srcImage, err = png.Decode(response.Body) @@ -158,7 +164,7 @@ func (e *Image) Resize(ctx context.Context, req *img.ResizeRequest, rsp *img.Res if err != nil { return err } - defer response.Body.Close() + } else { return errors.New("base64 or url param is required") } @@ -238,6 +244,7 @@ func (e *Image) Convert(ctx context.Context, req *img.ConvertRequest, rsp *img.C if err != nil { return err } + defer response.Body.Close() switch { case strings.HasSuffix(ur.Path, ".png"): srcImage, err = png.Decode(response.Body) @@ -247,7 +254,7 @@ func (e *Image) Convert(ctx context.Context, req *img.ConvertRequest, rsp *img.C if err != nil { return err } - defer response.Body.Close() + } buf := new(bytes.Buffer)