Repository: commons-compress Updated Branches: refs/heads/master ff10aeaaf -> 0aeda4fcc
COMPRESS-451 reject 0 buffersize in IOUtils.copy Project: http://git-wip-us.apache.org/repos/asf/commons-compress/repo Commit: http://git-wip-us.apache.org/repos/asf/commons-compress/commit/0aeda4fc Tree: http://git-wip-us.apache.org/repos/asf/commons-compress/tree/0aeda4fc Diff: http://git-wip-us.apache.org/repos/asf/commons-compress/diff/0aeda4fc Branch: refs/heads/master Commit: 0aeda4fcc3c6de7109acd8cf78f8779654b9f771 Parents: ff10aea Author: Stefan Bodewig <bode...@apache.org> Authored: Fri May 4 06:05:29 2018 +0200 Committer: Stefan Bodewig <bode...@apache.org> Committed: Fri May 4 06:05:29 2018 +0200 ---------------------------------------------------------------------- src/changes/changes.xml | 3 +++ src/main/java/org/apache/commons/compress/utils/IOUtils.java | 7 ++++++- .../java/org/apache/commons/compress/utils/IOUtilsTest.java | 6 ++++++ 3 files changed, 15 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/commons-compress/blob/0aeda4fc/src/changes/changes.xml ---------------------------------------------------------------------- diff --git a/src/changes/changes.xml b/src/changes/changes.xml index 61c1279..37da29a 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -78,6 +78,9 @@ The <action> type attribute can be add,update,fix,remove. Add a new SkipShieldingInputStream class that can be used wit streams that throw an IOException whne skip is invoked. </action> + <action issue="COMPRESS-451" type="fix" date="2018-05-04"> + IOUtils.copy now verifies the buffer size is bigger than 0. + </action> </release> <release version="1.16.1" date="2018-02-10" description="Release 1.16.1"> http://git-wip-us.apache.org/repos/asf/commons-compress/blob/0aeda4fc/src/main/java/org/apache/commons/compress/utils/IOUtils.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/compress/utils/IOUtils.java b/src/main/java/org/apache/commons/compress/utils/IOUtils.java index c7e0e80..50577c9 100644 --- a/src/main/java/org/apache/commons/compress/utils/IOUtils.java +++ b/src/main/java/org/apache/commons/compress/utils/IOUtils.java @@ -68,12 +68,17 @@ public final class IOUtils { * @param output * the target Stream * @param buffersize - * the buffer size to use + * the buffer size to use, must be bigger than 0 * @return the number of bytes copied * @throws IOException * if an error occurs + * @throws IllegalArgumentException + * if buffersize is smaller than or equal to 0 */ public static long copy(final InputStream input, final OutputStream output, final int buffersize) throws IOException { + if (buffersize < 1) { + throw new IllegalArgumentException("buffersize must be bigger than 0"); + } final byte[] buffer = new byte[buffersize]; int n = 0; long count=0; http://git-wip-us.apache.org/repos/asf/commons-compress/blob/0aeda4fc/src/test/java/org/apache/commons/compress/utils/IOUtilsTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/commons/compress/utils/IOUtilsTest.java b/src/test/java/org/apache/commons/compress/utils/IOUtilsTest.java index 2bba435..fce779e 100644 --- a/src/test/java/org/apache/commons/compress/utils/IOUtilsTest.java +++ b/src/test/java/org/apache/commons/compress/utils/IOUtilsTest.java @@ -18,6 +18,7 @@ package org.apache.commons.compress.utils; import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; import java.io.EOFException; import java.io.FilterInputStream; import java.io.InputStream; @@ -101,6 +102,11 @@ public class IOUtilsTest { readFully(source, b); } + @Test(expected = IllegalArgumentException.class) + public void copyThrowsOnZeroBufferSize() throws IOException { + IOUtils.copy(new ByteArrayInputStream(new byte[0]), new ByteArrayOutputStream(), 0); + } + private static void readFully(final byte[] source, ByteBuffer b) throws IOException { IOUtils.readFully(new ReadableByteChannel() { private int idx;