From 4da68cfcfccf002f344b238600a602dd5906dc5f Mon Sep 17 00:00:00 2001 From: poornas Date: Wed, 20 Nov 2019 17:51:10 -0800 Subject: [PATCH] Handle indexes correctly in DeleteMultipleObjectsHandler (#8544) Regression from #8509 which changes objectsToDelete entry from a list to map. This will cause index out of range panic if object is not selected for delete. --- cmd/bucket-handlers.go | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/cmd/bucket-handlers.go b/cmd/bucket-handlers.go index b7b06bc60..39d0328dd 100644 --- a/cmd/bucket-handlers.go +++ b/cmd/bucket-handlers.go @@ -404,20 +404,24 @@ func (api objectAPIHandlers) DeleteMultipleObjectsHandler(w http.ResponseWriter, toNames := func(input map[string]int) (output []string) { output = make([]string, len(input)) - for name, index := range input { - output[index] = name + idx := 0 + for name := range input { + output[idx] = name + idx++ } return } - errs, err := deleteObjectsFn(ctx, bucket, toNames(objectsToDelete)) + deleteList := toNames(objectsToDelete) + errs, err := deleteObjectsFn(ctx, bucket, deleteList) if err != nil { writeErrorResponse(ctx, w, toAPIError(ctx, err), r.URL, guessIsBrowserReq(r)) return } - for _, index := range objectsToDelete { - dErrs[index] = toAPIErrorCode(ctx, errs[index]) + for i, objName := range deleteList { + dIdx := objectsToDelete[objName] + dErrs[dIdx] = toAPIErrorCode(ctx, errs[i]) } // Collect deleted objects and errors if any.