Browse Source

Ensure Request Body Readers are closed in LFS server (#8454)

for-closed-social
zeripath 5 years ago
committed by GitHub
parent
commit
6551a9d6ca
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 15 additions and 5 deletions
  1. +6
    -2
      modules/lfs/locks.go
  2. +9
    -3
      modules/lfs/server.go

+ 6
- 2
modules/lfs/locks.go View File

@ -155,7 +155,9 @@ func PostLockHandler(ctx *context.Context) {
} }
var req api.LFSLockRequest 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 { if err := dec.Decode(&req); err != nil {
writeStatus(ctx, 400) writeStatus(ctx, 400)
return return
@ -269,7 +271,9 @@ func UnLockHandler(ctx *context.Context) {
} }
var req api.LFSLockDeleteRequest 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 { if err := dec.Decode(&req); err != nil {
writeStatus(ctx, 400) writeStatus(ctx, 400)
return return

+ 9
- 3
modules/lfs/server.go View File

@ -327,7 +327,9 @@ func PutHandler(ctx *context.Context) {
} }
contentStore := &ContentStore{BasePath: setting.LFS.ContentPath} 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) ctx.Resp.WriteHeader(500)
fmt.Fprintf(ctx.Resp, `{"message":"%s"}`, err) fmt.Fprintf(ctx.Resp, `{"message":"%s"}`, err)
if err = repository.RemoveLFSMetaObjectByOid(rv.Oid); err != nil { 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 if r.Method == "POST" { // Maybe also check if +json
var p RequestVars var p RequestVars
dec := json.NewDecoder(r.Body().ReadCloser())
bodyReader := r.Body().ReadCloser()
defer bodyReader.Close()
dec := json.NewDecoder(bodyReader)
err := dec.Decode(&p) err := dec.Decode(&p)
if err != nil { if err != nil {
return rv return rv
@ -453,7 +457,9 @@ func unpackbatch(ctx *context.Context) *BatchVars {
r := ctx.Req r := ctx.Req
var bv BatchVars var bv BatchVars
dec := json.NewDecoder(r.Body().ReadCloser())
bodyReader := r.Body().ReadCloser()
defer bodyReader.Close()
dec := json.NewDecoder(bodyReader)
err := dec.Decode(&bv) err := dec.Decode(&bv)
if err != nil { if err != nil {
return &bv return &bv

Loading…
Cancel
Save