Skip to content

Commit ce70d94

Browse files
committed
Fixing classification of APIs and making XMLInputFactory safer
1 parent 9baf986 commit ce70d94

File tree

36 files changed

+69
-215
lines changed

36 files changed

+69
-215
lines changed

codegen/src/main/java/software/amazon/awssdk/codegen/poet/client/AsyncClientClass.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
import software.amazon.awssdk.annotations.SdkInternalApi;
4040
import software.amazon.awssdk.awscore.client.handler.AwsAsyncClientHandler;
4141
import software.amazon.awssdk.awscore.eventstream.EventStreamTaggedUnionJsonMarshaller;
42-
import software.amazon.awssdk.awscore.internal.client.handler.AwsClientHandlerUtils;
42+
import software.amazon.awssdk.awscore.client.handler.AwsClientHandlerUtils;
4343
import software.amazon.awssdk.codegen.emitters.GeneratorTaskParams;
4444
import software.amazon.awssdk.codegen.model.intermediate.IntermediateModel;
4545
import software.amazon.awssdk.codegen.model.intermediate.MemberModel;

codegen/src/main/java/software/amazon/awssdk/codegen/poet/client/specs/XmlProtocolSpec.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
import software.amazon.awssdk.codegen.poet.PoetExtensions;
2323
import software.amazon.awssdk.core.http.HttpResponseHandler;
2424
import software.amazon.awssdk.protocols.xml.AwsXmlProtocolFactory;
25-
import software.amazon.awssdk.protocols.xml.internal.unmarshall.XmlOperationMetadata;
25+
import software.amazon.awssdk.protocols.xml.XmlOperationMetadata;
2626

