From 450a4bb42bbb3308b2535e99a1d1d4760ba18011 Mon Sep 17 00:00:00 2001 From: Anuraag Agrawal Date: Wed, 27 May 2020 03:23:42 +0900 Subject: [PATCH] More safety in UnsignedXrayClient (#154) --- .../amazonaws/xray/internal/UnsignedXrayClient.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/aws-xray-recorder-sdk-core/src/main/java/com/amazonaws/xray/internal/UnsignedXrayClient.java b/aws-xray-recorder-sdk-core/src/main/java/com/amazonaws/xray/internal/UnsignedXrayClient.java index b41a245b..d1cc520f 100644 --- a/aws-xray-recorder-sdk-core/src/main/java/com/amazonaws/xray/internal/UnsignedXrayClient.java +++ b/aws-xray-recorder-sdk-core/src/main/java/com/amazonaws/xray/internal/UnsignedXrayClient.java @@ -23,6 +23,7 @@ import com.fasterxml.jackson.databind.PropertyNamingStrategy; import com.fasterxml.jackson.databind.introspect.AnnotatedMember; import com.fasterxml.jackson.databind.introspect.JacksonAnnotationIntrospector; +import javax.annotation.Nullable; /** * A simple client for sending API requests via the X-Ray daemon. Requests do not have to be @@ -35,7 +36,8 @@ public class UnsignedXrayClient { // Visible for testing static final ObjectMapper OBJECT_MAPPER = new ObjectMapper() .setSerializationInclusion(Include.NON_EMPTY) - .setPropertyNamingStrategy(PropertyNamingStrategy.UPPER_CAMEL_CASE) + // Use deprecated field to support older Jackson versions for now. + .setPropertyNamingStrategy(PropertyNamingStrategy.PASCAL_CASE_TO_CAMEL_CASE) .setAnnotationIntrospector(new JacksonAnnotationIntrospector() { @Override public boolean hasIgnoreMarker(AnnotatedMember m) { @@ -140,7 +142,12 @@ private static String readResponseString(HttpURLConnection connection) { } } - private static void readTo(InputStream is, ByteArrayOutputStream os) throws IOException { + private static void readTo(@Nullable InputStream is, ByteArrayOutputStream os) throws IOException { + // It is possible for getErrorStream to return null, though since we don't read it for success cases in practice it + // shouldn't happen. Check just in case. + if (is == null) { + return; + } int b; while ((b = is.read()) != -1) { os.write(b);