From 20a28b785a3752980348cda1c88d99afa4b7dac3 Mon Sep 17 00:00:00 2001 From: zeripath Date: Fri, 11 Oct 2019 17:11:06 +0100 Subject: [PATCH] Ensure Request Body Readers are closed in LFS server (#8454) (#8459) --- modules/lfs/locks.go | 8 ++++++-- modules/lfs/server.go | 12 +++++++++--- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/modules/lfs/locks.go b/modules/lfs/locks.go index 4516ba01ae..4111c4d722 100644 --- a/modules/lfs/locks.go +++ b/modules/lfs/locks.go @@ -155,7 +155,9 @@ func PostLockHandler(ctx *context.Context) { } var req api.LFSLockRequest - dec := json.NewDecoder(ctx.Req.Body().ReadCloser()) + bodyReader := ctx.Req.Body().ReadCloser() + defer bodyReader.Close() + dec := json.NewDecoder(bodyReader) if err := dec.Decode(&req); err != nil { writeStatus(ctx, 400) return @@ -269,7 +271,9 @@ func UnLockHandler(ctx *context.Context) { } var req api.LFSLockDeleteRequest - dec := json.NewDecoder(ctx.Req.Body().ReadCloser()) + bodyReader := ctx.Req.Body().ReadCloser() + defer bodyReader.Close() + dec := json.NewDecoder(bodyReader) if err := dec.Decode(&req); err != nil { writeStatus(ctx, 400) return diff --git a/modules/lfs/server.go b/modules/lfs/server.go index bf5355acfc..ae205b2f14 100644 --- a/modules/lfs/server.go +++ b/modules/lfs/server.go @@ -327,7 +327,9 @@ func PutHandler(ctx *context.Context) { } contentStore := &ContentStore{BasePath: setting.LFS.ContentPath} - if err := contentStore.Put(meta, ctx.Req.Body().ReadCloser()); err != nil { + bodyReader := ctx.Req.Body().ReadCloser() + defer bodyReader.Close() + if err := contentStore.Put(meta, bodyReader); err != nil { ctx.Resp.WriteHeader(500) fmt.Fprintf(ctx.Resp, `{"message":"%s"}`, err) if err = repository.RemoveLFSMetaObjectByOid(rv.Oid); err != nil { @@ -434,7 +436,9 @@ func unpack(ctx *context.Context) *RequestVars { if r.Method == "POST" { // Maybe also check if +json var p RequestVars - dec := json.NewDecoder(r.Body().ReadCloser()) + bodyReader := r.Body().ReadCloser() + defer bodyReader.Close() + dec := json.NewDecoder(bodyReader) err := dec.Decode(&p) if err != nil { return rv @@ -453,7 +457,9 @@ func unpackbatch(ctx *context.Context) *BatchVars { r := ctx.Req var bv BatchVars - dec := json.NewDecoder(r.Body().ReadCloser()) + bodyReader := r.Body().ReadCloser() + defer bodyReader.Close() + dec := json.NewDecoder(bodyReader) err := dec.Decode(&bv) if err != nil { return &bv