2727
public final class XmlProtocolSpec extends QueryProtocolSpec {
2828

codegen/src/test/resources/software/amazon/awssdk/codegen/poet/client/test-async-client-class.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
import software.amazon.awssdk.awscore.eventstream.EventStreamTaggedUnionPojoSupplier;
2121
import software.amazon.awssdk.awscore.eventstream.RestEventStreamAsyncResponseTransformer;
2222
import software.amazon.awssdk.awscore.exception.AwsServiceException;
23-
import software.amazon.awssdk.awscore.internal.client.handler.AwsClientHandlerUtils;
23+
import software.amazon.awssdk.awscore.client.handler.AwsClientHandlerUtils;
2424
import software.amazon.awssdk.core.ApiName;
2525
import software.amazon.awssdk.core.SdkResponse;
2626
import software.amazon.awssdk.core.async.AsyncRequestBody;

core/auth/src/main/java/software/amazon/awssdk/auth/signer/internal/AsyncSigV4SubscriberAdapter.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,9 @@
1818
import java.nio.ByteBuffer;
1919
import java.util.concurrent.atomic.AtomicBoolean;
2020
import java.util.concurrent.atomic.AtomicLong;
21-
2221
import org.reactivestreams.Subscriber;
2322
import org.reactivestreams.Subscription;
24-
import software.amazon.awssdk.annotations.SdkProtectedApi;
23+
import software.amazon.awssdk.annotations.SdkInternalApi;
2524

2625

2726
/**
@@ -31,7 +30,7 @@
3130
* <dd>The trailing empty frame is sent only if there is demand from the downstream subscriber</dd>
3231
* </dl>
3332
*/
34-
@SdkProtectedApi
33+
@SdkInternalApi
3534
final class AsyncSigV4SubscriberAdapter implements Subscriber<ByteBuffer> {
3635
private final AtomicBoolean upstreamDone = new AtomicBoolean(false);
3736
private final AtomicLong downstreamDemand = new AtomicLong();

core/auth/src/main/java/software/amazon/awssdk/auth/signer/internal/Aws4SignerRequestParams.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,14 @@
1616
package software.amazon.awssdk.auth.signer.internal;
1717

1818
import java.time.Clock;
19-
import software.amazon.awssdk.annotations.SdkProtectedApi;
19+
import software.amazon.awssdk.annotations.SdkInternalApi;
2020
import software.amazon.awssdk.auth.signer.params.Aws4SignerParams;
2121
import software.amazon.awssdk.regions.Region;
2222

2323
/**
2424
* Parameters that are used for computing a AWS 4 signature for a request.
2525
*/
26-
@SdkProtectedApi
26+
@SdkInternalApi
2727
public final class Aws4SignerRequestParams {
2828

2929
/**

core/aws-core/src/main/java/software/amazon/awssdk/awscore/client/handler/AwsAsyncClientHandler.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
import software.amazon.awssdk.annotations.SdkProtectedApi;
2121
import software.amazon.awssdk.annotations.ThreadSafe;
2222
import software.amazon.awssdk.awscore.internal.client.config.AwsClientOptionValidation;
23-
import software.amazon.awssdk.awscore.internal.client.handler.AwsClientHandlerUtils;
2423
import software.amazon.awssdk.core.SdkRequest;
2524
import software.amazon.awssdk.core.SdkResponse;
2625
import software.amazon.awssdk.core.async.AsyncResponseTransformer;
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
* permissions and limitations under the License.
1414
*/
1515

16-
package software.amazon.awssdk.awscore.internal.client.handler;
16+
package software.amazon.awssdk.awscore.client.handler;
1717

1818
import static software.amazon.awssdk.utils.CollectionUtils.firstIfPresent;
1919

@@ -22,7 +22,7 @@
2222
import java.nio.ByteBuffer;
2323
import java.util.Map;
2424
import java.util.stream.Collectors;
25-
import software.amazon.awssdk.annotations.SdkInternalApi;
25+
import software.amazon.awssdk.annotations.SdkProtectedApi;
2626
import software.amazon.awssdk.auth.credentials.AwsCredentials;
2727
import software.amazon.awssdk.auth.credentials.AwsCredentialsProvider;
2828
import software.amazon.awssdk.auth.signer.AwsSignerExecutionAttribute;
@@ -47,7 +47,7 @@
4747
import software.amazon.eventstream.HeaderValue;
4848
import software.amazon.eventstream.Message;
4949

50-
@SdkInternalApi
50+
@SdkProtectedApi
5151
public final class AwsClientHandlerUtils {
5252

5353
private AwsClientHandlerUtils() {

core/aws-core/src/main/java/software/amazon/awssdk/awscore/client/handler/AwsSyncClientHandler.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
import software.amazon.awssdk.annotations.SdkProtectedApi;
2121
import software.amazon.awssdk.annotations.ThreadSafe;
2222
import software.amazon.awssdk.awscore.internal.client.config.AwsClientOptionValidation;
23-
import software.amazon.awssdk.awscore.internal.client.handler.AwsClientHandlerUtils;
2423
import software.amazon.awssdk.core.SdkRequest;
2524
import software.amazon.awssdk.core.SdkResponse;
2625
import software.amazon.awssdk.core.client.config.SdkClientConfiguration;
@@ -30,7 +29,7 @@
3029
import software.amazon.awssdk.core.http.ExecutionContext;
3130
import software.amazon.awssdk.core.http.HttpResponseHandler;
3231
import software.amazon.awssdk.core.interceptor.ExecutionAttributes;
33-
import software.amazon.awssdk.core.internal.http.Crc32Validation;
32+
import software.amazon.awssdk.core.http.Crc32Validation;
3433
import software.amazon.awssdk.core.sync.ResponseTransformer;
3534
import software.amazon.awssdk.http.SdkHttpFullResponse;
3635

core/protocols/aws-ion-protocol/src/main/java/software/amazon/awssdk/protocols/ion/internal/SdkStructuredIonFactory.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,13 @@
1717

1818
import com.fasterxml.jackson.core.JsonFactory;
1919
import java.util.function.BiFunction;
20-
import software.amazon.awssdk.annotations.SdkProtectedApi;
20+
import software.amazon.awssdk.annotations.SdkInternalApi;
2121
import software.amazon.awssdk.protocols.json.StructuredJsonGenerator;
2222
import software.amazon.ion.IonSystem;
2323
import software.amazon.ion.system.IonSystemBuilder;
2424
import software.amazon.ion.system.IonWriterBuilder;
2525

26-
@SdkProtectedApi
26+
@SdkInternalApi
2727
abstract class SdkStructuredIonFactory {
2828

2929
protected static final IonSystem ION_SYSTEM = IonSystemBuilder.standard().build();

core/protocols/aws-query-protocol/src/main/java/software/amazon/awssdk/protocols/query/unmarshall/XmlDomParser.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
@SdkProtectedApi
3131
public final class XmlDomParser {
3232

33-
private static final ThreadLocal<XMLInputFactory> FACTORY = ThreadLocal.withInitial(XMLInputFactory::newInstance);
33+
private static final ThreadLocal<XMLInputFactory> FACTORY = ThreadLocal.withInitial(XmlDomParser::createXmlInputFactory);
3434

3535
private XmlDomParser() {
3636
}
@@ -91,4 +91,16 @@ private static String readText(XMLEventReader eventReader, String firstChunk) th
9191
}
9292
}
9393

94+
/**
95+
* Disables certain dangerous features that attempt to automatically fetch DTDs
96+
*
97+
* See <a href="https://www.owasp.org/index.php/XML_External_Entity_(XXE)_Prevention_Cheat_Sheet">OWASP XXE Cheat Sheet</a>
98+
*/
99+
private static XMLInputFactory createXmlInputFactory() {
100+
XMLInputFactory factory = XMLInputFactory.newInstance();
101+
factory.setProperty(XMLInputFactory.SUPPORT_DTD, false);
102+
factory.setProperty(XMLInputFactory.IS_SUPPORTING_EXTERNAL_ENTITIES, false);
103+
return factory;
104+
}
105+
94106
}

core/protocols/aws-xml-protocol/src/main/java/software/amazon/awssdk/protocols/xml/AwsXmlProtocolFactory.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@
3838
import software.amazon.awssdk.protocols.xml.internal.marshall.XmlGenerator;
3939
import software.amazon.awssdk.protocols.xml.internal.marshall.XmlProtocolMarshaller;
4040
import software.amazon.awssdk.protocols.xml.internal.unmarshall.AwsXmlResponseHandler;
41-
import software.amazon.awssdk.protocols.xml.internal.unmarshall.XmlOperationMetadata;
4241
import software.amazon.awssdk.protocols.xml.internal.unmarshall.XmlProtocolUnmarshaller;
4342

4443
/**
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,11 @@
1313
* permissions and limitations under the License.
1414
*/
1515

16-
package software.amazon.awssdk.protocols.xml.internal.unmarshall;
16+
package software.amazon.awssdk.protocols.xml;
1717

1818
import software.amazon.awssdk.annotations.NotThreadSafe;
1919
import software.amazon.awssdk.annotations.SdkProtectedApi;
20+
import software.amazon.awssdk.protocols.xml.internal.unmarshall.AwsXmlResponseHandler;
2021

2122
/**
2223
* Contains information needed to create a {@link AwsXmlResponseHandler} for the client.

core/protocols/protocol-core/src/main/java/software/amazon/awssdk/protocols/core/AbstractMarshallingRegistry.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
import java.util.HashSet;
2020
import java.util.Map;
2121
import java.util.Set;
22-
import software.amazon.awssdk.annotations.SdkInternalApi;
22+
import software.amazon.awssdk.annotations.SdkProtectedApi;
2323
import software.amazon.awssdk.core.SdkPojo;
2424
import software.amazon.awssdk.core.exception.SdkClientException;
2525
import software.amazon.awssdk.core.protocol.MarshallLocation;
@@ -28,7 +28,7 @@
2828
/**
2929
* Base class for marshaller/unmarshaller registry implementations.
3030
*/
31-
@SdkInternalApi
31+
@SdkProtectedApi
3232
public abstract class AbstractMarshallingRegistry {
3333

3434
private final Map<MarshallLocation, Map<MarshallingType, Object>> registry;

core/protocols/protocol-core/src/main/java/software/amazon/awssdk/protocols/core/InstantToString.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
import java.time.Instant;
1919
import java.util.Map;
20-
import software.amazon.awssdk.annotations.SdkInternalApi;
20+
import software.amazon.awssdk.annotations.SdkProtectedApi;
2121
import software.amazon.awssdk.core.SdkField;
2222
import software.amazon.awssdk.core.exception.SdkClientException;
2323
import software.amazon.awssdk.core.protocol.MarshallLocation;
@@ -29,7 +29,7 @@
2929
* Implementation of {@link ValueToString} that converts and {@link Instant} to a string. * Respects the
3030
* {@link TimestampFormatTrait} if present.
3131
*/
32-
@SdkInternalApi
32+
@SdkProtectedApi
3333
public final class InstantToString implements ValueToString<Instant> {
3434

3535
private final Map<MarshallLocation, TimestampFormatTrait.Format> defaultFormats;

core/protocols/protocol-core/src/main/java/software/amazon/awssdk/protocols/core/Marshaller.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,13 @@
1515

1616
package software.amazon.awssdk.protocols.core;
1717

18-
import software.amazon.awssdk.annotations.SdkInternalApi;
18+
import software.amazon.awssdk.annotations.SdkProtectedApi;
1919

2020
/**
2121
* Marker interface for marshallers.
2222
*
2323
* @param <T> Type being marshalled.
2424
*/
25-
@SdkInternalApi
25+
@SdkProtectedApi
2626
public interface Marshaller<T> {
2727
}

core/protocols/protocol-core/src/main/java/software/amazon/awssdk/protocols/core/StringToInstant.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
import java.time.Instant;
1919
import java.util.Map;
20-
import software.amazon.awssdk.annotations.SdkInternalApi;
20+
import software.amazon.awssdk.annotations.SdkProtectedApi;
2121
import software.amazon.awssdk.core.SdkField;
2222
import software.amazon.awssdk.core.exception.SdkClientException;
2323
import software.amazon.awssdk.core.protocol.MarshallLocation;
@@ -28,7 +28,7 @@
2828
* Implementation of {@link StringToValueConverter.StringToValue} that converts a string to an {@link Instant} type.
2929
* Respects the {@link TimestampFormatTrait} if present.
3030
*/
31-
@SdkInternalApi
31+
@SdkProtectedApi
3232
public final class StringToInstant implements StringToValueConverter.StringToValue<Instant> {
3333

3434
/**

core/protocols/protocol-core/src/main/java/software/amazon/awssdk/protocols/core/StringToValueConverter.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,15 @@
1616
package software.amazon.awssdk.protocols.core;
1717

1818
import java.math.BigDecimal;
19-
import software.amazon.awssdk.annotations.SdkInternalApi;
19+
import software.amazon.awssdk.annotations.SdkProtectedApi;
2020
import software.amazon.awssdk.core.SdkBytes;
2121
import software.amazon.awssdk.core.SdkField;
2222
import software.amazon.awssdk.utils.BinaryUtils;
2323

2424
/**
2525
* Converter implementations that transform a String to a specified type.
2626
*/
27-
@SdkInternalApi
27+
@SdkProtectedApi
2828
public final class StringToValueConverter {
2929

3030
/**

core/protocols/protocol-core/src/main/java/software/amazon/awssdk/protocols/core/ValueToStringConverter.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,15 @@
1616
package software.amazon.awssdk.protocols.core;
1717

1818
import java.math.BigDecimal;
19-
import software.amazon.awssdk.annotations.SdkInternalApi;
19+
import software.amazon.awssdk.annotations.SdkProtectedApi;
2020
import software.amazon.awssdk.core.SdkBytes;
2121
import software.amazon.awssdk.core.SdkField;
2222
import software.amazon.awssdk.utils.BinaryUtils;
2323

2424
/**
2525
* Converts various types to Strings. Used for Query Param/Header/Path marshalling.
2626
*/
27-
@SdkInternalApi
27+
@SdkProtectedApi
2828
public final class ValueToStringConverter {
2929

3030
/**

core/regions/src/main/java/software/amazon/awssdk/regions/MetadataLoader.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
* metadata from. Currently only generated region metadata is supported.
2323
*/
2424
@SdkInternalApi
25-
public class MetadataLoader {
25+
final class MetadataLoader {
2626

2727
private static final RegionMetadataProvider REGION_METADATA_PROVIDER = new GeneratedRegionMetadataProvider();
2828

@@ -32,15 +32,15 @@ public class MetadataLoader {
3232

3333
private MetadataLoader() {}
3434

35-
public static PartitionMetadata partitionMetadata(Region region) {
35+
static PartitionMetadata partitionMetadata(Region region) {
3636
return PARTITION_METADATA_PROVIDER.partitionMetadata(region);
3737
}
3838

39-
public static PartitionMetadata partitionMetadata(String partition) {
39+
static PartitionMetadata partitionMetadata(String partition) {
4040
return PARTITION_METADATA_PROVIDER.partitionMetadata(partition);
4141
}
4242

43-
public static RegionMetadata regionMetadata(Region region) {
43+
static RegionMetadata regionMetadata(Region region) {
4444
return REGION_METADATA_PROVIDER.regionMetadata(region);
4545
}
4646

core/sdk-core/src/main/java/software/amazon/awssdk/core/client/handler/BaseAsyncClientHandler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
import software.amazon.awssdk.core.http.HttpResponseHandler;
3232
import software.amazon.awssdk.core.interceptor.InterceptorContext;
3333
import software.amazon.awssdk.core.internal.http.AmazonAsyncHttpClient;
34-
import software.amazon.awssdk.core.internal.http.Crc32Validation;
34+
import software.amazon.awssdk.core.http.Crc32Validation;
3535
import software.amazon.awssdk.core.internal.http.TransformingAsyncResponseHandler;
3636
import software.amazon.awssdk.core.internal.http.async.SyncResponseHandlerAdapter;
3737
import software.amazon.awssdk.core.internal.util.ThrowableUtils;

core/sdk-core/src/main/java/software/amazon/awssdk/core/internal/http/Crc32Validation.java renamed to core/sdk-core/src/main/java/software/amazon/awssdk/core/http/Crc32Validation.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,21 +13,21 @@
1313
* permissions and limitations under the License.
1414
*/
1515

16-
package software.amazon.awssdk.core.internal.http;
16+
package software.amazon.awssdk.core.http;
1717

1818
import static software.amazon.awssdk.utils.FunctionalUtils.invokeSafely;
1919

2020
import java.util.Optional;
2121
import java.util.zip.GZIPInputStream;
22-
import software.amazon.awssdk.annotations.SdkInternalApi;
22+
import software.amazon.awssdk.annotations.SdkProtectedApi;
2323
import software.amazon.awssdk.core.internal.util.Crc32ChecksumValidatingInputStream;
2424
import software.amazon.awssdk.http.AbortableInputStream;
2525
import software.amazon.awssdk.http.SdkHttpFullResponse;
2626

2727
/**
2828
* Validate and decompress input data if necessary.
2929
*/
30-
@SdkInternalApi
30+
@SdkProtectedApi
3131
public final class Crc32Validation {
3232

3333
private Crc32Validation() {

core/sdk-core/src/main/java/software/amazon/awssdk/core/internal/http/pipeline/stages/MoveParametersToBodyStage.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
import java.nio.charset.StandardCharsets;
2323
import software.amazon.awssdk.annotations.ReviewBeforeRelease;
2424
import software.amazon.awssdk.annotations.SdkInternalApi;
25-
import software.amazon.awssdk.annotations.SdkProtectedApi;
2625
import software.amazon.awssdk.core.internal.http.RequestExecutionContext;
2726
import software.amazon.awssdk.core.internal.http.pipeline.MutableRequestToRequestPipeline;
2827
import software.amazon.awssdk.http.SdkHttpFullRequest;
@@ -48,8 +47,7 @@ private boolean shouldPutParamsInBody(SdkHttpFullRequest.Builder input) {
4847
!CollectionUtils.isNullOrEmpty(input.rawQueryParameters());
4948
}
5049

51-
@SdkProtectedApi
52-
public static SdkHttpFullRequest.Builder changeQueryParametersToFormData(SdkHttpFullRequest.Builder input) {
50+
private static SdkHttpFullRequest.Builder changeQueryParametersToFormData(SdkHttpFullRequest.Builder input) {
5351
byte[] params = SdkHttpUtils.encodeAndFlattenFormData(input.rawQueryParameters()).orElse("")
5452
.getBytes(StandardCharsets.UTF_8);
5553

core/sdk-core/src/test/java/software/amazon/awssdk/core/http/Crc32ValidationTest.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727
import org.junit.runner.RunWith;
2828
import org.mockito.runners.MockitoJUnitRunner;
2929
import org.unitils.util.ReflectionUtils;
30-
import software.amazon.awssdk.core.internal.http.Crc32Validation;
3130
import software.amazon.awssdk.core.internal.util.Crc32ChecksumValidatingInputStream;
3231
import software.amazon.awssdk.http.AbortableInputStream;
3332
import software.amazon.awssdk.http.SdkHttpFullResponse;

0 commit comments

Comments
 (0)