mirror of
https://github.com/versity/versitygw.git
synced 2026-09-25 09:24:22 +00:00
fix: Changed exceeding range error for the source object in UploadPartCopy action
This commit is contained in:
@@ -18,6 +18,7 @@ import (
|
|||||||
"crypto/md5"
|
"crypto/md5"
|
||||||
"encoding/hex"
|
"encoding/hex"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"net/http"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
@@ -98,6 +99,14 @@ func ParseRange(size int64, acceptRange string) (int64, int64, error) {
|
|||||||
return startOffset, endOffset - startOffset + 1, nil
|
return startOffset, endOffset - startOffset + 1, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func CreateExceedingRangeErr(objSize int64) s3err.APIError {
|
||||||
|
return s3err.APIError{
|
||||||
|
Code: "InvalidArgument",
|
||||||
|
Description: fmt.Sprintf("Range specified is not valid for source object of size: %d", objSize),
|
||||||
|
HTTPStatusCode: http.StatusBadRequest,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func GetMultipartMD5(parts []types.CompletedPart) string {
|
func GetMultipartMD5(parts []types.CompletedPart) string {
|
||||||
var partsEtagBytes []byte
|
var partsEtagBytes []byte
|
||||||
for _, part := range parts {
|
for _, part := range parts {
|
||||||
|
|||||||
@@ -1209,7 +1209,7 @@ func (p *Posix) UploadPartCopy(ctx context.Context, upi *s3.UploadPartCopyInput)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if startOffset+length > fi.Size()+1 {
|
if startOffset+length > fi.Size()+1 {
|
||||||
return s3response.CopyObjectResult{}, s3err.GetAPIError(s3err.ErrInvalidRange)
|
return s3response.CopyObjectResult{}, backend.CreateExceedingRangeErr(fi.Size())
|
||||||
}
|
}
|
||||||
|
|
||||||
f, err := p.openTmpFile(filepath.Join(*upi.Bucket, objdir),
|
f, err := p.openTmpFile(filepath.Join(*upi.Bucket, objdir),
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ import (
|
|||||||
|
|
||||||
"github.com/aws/aws-sdk-go-v2/service/s3"
|
"github.com/aws/aws-sdk-go-v2/service/s3"
|
||||||
"github.com/aws/aws-sdk-go-v2/service/s3/types"
|
"github.com/aws/aws-sdk-go-v2/service/s3/types"
|
||||||
|
"github.com/versity/versitygw/backend"
|
||||||
"github.com/versity/versitygw/s3err"
|
"github.com/versity/versitygw/s3err"
|
||||||
"github.com/versity/versitygw/s3response"
|
"github.com/versity/versitygw/s3response"
|
||||||
)
|
)
|
||||||
@@ -5149,7 +5150,7 @@ func UploadPartCopy_greater_range_than_obj_size(s *S3Conf) error {
|
|||||||
PartNumber: &partNumber,
|
PartNumber: &partNumber,
|
||||||
})
|
})
|
||||||
cancel()
|
cancel()
|
||||||
if err := checkApiErr(err, s3err.GetAPIError(s3err.ErrInvalidRange)); err != nil {
|
if err := checkApiErr(err, backend.CreateExceedingRangeErr(int64(srcObjSize))); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user