Skip to content

Commit 7fd6382

Browse files
gzsomborluben
authored andcommitted
Add checks for offset/size/length
1 parent c88623b commit 7fd6382

File tree

2 files changed

+12
-0
lines changed

2 files changed

+12
-0
lines changed

src/main/java/com/github/luben/zstd/ZstdCompressCtx.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
import java.nio.ByteBuffer;
77
import java.util.Arrays;
8+
import java.util.Objects;
89

910
public class ZstdCompressCtx extends AutoCloseBase {
1011

@@ -525,6 +526,8 @@ public int compressDirectByteBuffer(ByteBuffer dstBuff, int dstOffset, int dstSi
525526
if (!dstBuff.isDirect()) {
526527
throw new IllegalArgumentException("dstBuff must be a direct buffer");
527528
}
529+
Objects.checkFromIndexSize(srcOffset, srcSize, srcBuff.limit());
530+
Objects.checkFromIndexSize(dstOffset, dstSize, dstBuff.limit());
528531

529532
acquireSharedLock();
530533

@@ -560,6 +563,9 @@ public int compressDirectByteBuffer(ByteBuffer dstBuff, int dstOffset, int dstSi
560563
* @return the number of bytes written into buffer 'dstBuff'.
561564
*/
562565
public int compressByteArray(byte[] dstBuff, int dstOffset, int dstSize, byte[] srcBuff, int srcOffset, int srcSize) {
566+
Objects.checkFromIndexSize(srcOffset, srcSize, srcBuff.length);
567+
Objects.checkFromIndexSize(dstOffset, dstSize, dstBuff.length);
568+
563569
ensureOpen();
564570
acquireSharedLock();
565571

src/main/java/com/github/luben/zstd/ZstdDecompressCtx.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
import java.nio.ByteBuffer;
77
import java.util.Arrays;
8+
import java.util.Objects;
89

910
public class ZstdDecompressCtx extends AutoCloseBase {
1011

@@ -163,6 +164,8 @@ public int decompressDirectByteBuffer(ByteBuffer dstBuff, int dstOffset, int dst
163164
if (!dstBuff.isDirect()) {
164165
throw new IllegalArgumentException("dstBuff must be a direct buffer");
165166
}
167+
Objects.checkFromIndexSize(srcOffset, srcSize, srcBuff.limit());
168+
Objects.checkFromIndexSize(dstOffset, dstSize, dstBuff.limit());
166169

167170
acquireSharedLock();
168171

@@ -196,6 +199,9 @@ public int decompressDirectByteBuffer(ByteBuffer dstBuff, int dstOffset, int dst
196199
* @return the number of bytes decompressed into destination buffer (originalSize)
197200
*/
198201
public int decompressByteArray(byte[] dstBuff, int dstOffset, int dstSize, byte[] srcBuff, int srcOffset, int srcSize) {
202+
Objects.checkFromIndexSize(srcOffset, srcSize, srcBuff.length);
203+
Objects.checkFromIndexSize(dstOffset, dstSize, dstBuff.length);
204+
199205
ensureOpen();
200206
acquireSharedLock();
201207

0 commit comments

Comments
 (0)