From dd58e1f4f8b721cfed2322c17a2519b8eef89f7a Mon Sep 17 00:00:00 2001 From: Ryland Degnan Date: Wed, 30 May 2018 15:38:00 -0700 Subject: [PATCH] Ensure read/write indices of input buffers are not modified --- .../src/main/java/io/rsocket/frame/FrameHeaderFlyweight.java | 4 ++-- .../src/main/java/io/rsocket/frame/SetupFrameFlyweight.java | 2 +- .../src/main/java/io/rsocket/util/ByteBufPayload.java | 4 ++-- .../src/main/java/io/rsocket/util/DefaultPayload.java | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/rsocket-core/src/main/java/io/rsocket/frame/FrameHeaderFlyweight.java b/rsocket-core/src/main/java/io/rsocket/frame/FrameHeaderFlyweight.java index 2102774c6..8f6be3af3 100644 --- a/rsocket-core/src/main/java/io/rsocket/frame/FrameHeaderFlyweight.java +++ b/rsocket-core/src/main/java/io/rsocket/frame/FrameHeaderFlyweight.java @@ -115,7 +115,7 @@ public static int encodeMetadata( encodeLength(byteBuf, metadataOffset, metadataLength); length += FRAME_LENGTH_SIZE; } - byteBuf.setBytes(metadataOffset + length, metadata); + byteBuf.setBytes(metadataOffset + length, metadata, metadata.readerIndex(), metadataLength); length += metadataLength; } @@ -127,7 +127,7 @@ public static int encodeData(final ByteBuf byteBuf, final int dataOffset, final final int dataLength = data.readableBytes(); if (0 < dataLength) { - byteBuf.setBytes(dataOffset, data); + byteBuf.setBytes(dataOffset, data, data.readerIndex(), dataLength); length += dataLength; } diff --git a/rsocket-core/src/main/java/io/rsocket/frame/SetupFrameFlyweight.java b/rsocket-core/src/main/java/io/rsocket/frame/SetupFrameFlyweight.java index 6dd0b202e..31ee02d33 100644 --- a/rsocket-core/src/main/java/io/rsocket/frame/SetupFrameFlyweight.java +++ b/rsocket-core/src/main/java/io/rsocket/frame/SetupFrameFlyweight.java @@ -134,7 +134,7 @@ static int encode( byteBuf.setShort(length, resumeToken.readableBytes()); length += Short.BYTES; int resumeTokenLength = resumeToken.readableBytes(); - byteBuf.setBytes(length, resumeToken, resumeTokenLength); + byteBuf.setBytes(length, resumeToken, resumeToken.readerIndex(), resumeTokenLength); length += resumeTokenLength; } diff --git a/rsocket-core/src/main/java/io/rsocket/util/ByteBufPayload.java b/rsocket-core/src/main/java/io/rsocket/util/ByteBufPayload.java index 5895edce3..d63454ba9 100644 --- a/rsocket-core/src/main/java/io/rsocket/util/ByteBufPayload.java +++ b/rsocket-core/src/main/java/io/rsocket/util/ByteBufPayload.java @@ -51,12 +51,12 @@ public boolean hasMetadata() { @Override public ByteBuf sliceMetadata() { - return metadata == null ? Unpooled.EMPTY_BUFFER : metadata; + return metadata == null ? Unpooled.EMPTY_BUFFER : metadata.slice(); } @Override public ByteBuf sliceData() { - return data; + return data.slice(); } @Override diff --git a/rsocket-core/src/main/java/io/rsocket/util/DefaultPayload.java b/rsocket-core/src/main/java/io/rsocket/util/DefaultPayload.java index 96a587c34..c53617e7c 100644 --- a/rsocket-core/src/main/java/io/rsocket/util/DefaultPayload.java +++ b/rsocket-core/src/main/java/io/rsocket/util/DefaultPayload.java @@ -57,12 +57,12 @@ public ByteBuf sliceData() { @Override public ByteBuffer getMetadata() { - return metadata == null ? DefaultPayload.EMPTY_BUFFER : metadata; + return metadata == null ? DefaultPayload.EMPTY_BUFFER : metadata.duplicate(); } @Override public ByteBuffer getData() { - return data; + return data.duplicate(); } @Override