Skip to content

S3 Encryption client does throw an error for ranges greater than EOF #200

@ahmarsuhail

Description

@ahmarsuhail

Problem:

I created a 64KB (65536 bytes) with S3Encryption client, and then did

    S3Client s3Client = S3Client.builder().region(Region.EU_WEST_1).build();

    S3Client s3ECClient = S3EncryptionClient.builder()
             .kmsKeyId("xxx")
            .wrappedClient(s3Client)
            .wrappedAsyncClient(S3AsyncClient.builder().region(Region.EU_WEST_1).build())
           .enableLegacyUnauthenticatedModes(true)
           .build();



    ResponseInputStream<GetObjectResponse> inputStream = s3ECClient.getObject(GetObjectRequest.builder()
        .bucket("xxxx")
        .key("xxxx")
        .range("bytes=65536-65635").build());

So end of range 65635 is greater than EOF at 65536. And no error was thrown.

Creating a file with a regular S3 client and then doing

    ResponseInputStream<GetObjectResponse> inputStream = s3Client.getObject(GetObjectRequest.builder()
        .bucket("xxx")
        .key("xxxx")
        .range("bytes=65536-65635").build());

throws software.amazon.awssdk.services.s3.model.S3Exception: The requested range is not satisfiable (Service: S3, Status Code: 416, Request ID: which is what we expect to be thrown in S3A.

Solution:

S3 Encryption client should also throw a 416 range not satisfiable error.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions