Skip to content

Commit 9d9fd67

Browse files
committed
Add ellipsis when truncating payload
1 parent 274b080 commit 9d9fd67

File tree

2 files changed

+28
-4
lines changed

2 files changed

+28
-4
lines changed

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

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,8 @@ public abstract class BaseEventStreamAsyncAws4Signer extends BaseAsyncAws4Signer
5252
private static final String HTTP_CONTENT_SHA_256 = "STREAMING-AWS4-HMAC-SHA256-EVENTS";
5353
private static final String EVENT_STREAM_PAYLOAD = "AWS4-HMAC-SHA256-PAYLOAD";
5454

55+
private static final int PAYLOAD_TRUNCATE_LENGTH = 32;
56+
5557

5658
protected BaseEventStreamAsyncAws4Signer() {
5759
}
@@ -287,15 +289,26 @@ static String toDebugString(Message m, boolean truncatePayload) {
287289
sb.append("}, payload=");
288290

289291
byte[] payload = m.getPayload();
290-
291292
byte[] payloadToLog;
293+
294+
// We don't actually need to truncate if the payload length is already within the truncate limit
295+
truncatePayload = truncatePayload && payload.length > PAYLOAD_TRUNCATE_LENGTH;
296+
292297
if (truncatePayload) {
293298
// Would be nice if BinaryUtils.toHex() could take an array index range instead so we don't need to copy
294-
payloadToLog = Arrays.copyOf(payload, Math.min(32, payload.length));
299+
payloadToLog = Arrays.copyOf(payload, PAYLOAD_TRUNCATE_LENGTH);
295300
} else {
296301
payloadToLog = payload;
297302
}
298303

299-
return sb.append(BinaryUtils.toHex(payloadToLog)).append("}").toString();
304+
sb.append(BinaryUtils.toHex(payloadToLog));
305+
306+
if (truncatePayload) {
307+
sb.append("...");
308+
}
309+
310+
sb.append("}");
311+
312+
return sb.toString();
300313
}
301314
}

core/auth/src/test/java/software/amazon/awssdk/auth/signer/internal/BaseEventStreamAsyncAws4SignerTest.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ public void toDebugString_largePayload_truncate_generatesCorrectString() {
6262
byte[] first32 = Arrays.copyOf(payload, 32);
6363
String expectedPayloadString = BinaryUtils.toHex(first32);
6464
assertThat(BaseEventStreamAsyncAws4Signer.toDebugString(m, true))
65-
.isEqualTo("Message = {headers={header1={42}, header2={false}, header3={\"Hello world\"}}, payload=" + expectedPayloadString + "}");
65+
.isEqualTo("Message = {headers={header1={42}, header2={false}, header3={\"Hello world\"}}, payload=" + expectedPayloadString + "...}");
6666
}
6767

6868
@Test
@@ -75,4 +75,15 @@ public void toDebugString_largePayload_noTruncate_generatesCorrectString() {
7575
assertThat(BaseEventStreamAsyncAws4Signer.toDebugString(m, false))
7676
.isEqualTo("Message = {headers={header1={42}, header2={false}, header3={\"Hello world\"}}, payload=" + expectedPayloadString + "}");
7777
}
78+
79+
@Test
80+
public void toDebugString_smallPayload_truncate_doesNotAddEllipsis() {
81+
byte[] payload = new byte[8];
82+
new Random().nextBytes(payload);
83+
Message m = new Message(headers, payload);
84+
85+
String expectedPayloadString = BinaryUtils.toHex(payload);
86+
assertThat(BaseEventStreamAsyncAws4Signer.toDebugString(m, true))
87+
.isEqualTo("Message = {headers={header1={42}, header2={false}, header3={\"Hello world\"}}, payload=" + expectedPayloadString + "}");
88+
}
7889
}

0 commit comments

Comments
 (0)