Author: amitj
Date: Tue Jul 5 11:15:15 2016
New Revision: 1751445
URL: http://svn.apache.org/viewvc?rev=1751445&view=rev
Log:
OAK-4527: [oak-blob-cloud] Access parameters configured leak out in the
exception message
Stripping of accessKey & secretKey from the configured parameters map before
throwing exception
Added:
jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/aws/s3/TestS3DataStore.java
Removed:
jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/aws/s3/S3TestDataStore.java
Modified:
jackrabbit/oak/trunk/oak-blob-cloud/src/main/java/org/apache/jackrabbit/oak/blob/cloud/aws/s3/S3Backend.java
Modified:
jackrabbit/oak/trunk/oak-blob-cloud/src/main/java/org/apache/jackrabbit/oak/blob/cloud/aws/s3/S3Backend.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-blob-cloud/src/main/java/org/apache/jackrabbit/oak/blob/cloud/aws/s3/S3Backend.java?rev=1751445&r1=1751444&r2=1751445&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-blob-cloud/src/main/java/org/apache/jackrabbit/oak/blob/cloud/aws/s3/S3Backend.java
(original)
+++
jackrabbit/oak/trunk/oak-blob-cloud/src/main/java/org/apache/jackrabbit/oak/blob/cloud/aws/s3/S3Backend.java
Tue Jul 5 11:15:15 2016
@@ -26,6 +26,7 @@ import java.util.Date;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
+import java.util.Map;
import java.util.Properties;
import java.util.Queue;
import java.util.Set;
@@ -39,6 +40,7 @@ import com.google.common.base.Function;
import com.google.common.base.Predicate;
import com.google.common.collect.AbstractIterator;
import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
import org.apache.jackrabbit.core.data.AsyncTouchCallback;
import org.apache.jackrabbit.core.data.AsyncTouchResult;
import org.apache.jackrabbit.core.data.AsyncUploadCallback;
@@ -205,8 +207,17 @@ public class S3Backend implements Shared
+(System.currentTimeMillis() - startTime.getTime()));
} catch (Exception e) {
LOG.debug(" error ", e);
+ Map<String, String> filteredMap = Maps.newHashMap();
+ if (prop != null) {
+ filteredMap = Maps.filterKeys(Maps.fromProperties(prop), new
Predicate<String>() {
+ @Override public boolean apply(String input) {
+ return !input.equals(S3Constants.ACCESS_KEY) &&
!input.equals(S3Constants
+ .SECRET_KEY);
+ }
+ });
+ }
throw new DataStoreException("Could not initialize S3 from "
- + prop, e);
+ + filteredMap, e);
} finally {
if (contextClassLoader != null) {
Thread.currentThread().setContextClassLoader(contextClassLoader);
Added:
jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/aws/s3/TestS3DataStore.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/aws/s3/TestS3DataStore.java?rev=1751445&view=auto
==============================================================================
---
jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/aws/s3/TestS3DataStore.java
(added)
+++
jackrabbit/oak/trunk/oak-blob-cloud/src/test/java/org/apache/jackrabbit/oak/blob/cloud/aws/s3/TestS3DataStore.java
Tue Jul 5 11:15:15 2016
@@ -0,0 +1,56 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.oak.blob.cloud.aws.s3;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.Properties;
+
+import javax.jcr.RepositoryException;
+
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+import org.junit.rules.TemporaryFolder;
+
+/**
+ * Simple tests for S3DataStore.
+ */
+public class TestS3DataStore {
+ @Rule
+ public ExpectedException expectedEx = ExpectedException.none();
+
+ @Rule
+ public TemporaryFolder folder = new TemporaryFolder(new File("target"));
+
+ @Test
+ public void testAccessParamLeakOnError() throws RepositoryException,
IOException {
+ expectedEx.expect(RepositoryException.class);
+ expectedEx.expectMessage("Could not initialize S3 from
{s3Region=us-standard}");
+
+ Properties props = new Properties();
+ props.put(S3Constants.ACCESS_KEY, "abcd");
+ props.put(S3Constants.SECRET_KEY, "123456");
+ props.put(S3Constants.S3_REGION, "us-standard");
+
+ S3DataStore s3ds = new S3DataStore();
+ s3ds.setProperties(props);
+ s3ds.setSecret("123456");
+ s3ds.init(folder.newFolder().getAbsolutePath());
+ expectedEx.expect(RuntimeException.class);
+ }
+}