Many fixes for various errors found by SonarQube Project: http://git-wip-us.apache.org/repos/asf/mina/repo Commit: http://git-wip-us.apache.org/repos/asf/mina/commit/101a32e7 Tree: http://git-wip-us.apache.org/repos/asf/mina/tree/101a32e7 Diff: http://git-wip-us.apache.org/repos/asf/mina/diff/101a32e7
Branch: refs/heads/2.0 Commit: 101a32e7e815b402134e14d6c40c635c5824deb9 Parents: 9054286 Author: Emmanuel Lécharny <elecha...@symas.com> Authored: Sat Dec 26 20:21:55 2015 +0100 Committer: Emmanuel Lécharny <elecha...@symas.com> Committed: Sat Dec 26 20:21:55 2015 +0100 ---------------------------------------------------------------------- .../apache/mina/core/MinaBenchmarkServer.java | 8 +-- .../mina/core/buffer/AbstractIoBuffer.java | 25 ++++++++- .../statemachine/IntegerDecodingState.java | 44 ++++++++------- .../statemachine/ShortIntegerDecodingState.java | 7 ++- .../org/apache/mina/proxy/ProxyConnector.java | 2 +- .../handlers/socks/Socks5LogicHandler.java | 2 +- .../main/java/org/apache/mina/util/Base64.java | 58 ++++++++++---------- .../util/byteaccess/CompositeByteArray.java | 12 ++-- 8 files changed, 91 insertions(+), 67 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/mina/blob/101a32e7/mina-benchmarks/src/test/java/org/apache/mina/core/MinaBenchmarkServer.java ---------------------------------------------------------------------- diff --git a/mina-benchmarks/src/test/java/org/apache/mina/core/MinaBenchmarkServer.java b/mina-benchmarks/src/test/java/org/apache/mina/core/MinaBenchmarkServer.java index 0b27db7..f71a90f 100755 --- a/mina-benchmarks/src/test/java/org/apache/mina/core/MinaBenchmarkServer.java +++ b/mina-benchmarks/src/test/java/org/apache/mina/core/MinaBenchmarkServer.java @@ -74,19 +74,19 @@ public class MinaBenchmarkServer implements BenchmarkServer { while (buffer.remaining() > 0) { switch (state) { case WAIT_FOR_FIRST_BYTE_LENGTH: - length = (buffer.get() & 255) << 24; + length = (buffer.get() & 0xFF) << 24; state = State.WAIT_FOR_SECOND_BYTE_LENGTH; break; case WAIT_FOR_SECOND_BYTE_LENGTH: - length += (buffer.get() & 255) << 16; + length += (buffer.get() & 0xFF) << 16; state = State.WAIT_FOR_THIRD_BYTE_LENGTH; break; case WAIT_FOR_THIRD_BYTE_LENGTH: - length += (buffer.get() & 255) << 8; + length += (buffer.get() & 0xFF) << 8; state = State.WAIT_FOR_FOURTH_BYTE_LENGTH; break; case WAIT_FOR_FOURTH_BYTE_LENGTH: - length += (buffer.get() & 255); + length += (buffer.get() & 0xFF); state = State.READING; if ((length == 0) && (buffer.remaining() == 0)) { session.write(ACK.slice()); http://git-wip-us.apache.org/repos/asf/mina/blob/101a32e7/mina-core/src/main/java/org/apache/mina/core/buffer/AbstractIoBuffer.java ---------------------------------------------------------------------- diff --git a/mina-core/src/main/java/org/apache/mina/core/buffer/AbstractIoBuffer.java b/mina-core/src/main/java/org/apache/mina/core/buffer/AbstractIoBuffer.java index 183a115..4ce6425 100644 --- a/mina-core/src/main/java/org/apache/mina/core/buffer/AbstractIoBuffer.java +++ b/mina-core/src/main/java/org/apache/mina/core/buffer/AbstractIoBuffer.java @@ -1430,6 +1430,7 @@ public abstract class AbstractIoBuffer extends IoBuffer { int b1 = getUnsigned(index); int b2 = getUnsigned(index + 1); int b3 = getUnsigned(index + 2); + if (ByteOrder.BIG_ENDIAN.equals(order())) { return b1 << 16 | b2 << 8 | b3; } @@ -2167,8 +2168,10 @@ public abstract class AbstractIoBuffer extends IoBuffer { int oldLimit = limit(); limit(position() + length); + ObjectInputStream in = null; + try { - ObjectInputStream in = new ObjectInputStream(asInputStream()) { + in = new ObjectInputStream(asInputStream()) { @Override protected ObjectStreamClass readClassDescriptor() throws IOException, ClassNotFoundException { int type = read(); @@ -2207,6 +2210,14 @@ public abstract class AbstractIoBuffer extends IoBuffer { } catch (IOException e) { throw new BufferDataException(e); } finally { + try { + if (in != null) { + in.close(); + } + } catch (IOException ioe) { + // Nothing to do + } + limit(oldLimit); } } @@ -2218,8 +2229,10 @@ public abstract class AbstractIoBuffer extends IoBuffer { public IoBuffer putObject(Object o) { int oldPos = position(); skip(4); // Make a room for the length field. + ObjectOutputStream out = null; + try { - ObjectOutputStream out = new ObjectOutputStream(asOutputStream()) { + out = new ObjectOutputStream(asOutputStream()) { @Override protected void writeClassDescriptor(ObjectStreamClass desc) throws IOException { Class<?> clazz = desc.forClass(); @@ -2238,6 +2251,14 @@ public abstract class AbstractIoBuffer extends IoBuffer { out.flush(); } catch (IOException e) { throw new BufferDataException(e); + } finally { + try { + if (out != null) { + out.close(); + } + } catch (IOException ioe) { + // Nothing to do + } } // Fill the length field http://git-wip-us.apache.org/repos/asf/mina/blob/101a32e7/mina-core/src/main/java/org/apache/mina/filter/codec/statemachine/IntegerDecodingState.java ---------------------------------------------------------------------- diff --git a/mina-core/src/main/java/org/apache/mina/filter/codec/statemachine/IntegerDecodingState.java b/mina-core/src/main/java/org/apache/mina/filter/codec/statemachine/IntegerDecodingState.java index 5fcbf97..e21672c 100644 --- a/mina-core/src/main/java/org/apache/mina/filter/codec/statemachine/IntegerDecodingState.java +++ b/mina-core/src/main/java/org/apache/mina/filter/codec/statemachine/IntegerDecodingState.java @@ -30,36 +30,38 @@ import org.apache.mina.filter.codec.ProtocolDecoderOutput; * @author <a href="http://mina.apache.org">Apache MINA Project</a> */ public abstract class IntegerDecodingState implements DecodingState { - - private int firstByte; - - private int secondByte; - - private int thirdByte; - private int counter; /** * {@inheritDoc} */ public DecodingState decode(IoBuffer in, ProtocolDecoderOutput out) throws Exception { + int firstByte = 0; + int secondByte = 0; + int thirdByte = 0; + while (in.hasRemaining()) { switch (counter) { - case 0: - firstByte = in.getUnsigned(); - break; - case 1: - secondByte = in.getUnsigned(); - break; - case 2: - thirdByte = in.getUnsigned(); - break; - case 3: - counter = 0; - return finishDecode((firstByte << 24) | (secondByte << 16) | (thirdByte << 8) | in.getUnsigned(), out); - default: - throw new InternalError(); + case 0: + firstByte = in.getUnsigned(); + break; + + case 1: + secondByte = in.getUnsigned(); + break; + + case 2: + thirdByte = in.getUnsigned(); + break; + + case 3: + counter = 0; + return finishDecode((firstByte << 24) | (secondByte << 16) | (thirdByte << 8) | in.getUnsigned(), out); + + default: + throw new InternalError(); } + counter++; } http://git-wip-us.apache.org/repos/asf/mina/blob/101a32e7/mina-core/src/main/java/org/apache/mina/filter/codec/statemachine/ShortIntegerDecodingState.java ---------------------------------------------------------------------- diff --git a/mina-core/src/main/java/org/apache/mina/filter/codec/statemachine/ShortIntegerDecodingState.java b/mina-core/src/main/java/org/apache/mina/filter/codec/statemachine/ShortIntegerDecodingState.java index a03d8c7..c81d4c8 100644 --- a/mina-core/src/main/java/org/apache/mina/filter/codec/statemachine/ShortIntegerDecodingState.java +++ b/mina-core/src/main/java/org/apache/mina/filter/codec/statemachine/ShortIntegerDecodingState.java @@ -30,24 +30,25 @@ import org.apache.mina.filter.codec.ProtocolDecoderOutput; * @author <a href="http://mina.apache.org">Apache MINA Project</a> */ public abstract class ShortIntegerDecodingState implements DecodingState { - - private int highByte; - private int counter; /** * {@inheritDoc} */ public DecodingState decode(IoBuffer in, ProtocolDecoderOutput out) throws Exception { + int highByte = 0; + while (in.hasRemaining()) { switch (counter) { case 0: highByte = in.getUnsigned(); break; + case 1: counter = 0; return finishDecode((short) ((highByte << 8) | in.getUnsigned()), out); + default: throw new InternalError(); } http://git-wip-us.apache.org/repos/asf/mina/blob/101a32e7/mina-core/src/main/java/org/apache/mina/proxy/ProxyConnector.java ---------------------------------------------------------------------- diff --git a/mina-core/src/main/java/org/apache/mina/proxy/ProxyConnector.java b/mina-core/src/main/java/org/apache/mina/proxy/ProxyConnector.java index a1ab0b8..916b34e 100644 --- a/mina-core/src/main/java/org/apache/mina/proxy/ProxyConnector.java +++ b/mina-core/src/main/java/org/apache/mina/proxy/ProxyConnector.java @@ -213,7 +213,7 @@ public class ProxyConnector extends AbstractIoConnector { * * @param connector the connector to use */ - private final void setConnector(final SocketConnector connector) { + private void setConnector(final SocketConnector connector) { if (connector == null) { throw new IllegalArgumentException("connector cannot be null"); } http://git-wip-us.apache.org/repos/asf/mina/blob/101a32e7/mina-core/src/main/java/org/apache/mina/proxy/handlers/socks/Socks5LogicHandler.java ---------------------------------------------------------------------- diff --git a/mina-core/src/main/java/org/apache/mina/proxy/handlers/socks/Socks5LogicHandler.java b/mina-core/src/main/java/org/apache/mina/proxy/handlers/socks/Socks5LogicHandler.java index 0de96fd..fce364f 100644 --- a/mina-core/src/main/java/org/apache/mina/proxy/handlers/socks/Socks5LogicHandler.java +++ b/mina-core/src/main/java/org/apache/mina/proxy/handlers/socks/Socks5LogicHandler.java @@ -354,7 +354,7 @@ public class Socks5LogicHandler extends AbstractSocksLogicHandler { if (buf.get(0) != 0x01) { throw new IllegalStateException("Authentication failed"); } - if (buf.get(1) == 0x00FF) { + if ((buf.get(1) & 0x00FF) == 0x00FF) { throw new IllegalStateException("Authentication failed: GSS API Security Context Failure"); } http://git-wip-us.apache.org/repos/asf/mina/blob/101a32e7/mina-core/src/main/java/org/apache/mina/util/Base64.java ---------------------------------------------------------------------- diff --git a/mina-core/src/main/java/org/apache/mina/util/Base64.java b/mina-core/src/main/java/org/apache/mina/util/Base64.java index cb50d60..caa59a7 100644 --- a/mina-core/src/main/java/org/apache/mina/util/Base64.java +++ b/mina-core/src/main/java/org/apache/mina/util/Base64.java @@ -278,27 +278,27 @@ public class Base64 { k = (byte) (b1 & 0x03); byte val1 = ((b1 & SIGN) == 0) ? (byte) (b1 >> 2) : (byte) ((b1) >> 2 ^ 0xc0); - byte val2 = ((b2 & SIGN) == 0) ? (byte) (b2 >> 4) : (byte) ((b2) >> 4 ^ 0xf0); - byte val3 = ((b3 & SIGN) == 0) ? (byte) (b3 >> 6) : (byte) ((b3) >> 6 ^ 0xfc); - - encodedData[encodedIndex] = lookUpBase64Alphabet[val1]; - encodedData[encodedIndex + 1] = lookUpBase64Alphabet[val2 | (k << 4)]; - encodedData[encodedIndex + 2] = lookUpBase64Alphabet[(l << 2) | val3]; - encodedData[encodedIndex + 3] = lookUpBase64Alphabet[b3 & 0x3f]; - - encodedIndex += 4; - - // If we are chunking, let's put a chunk separator down. - if (isChunked) { - // this assumes that CHUNK_SIZE % 4 == 0 - if (encodedIndex == nextSeparatorIndex) { - System.arraycopy(CHUNK_SEPARATOR, 0, encodedData, encodedIndex, CHUNK_SEPARATOR.length); - chunksSoFar++; - nextSeparatorIndex = (CHUNK_SIZE * (chunksSoFar + 1)) + (chunksSoFar * CHUNK_SEPARATOR.length); - encodedIndex += CHUNK_SEPARATOR.length; + byte val2 = ((b2 & SIGN) == 0) ? (byte) (b2 >> 4) : (byte) ((b2) >> 4 ^ 0xf0); + byte val3 = ((b3 & SIGN) == 0) ? (byte) (b3 >> 6) : (byte) ((b3) >> 6 ^ 0xfc); + + encodedData[encodedIndex] = lookUpBase64Alphabet[val1]; + encodedData[encodedIndex + 1] = lookUpBase64Alphabet[val2 | (k << 4)]; + encodedData[encodedIndex + 2] = lookUpBase64Alphabet[(l << 2) | val3]; + encodedData[encodedIndex + 3] = lookUpBase64Alphabet[b3 & 0x3f]; + + encodedIndex += 4; + + // If we are chunking, let's put a chunk separator down. + if (isChunked) { + // this assumes that CHUNK_SIZE % 4 == 0 + if (encodedIndex == nextSeparatorIndex) { + System.arraycopy(CHUNK_SEPARATOR, 0, encodedData, encodedIndex, CHUNK_SEPARATOR.length); + chunksSoFar++; + nextSeparatorIndex = (CHUNK_SIZE * (chunksSoFar + 1)) + (chunksSoFar * CHUNK_SEPARATOR.length); + encodedIndex += CHUNK_SEPARATOR.length; + } } } - } // form integral number of 6-bit groups dataIndex = i * 3; @@ -307,10 +307,10 @@ public class Base64 { b1 = binaryData[dataIndex]; k = (byte) (b1 & 0x03); byte val1 = ((b1 & SIGN) == 0) ? (byte) (b1 >> 2) : (byte) ((b1) >> 2 ^ 0xc0); - encodedData[encodedIndex] = lookUpBase64Alphabet[val1]; - encodedData[encodedIndex + 1] = lookUpBase64Alphabet[k << 4]; - encodedData[encodedIndex + 2] = PAD; - encodedData[encodedIndex + 3] = PAD; + encodedData[encodedIndex] = lookUpBase64Alphabet[val1]; + encodedData[encodedIndex + 1] = lookUpBase64Alphabet[k << 4]; + encodedData[encodedIndex + 2] = PAD; + encodedData[encodedIndex + 3] = PAD; } else if (fewerThan24bits == SIXTEENBIT) { b1 = binaryData[dataIndex]; @@ -319,12 +319,12 @@ public class Base64 { k = (byte) (b1 & 0x03); byte val1 = ((b1 & SIGN) == 0) ? (byte) (b1 >> 2) : (byte) ((b1) >> 2 ^ 0xc0); - byte val2 = ((b2 & SIGN) == 0) ? (byte) (b2 >> 4) : (byte) ((b2) >> 4 ^ 0xf0); - - encodedData[encodedIndex] = lookUpBase64Alphabet[val1]; - encodedData[encodedIndex + 1] = lookUpBase64Alphabet[val2 | (k << 4)]; - encodedData[encodedIndex + 2] = lookUpBase64Alphabet[l << 2]; - encodedData[encodedIndex + 3] = PAD; + byte val2 = ((b2 & SIGN) == 0) ? (byte) (b2 >> 4) : (byte) ((b2) >> 4 ^ 0xf0); + + encodedData[encodedIndex] = lookUpBase64Alphabet[val1]; + encodedData[encodedIndex + 1] = lookUpBase64Alphabet[val2 | (k << 4)]; + encodedData[encodedIndex + 2] = lookUpBase64Alphabet[l << 2]; + encodedData[encodedIndex + 3] = PAD; } if (isChunked) { http://git-wip-us.apache.org/repos/asf/mina/blob/101a32e7/mina-core/src/main/java/org/apache/mina/util/byteaccess/CompositeByteArray.java ---------------------------------------------------------------------- diff --git a/mina-core/src/main/java/org/apache/mina/util/byteaccess/CompositeByteArray.java b/mina-core/src/main/java/org/apache/mina/util/byteaccess/CompositeByteArray.java index 6c67d8e..36cf17a 100644 --- a/mina-core/src/main/java/org/apache/mina/util/byteaccess/CompositeByteArray.java +++ b/mina-core/src/main/java/org/apache/mina/util/byteaccess/CompositeByteArray.java @@ -48,22 +48,22 @@ public final class CompositeByteArray extends AbstractByteArray { /** * Called when the first component in the composite is entered by the cursor. */ - public void enteredFirstComponent(int componentIndex, ByteArray component); + void enteredFirstComponent(int componentIndex, ByteArray component); /** * Called when the next component in the composite is entered by the cursor. */ - public void enteredNextComponent(int componentIndex, ByteArray component); + void enteredNextComponent(int componentIndex, ByteArray component); /** * Called when the previous component in the composite is entered by the cursor. */ - public void enteredPreviousComponent(int componentIndex, ByteArray component); + void enteredPreviousComponent(int componentIndex, ByteArray component); /** * Called when the last component in the composite is entered by the cursor. */ - public void enteredLastComponent(int componentIndex, ByteArray component); + void enteredLastComponent(int componentIndex, ByteArray component); } /** @@ -985,9 +985,9 @@ public final class CompositeByteArray extends AbstractByteArray { byte b0 = get(); byte b1 = get(); if (order.equals(ByteOrder.BIG_ENDIAN)) { - return (char) ((b0 << 8) | (b1 << 0)); + return (char)((b0 << 8) | (b1 & 0xFF)); } else { - return (char) ((b1 << 8) | (b0 << 0)); + return (char)((b1 << 8) | (b0 & 0xFF)); } } }