aws / aws/amazon-s3-encryption-client-java

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

Offen
#200 2 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
enhancement
Vorherrschende Sprache
Java
Sterne
34
Forks
21
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

### 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 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 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.

Beitragsleitfaden

Beitragsleitfaden öffnen

Rechercherichtung

Die Range-Anfrage über S3EncryptionClient.getObject mit einem 64KB-Objekt und bytes=65536-65635 reproduzieren und anschließend mit dem im Issue beschriebenen Verhalten von S3Client vergleichen. Nachverfolgen, wie der Verschlüsselungsclient die Range-Antwort verarbeitet; abgeschlossen ist die Aufgabe, wenn der verschlüsselte Client für eine Range hinter EOF einen 416-Fehler wegen einer nicht erfüllbaren Range meldet.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
aws, java
Bereich
backend, security
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.