From 175cc06e0b8a3115af576bf092e162c38ce85336 Mon Sep 17 00:00:00 2001 From: Artem Bilan Date: Thu, 19 May 2016 12:02:25 -0400 Subject: [PATCH] Fix NPE in the `S3Session` and validate bucket --- .../integration/aws/support/S3Session.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/springframework/integration/aws/support/S3Session.java b/src/main/java/org/springframework/integration/aws/support/S3Session.java index 6849ade..6b1d40c 100644 --- a/src/main/java/org/springframework/integration/aws/support/S3Session.java +++ b/src/main/java/org/springframework/integration/aws/support/S3Session.java @@ -56,6 +56,9 @@ public class S3Session implements Session { public S3ObjectSummary[] list(String path) throws IOException { Assert.hasText(path, "'path' must not be empty String."); String[] bucketPrefix = path.split("/"); + Assert.state(bucketPrefix.length > 0 && bucketPrefix[0].length() >= 3, + "S3 bucket name must be at least 3 characters long."); + ListObjectsRequest listObjectsRequest = new ListObjectsRequest() .withBucketName(bucketPrefix[0]); if (bucketPrefix.length > 1) { @@ -82,6 +85,9 @@ public class S3Session implements Session { @Override public String[] listNames(String path) throws IOException { String[] bucketPrefix = path.split("/"); + Assert.state(bucketPrefix.length > 0 && bucketPrefix[0].length() >= 3, + "S3 bucket name must be at least 3 characters long."); + ListObjectsRequest listObjectsRequest = new ListObjectsRequest() .withBucketName(bucketPrefix[0]); if (bucketPrefix.length > 1) { @@ -209,8 +215,10 @@ public class S3Session implements Session { private static String[] splitPathToBucketAndKey(String path) { Assert.hasText(path, "'path' must not be empty String."); - Assert.state(path.indexOf('/') != -1, "'path' must in pattern [BUCKET/KEY]."); - return path.split("/"); + String[] bucketKey = path.split("/"); + Assert.state(bucketKey.length == 2, "'path' must in pattern [BUCKET/KEY]."); + Assert.state(bucketKey[0].length() >= 3, "S3 bucket name must be at least 3 characters long."); + return bucketKey; } }